
GitHub에 코드 push하면 AWS EC2 에 Spring Boot 프로젝트 자동 배포되도록 작업한 내용 정리

레시피 저장소 토이 프로젝트의 리팩토링 결심 배경과 앞으로 적용해보고 싶은 항목 정리

Github를 좀 더 잘 쓰고 싶어서 있는 기능들을 잘 이용하여 프로젝트 관리를 해보기로 했다.
레시피 저장소 리팩토링을 진행하면서 DB 구조에도 변경이 필요하다고 느꼈다.기존과 달라진 기능들도 일부 생겼고, 기존 DB에 불필요하게 중복돼서 저장되고 있는 데이터들도 있었다.기존 DB에 국한해서 생각하다보니까 아예 기존 DB에 한계가 지어진 채로 생각하게 된 것 같

서론 2023년에는 방치해뒀던 레피시 저장소 프로젝트의 리팩토링을 하기로 결심했었다. 사실 리팩토링 하는 과정에 어떻게 리팩토링을 하고 있는지에 대한 기록을 함께 하려고 했는데 그러지 못했었다. 그래도 리팩토링 자체는 조금씩 조금씩 해서 2023년 말에는 일정 부
📌 문제점 기존에 Controller, Service 등에서 @RequiredArgsConstructor 어노테이션을 활용하여 생성자 선언을 간결하게 하고 DI가 될 수 있도록 했다. 그리고 DTO에서는 @AllArgsConstructor 어노테이션을 활용하여 전
기존에 깊은 고민 없이 생성자나 Getter, Setter 함수를 무작정 사용하고 있었다. 그로 인해 여러 가지 문제 사항들이 나타나고 있었다.아래에서 사용하고 있는 어노테이션들을 각각 살펴보면서 괜찮은지, 괜찮지 않다면 문제는 무엇인지에 대해서 먼저 살펴보도록 하겠다
오버 엔지니어링이란 현재 필요한 기능보다 더 과도하게 개발하는 것을 의미한다. 지금 오버 엔지니어링을 하고 있지는 않은가?
querydsl 사용하여 커스텀하게 생성한 레포지토리에 대한 테스트가 필요했다.사실 테스트용 DB를 따로 생성하는 게 좋다고 듣기는 했는데 우선적으로 가볍게 테스트하기 위해서 기존 개발 DB 연결 상태에서 진행하게 됐다.기존 데이터들과 별개로 동작하게 하기 위해 기존

기본 레시피 저장소 프로젝트는 Github Actions 로 배포 자동화 설정이 되어 있다.main / develop / test 에 따라 workflow 를 분리해두었다.최근 querydsl 에 대한 JPA 테스트 코드를 작성하면서 테스트 DB 분리가 필요했다.이에
토이 프로젝트를 진행 중 무한 스크롤을 위해 페이지 번호와 갯수를 받아서 총 갯수와 결과를 리턴해주는 기능들이 필요했다.JPA 에서 제공해주는 Pageable, Page 를 활용하던 중 이것들을 사용할 때 우려되는 점들에 대해 듣게 됐다.첫번째는, Page 로 감싼 값
JWT 리프레시 토큰 저장 및 블랙리스트 저장을 위해서 Redis를 활용하기로 했다.Redis 실행을 위해 docker-compose.yml 파일을 작성하여 실행하도록 하려고 했다.현재 Github Actions로 CI/CD를 진행하고 있어서 자동으로 docker, d
기존에는 로그인 시 JWT 를 하나만 생성해서 API 요청 시 인증을 위해 사용하고 있었다. 이를 access token과 refresh token 으로 분리하고자 했다.
레시피 조회 시 네이버 검색과 유튜브 검색 기능이 필요하여 외부 API를 호출하고 있다.또한, SNS 로그인을 위해 네이버/카카오/구글 회원정보 조회 API를 호출하고 있다.이런 외부 API 호출을 위해서 HttpUtil 클래스를 작성하여 활용하고 있었다.FeignCl
let's encrypt 를 사용하여 SSL 을 적용하고 있었다.이렇게 적용한 SSL 유효기간은 3개월로 이후에는 매번 갱신을 새로 해야할 필요가 있었다.매번 같은 작업을 반복하는 게 귀찮아서 스크립트로 작성하여 실행만 하면 되도록 하고자 했다.
로그인이 필요한 API 마다 위와 같은 코드가 중복적으로 적용이 돼있었다.AOP 적용을 통해 어노테이션 적용만으로 중복 코드를 제거하고자 했다.커스텀한 어노테이션을 생성@Retention 으로 어노테이션이 언제까지 살아남을 것인지 정하고, @Target 으로 어노테이션
최근에는 SpringBoot 3 을 사용하는 것을 권장하고 있고, SpringBoot 3 은 Java 17 이상을 사용할 것을 권고하고 있다.특정 라이브러리를 적용하려고 했을 때 원인이 SpringBoot 2 라서 버전이 안 맞아서 그런가 싶어서 버전 업그레이드를 결심
문제 상황 레시피 검색 시에 블로그 검색 및 유튜브 검색을 하기 위해 외부 API 연동을 하고 있다. 해당 외부 API 들은 각각 일당 호출 횟수 제한이 존재한다. 예전에 우연한 계기로 사람이 갑자기 몰렸을 때 정해진 호출 제한 횟수를 넘으면서 외부 API 호출에
문제 상황 레시피 검색 시 블로그 검색 외부 API 를 호출하고 있었다. 블로그 검색 결과를 보여주기 위해서 썸네일이 필요했는데 외부 API 에서는 썸네일을 따로 전달해주지 않고 있었다. 이를 해결하기 위해 Jsoup 라이브러리를 활용해서 해당 url을 크롤링해서