엔빵프로젝트

    Kafka를 이용해 Producer/Consumer 맛보기! - Configuration

    Kafka를 이용해 Producer/Consumer 맛보기! - Configuration

    토이 프로젝트를 진행하던 도중 API Gateway를 도입하게 되면서 기존 회원 API 서버 내 회원 서비스에 구현되있는 소셜 로그인 및 회원 가입 기능과 JWT 엑세스 토큰 및 리프레시 토큰을 발급해주는 기능을 인증 서버내 회원 서비스로 따로 빼게 되었다. 이 때, 발생한 문제점이 있다. 현재 토이 프로젝트는 소셜 로그인을 이용하지만 추가적인 정보가 필요하기 때문에 소셜 로그인 이후 해당 서비스에 처음 로그인 한 경우 (서비스에 가입되지 않은 상태)라면 추가적인 회원 정보 및 추천인과 관심 OTT 서비스를 등록해야 한다. 여기서 추가적인 회원 정보는 인증 서버 내 회원 서비스에서 사용하는 간단한 회원 가입 로직을 이용하면 되지만, 가입 시 입력한 추천인에게 포인트를 적립(Optional)해주거나 회원이..

    Spring Data JPA를 이용해 커서 페이징 구현하기

    Spring Data JPA를 이용해 커서 페이징 구현하기

    프로젝트를 진행하면서 회원의 포인트 적립 및 사용 상세 이력을 조회하는 요구사항을 개발하기 위해서 Spring Data JPA를 이용한 페이징 처리를 구현했다. 화면에서 커서 스크롤시 데이터를 호출해오는 무한 스크롤 방식의 페이징을 위해 커서 페이징 방식으로 구현을 진행했다. 동작 방식을 간단히 정리하면, 프론트에서 URI로 회원의 최신 포인트 상세 이력 아이디와 조회 건수를 담아 호출한다. 헤더에 담겨진 JWT 토큰을 파싱해 회원 아이디를 추출한다. 회원 아이디를 통해 포인트 상세이력을 페이징 해서 조회한 후 가공해 반환한다. Controller 코드를 확인해보자. // PointController @GetMapping(value = "/details") @Operation(summary = "포인트 ..

    Spring Cloud Config Server를 Private Repository와 연동

    Spring Cloud Config Server를 Private Repository와 연동

    Spring Cloud Config Server와 GitHub 레포지토리를 연동하는 과정에서 추가적으로 Private 레포지토리는 SSH 키 등록 및 등록 과정에서 이슈가 있어서 해결법을 정리하고자 한다. Private 레포지토리를 연동하는 방법은 SSH 키 등록 및 GitHub 계정 자체를 연동하는 방법이 있다. 📌 GitHub 계정 자체를 연동하기 Spring Cloud Config Server의 application.yml 파일에 GitHub 계정 아이디 및 계정 패스워드를 작성한다. server: port: 8088 # Spring Cloud Config Server 포트 spring: application: name: config-server cloud: config: server: git: u..

    Spring Cloud Config Server/Client 설정

    Spring Cloud Config Server/Client 설정

    프로젝트를 진행하면서 다양한 서비스의 프로젝트 환경 설정 정보를 Spring Cloud Config Server와 GitHub Repository를 이용해 중앙에서 관리하면 클라이언트의 환경설정 정보를 따로 수정할 필요 없이 한 번의 수정만 가능할 것 같아 도입하기로 결정했다. 🥇 Spring Cloud Config Repository 각 서비스 환경과 서비스 별 개발, 테스트, 로컬 환경을 구분해 파일을 관리하기 위해서 GitHub Repository를 하나 생성한다. 해당 레포지토리에는 Yaml파일만 관리하는 용도로 사용한다. 각각의 환경 별 설정 파일을 구성해 업로드한다. # 로컬 환경 DB 설정 spring: datasource: driver-class-name: com.mysql.cj.jdbc...

    Swagger를 이용한 API 문서화

    Swagger를 이용한 API 문서화

    ❓Swagger란? Swagger는 Open API를 명세하기 위한 Open Api Specification(OAS) 프레임워크이다. API들이 가진 스펙을 명세하고, 관리하여 문서화 해주는 기능을 가지고 있다. Swagger를 이용해 다른 개발팀과 협업, 프로젝트의 유지보수 , 백엔드 API 명세서를 작성해 보다 편리하게 관리하는 것이 가능하다. ⚙️ Spring Boot Swagger 설정 Spring Boot 프로젝트에 의존성 추가를 한다. implementation 'io.springfox:springfox-swagger2:2.9.2' #Swagger 애노테이션 사용가능 implementation 'io.springfox:springfox-swagger-ui:2.9.2' #Swagger UI 사용..