본문 바로가기

전체 글275

ElasticSearch로 사용자 검색 구현 + EC2 서버에 Elasticsearch 배포 Elastic Search란 ?역색인(역인덱스) 구조로 검색 시 속도를 빠르게 처리할 수 있음 1. 인덱스 생성2. 데이터 저장3. 검색 API 요청 구현 과정1. 의존성 추가implementation 'org.springframework.boot:spring-boot-starter-data-elasticsearch' 2. yml 설정3. config 작성 기존에 상속받아서 첫 번째 사진처럼 사용했던 AbstracElasticsearchConfiguration이 Deprecated 되었다.https://docs.spring.io/spring-data/elasticsearch/docs/5.1.9/api/org/springframework/data/elasticsearch/client/erhlc/Abstra.. 2024. 11. 22.
AWS를 위한 기초 용어 와닿지 않으면 암기라도 하자.... VPC (Virtural Private Cloud) 가상 사설 네트워크.AWS를 사용하는 회사라면 100% 사용하고 있으며 이를 통해 클라우드에서 가상의 네트워크 환경을 정의하고 제어할 수 있다. 필요에 따라 네트워크를 만들어서 Public subnet, Private subnet라는 하위 네트워크를 구분하여 사용할 수 있다. * network : 2개 이상의 컴퓨터나 장치가 서로 데이터를 주고 받을 수 있도록 연결된 시스템   Public subnet vs Private Subnet  - Public subnet  : 인터넷 게이트웨이와 직접 연결된 서브넷.    이 서브넷에 있는 EC2 인스턴스는 인터넷에 직접 접근할 수 있다.    일반적으로 웹 서버, 로드 밸런.. 2024. 11. 8.
SpringBoot에 Flyway적용해서 DB 형상 관리 하기 + JPA 옵션, flyway 옵션 정리 Flyway란 ?DB 형상관리 툴이다. == DB 변경 관리 툴 * 형상관리 : sw의 변경사항을 체계적으로 추적하고 통제하는 것. Git은 소스코드 형상관리 툴이고 Flyway는 DB 형상관리 툴이다. 어떤 상황에서 ?개발 도중 스키마가 변경 될 때1. spring:jpa:hibernate:ddl-auto: create or update를 주로 사용한다. 문제점 -> create는 이전 데이터를 다 날려버리므로 배포 환경에서 사용할 수 없음이 명확하고 update는 테이블을 수정하지 않고 부족한 부분을 수정한다. 2. 각 배포 환경을 돌아다니면서 직접 schema 변경 문제점 -> 확인하는 것도 일이고 실수가 나기 쉽다. 이런 DB 가 변경될 상황들에서 변경 관리 이력을 추적하고 관리하기 위해 Flyw.. 2024. 8. 26.
AWS S3 이용하여 이미지 업로드 구현하기 S3 이미지 업로드 개념 1. Spring Boot Project에서 클라이언트에게 MultipartFile로 이미지 파일을 받는다. 2. 이 파일을 S3에 업로드하고 S3에 어디서나 접근 가능한 public url을 반환한다. 3. public url을 통해 이미지에 어디서나 접근/다운이 가능하다. 4. url을 DB에 저장하여 필요할 때 url로 이미지 데이터를 사용할 수 있다. 구현과정1. S3 버킷 생성* 퍼블릭 액세스 차단을 해제 해야함 나머지는 기본 설정으로 두고 버킷 생성 버킷 정책 설정이 작업을 안 해주면 추후 URL이 나왔을 때 들어가보려고 하면 아래와 같은 오류가 난다. 생성한 버킷 - 권한 - 버킷 정책 편집 아래와 같이 작성해준다.{ "Version": "2012-10-17",.. 2024. 8. 24.
Spring Boot) 백 & 프론트 카카오 로그인 API 구현하기 카카오 공식문서에 있는 로그인 과정이다.처음부터 보고 로직 이해를 하면 구현이 한결 쉬워진다. 공식문서의 위력을 다시 한 번 느꼈다. 간단하게 정리해보면 다음과 같다.1. 카카오 로그인 완료 후 Redirect URI로 인가 코드 발급됨.2. 인가 코드를 통해 카카오 서버로 토큰 요청.3. 토큰을 통해 카카오 로그인 한 사용자 정보를 받아올 수 있음.4. 해당 사용자 정보를 이용해 회원가입 or 로그인 처리.  로직을 토대로 우리 프로젝트에서 적용한 플로우는 다음과 같다.1. 프론트-> 카카오 kakao.Auth.Authorize()이용해 카카오 로그인 화면 요청 2. 카카오-> 백 로그인 완료되면 code와 함께 자동으로 백 리다이렉트 url로 넘어감 (~~/oauth/kakao/callback?cod.. 2024. 8. 24.
Spring Security + JWT 인증 인가 구현하기(로그인 API, 인증이 필요한 API) 1. 로그인 구현비밀번호가 일치하면 토큰을 생성해서 내려준다. 구현해야할 것- 로그인 컨트롤러- 로그인 서비스- JwtUtils 클래스에 token 생성 로직 컨트롤러@PostMapping("/login") public ResponseEntity signIn( @RequestBody @Valid SignIn.Request request) { return ResponseEntity.ok(memberService.signIn(request)); } 서비스public SignIn.Response signIn(SignIn.Request request) { Member member = getMemberByEmail(request.getEmail()); .. 2024. 8. 16.
Spring Boot 3.x 버전에서 Spring Security 적용기 * 스프링 시큐리티 버전확인하기 Gradle - Dependencies - 'security' 검색하여 확인할 수 있다. 6.3.1 버전으로 확인된다. 스프링 시큐리티 5.7버전 이상부터는 더이상 WebSecurityConfigurerAdapter가 사용되지 않는다고 한다.이전 프로젝트는 5.7.11 버전이었고 WebSecurityConfigurerAdapter를 상속받아 SecurityConfig를 구성했었었는데 더이상 그대로 제작할 수 없게 되었다.(5.7.11버전에서 저렇게 줄이 그어져있긴 하지만 사용할 수는 있었다.)GiftFunding) Spring Security를 이용한 로그인 구현 (tistory.com) GiftFunding) Spring Security를 이용한 로그인 구현Spring .. 2024. 8. 13.
Spring Boot) 회원가입 시 PasswordEncoder 이용해 비밀번호 암호화 초기에 백엔드 개발을 배울 때 했던 건데 다시 하려니까 기억이 잘 안나서 다시 정리하려고 한다. 1. 의존성 주입implementation 'org.springframework.boot:spring-boot-starter-security' 2. PasswordEncoder @Bean으로 등록 * Bean으로 등록하지 않으면 아래와 같은 오류가 난다.Description: Parameter 1 of constructor in com.sj.Petory.domain.member.service.MemberService required a bean of type 'org.springframework.security.crypto.password.PasswordEncoder' that could not be foun.. 2024. 8. 12.
Jenkins로 CI/CD 구축하기 - (3) Jenkis Webhook 등록으로 Repo에 Push 하면 자동빌드 하기 Jenkins로 CI/CD 구축하기 - (1) EC2 docker에 Jenkis 설치 및 SWAP 메모리 할당 (tistory.com) Jenkins로 CI/CD 구축하기 - (1) EC2 docker에 Jenkis 설치 및 SWAP 메모리 할당Dockerfile을 만들었지만 아무 것도 안 써줌 Jenkins에 접속해서 Docker를 누르고 Docker Pull Command를 복사해서 터미널에 입력한다 !https://www.jenkins.io/download/ Download and deployJenkins – an open source automation sesoni-developer.tistory.comJenkins로 CI/CD 구축하기 - (2) Jenkis CI/CD 파이프라인 구축하기 + C.. 2024. 8. 9.
728x90