SW 마에스트로에 합격하기 전부터 진행했던 팀 프로젝트가 벌써 마무리 단계에 있다. 마무리 작업을 진행하면서 여러가지 문제와 요구사항이 발생했다. 이러한 부분들을 코드에 반영할 때마다 EC2에서 매번 서버를 내리고 다시 jar 파일을 실행시키곤 했는데, 이 과정이 배우 비효율적이라 생각했기 때문에 최근에 배웠던 Github Actions를 사용한 CI/CD 파이프라인을 프로젝트에 적용시키기로 했다. Github Action을 최근에 사용해보았기 때문에 별 문제 없이 빠르게 적용할 수 있을 것이라 생각했지만.. 뭐든 호락호락하게 넘어가는 법이 없다. 팀 프로젝트에 Github action을 적용하면서 이 전까진 볼 수 없었던 다양한 문제와 마주쳤고 이에 대한 해결 과정에 대해 기록하려 한다. 🔨 1. su..
이전 발행글에서 이어지는 내용입니다. 처음부터 따라오고 싶으시다면 이전 포스팅을 참고해주세요 Github Actions로 CI/CD 구축하기 #1 Github Actions로 CI/CD 구축하기 (EC2, S3, CodeDeploy) 📌 Spring Boot ProjectGithub Actions 를 활용한 CI/CD를 구축해보기 위해 이전에 진행했던 개인 프로젝트를 이용하였습니다. 모든 코드는 아래 URL에서 확인 가능합니다. https://github.com/KAispread/ModuForms GitHu rachel0115.tistory.com 📌 CodeDeploy CodeDeploy Agent 설치 본 CI/CD 실습에 사용되는 EC2 인스턴스의 운영체제 및 버전은 Ubuntu - 22.04 ve..
📌 Spring Boot Project Github Actions 를 활용한 CI/CD를 구축해보기 위해 이전에 진행했던 개인 프로젝트를 이용하였습니다. 모든 코드는 아래 URL에서 확인 가능합니다. https://github.com/KAispread/ModuForms GitHub - KAispread/ModuForms: 📝It's a simple survey application. (with SpringBoot, JPA, MariaDB, AWS) 📝It's a simple survey application. (with SpringBoot, JPA, MariaDB, AWS) - GitHub - KAispread/ModuForms: 📝It's a simple survey application. (with ..
개요 페이지네이션과 무한 스크롤은 사용자가 컨텐츠를 조작할 때 중요한 역할을 합니다. 사용자가 특정 정보를 탐색하는 과정에 영향을 미치기 때문에 UX에서 매우 중요한 요소라고 볼 수 있습니다. 페이지네이션 페이지네이션은 일반적으로 웹 사이트나 애플리케이션에서 긴 목록이나 검색 결과를 페이지 단위로 분할하는 방법입니다. 이를 통해 사용자는 전체 목록을 한 번에 볼 필요 없이 필요한 부분만 볼 수 있습니다. 이는 사용자가 페이지를 넘기는 데 필요한 시간을 줄이고, 빠르게 원하는 정보를 찾을 수 있도록 도와줍니다. 무한 스크롤 반면, 무한 스크롤은 사용자가 스크롤을 내릴 때마다 새로운 컨텐츠가 계속해서 로드되는 방식입니다. 이것은 사용자가 스크롤을 내리는 행위, 즉 새로운 컨텐츠를 필요로 할 때마다 일정량의 ..
개요 프로젝트를 진행하면서, 여러 조건에 따라 선택적으로 게시글을 조회하는 요구사항이 생겼습니다. 쉽게 말해 검색 기능을 구현해야했던 것입니다. 요구사항에서 추출한 검색 조건 및 필터는 다음과 같습니다. 제목 (포함) 태그 (포함) 카테고리 (정확히 일치) 게시글 상태 (정확히 일치) N일전 게시글 (포함) 조건은 주어진 텍스트가 값에 포함되어있다면 조회하고, (정확히 일치) 조건은 말 그대로 값이 정확히 일치해야 조회한다는 뜻입니다. 위 요구사항대로 검색조건을 구현하기 위해선, SQL의 WHERE 조건절에 'LIKE'나 '=' 연산자를 통해 주어진 조건에 일치하는 데이터만 조회해야합니다. 앞선 검색 조건들이 항상 모두 적용되지는 않고, 보통 일부 조건만 사용하기 때문에 순수 SQL문을 사용한다면 검색 ..
개요 프로젝트 진행중에 QueryDsl을 사용하는 CustomRepository를 만들었다. 여러 엔티티를 JOIN하여 데이터를 조회할 예정이였기 때문에 JpaRepository에 상속하지 않고 @Repository 어노테이션을 붙여 스프링 빈으로 등록하여 사용하고 있었다. 코드는 다음과 같다. Repository @RequiredArgsConstructor @Repository public class AdminRepository implements ApplimentSearchRepository { private final JPAQueryFactory queryFactory; @Override public Optional findApplimentMemberById(Long applyId) { ... } ..