이전 포스팅에서 커서를 사용하여 무한 스크롤을 구현해보았는데 https://jerecord.tistory.com/207 커서를 사용하여 무한 스크롤을 구현해보자.공연 동행 구인 웹 서비스의 백엔드로 참여하며 동행 구인 게시글 목록 조회 API를 구현하며 커서 기반 페이지네이션을 적용해보았습니다😀 페이지네이션(오프셋과 커서) 페이지네이션하면 대jerecord.tistory.com 검색 필터링 기능을 적용함에 따라, 사용자가 설정한 조건을 바탕으로 검색 결과 동적 제공이 필요해졌습니다👀 동적 SQL 쿼리의 필요성을 느꼈고, 네이티브 쿼리를 작성하기에는, 검색 조건도 많고가독성도 떨어지고 오타 이슈도 많을 것 같아 쿼리를 문자가 아니라 자바 코드로 작성할 수 있게 해주는..
공연 동행 구인 웹서비스를 구현하며 앞서, 깃헙 액션을 통해 CI/CD 및 서버를 구성해두었는데 구글 소셜 로그인 개발 중, 도메인이 필요한 상황이 발생했습니다😲구글 소셜 로그인을 redirect url 등록 시, 배포 서버에서 사용하려면 .shop 같은 도메인을 두어야 함→ https는 선택: 앱 게시 상태를 테스트 단계로 둘거면 없어도 되고, 프로덕션 단계로 둘거면 필요 이후 배포를 목적으로 하는 서비스이기에, 도메인 연결 후, https 설정까지 해보기로 하였습니다!(사실 평소에 ec2 ip 주소 보면서, 이름 지어주고 싶기도 했음..) 도메인 구매하기 🛍️가비아에서 도메인 가격 확인 후, shop이 500원으로 저렴하길래 구매했습니다!(1년에 500원 입니다~~)https://domain.ga..
공연 동행 구인 웹 서비스에서 동행 구인 게시글 목록 조회 API를 구현하며많은 양의 동행 구인글 반환이 필요하여서버 부하 방지를 위해 커서 기반 페이지네이션을 적용해보았습니다😀 오프셋 방식과 커서 방식 비교페이지네이션은 모든 데이터를 전달하는 것이 아닌, 특정 개수의 필요한 데이터만 전달하는 방법을 의미합니다.페이지네이션하면 대표적으로 두 가지 방법이 있습니다. 1. 오프셋 기반 페이지네이션오프셋을 사용하게 되면, 오프셋 앞 데이터를 읽고 그 이후의 n개의 데이터를 읽어서 반환하게 되므로, 성능 저하 문제가 발생합니다. 2. 커서 기반 페이지네이션커서 아이디를 기준으로 다음 n개의 데이터를 반환해주는 방식입니다. 간단히 말하면오프셋 기반 방식의 경우 90번째(오프셋) 데..
공연 동행 구인 웹 서비스 프로젝트에 참여하며CI/CD를 직접 적용해보게 되어 그 과정을 기록해보고자 합니다👣 이전에는 깃에 코드를 올리고, aws ec2를 통해 pull 받아와 jar 파일을 실행하는 방식으로 배포해왔었습니다.매번 develop 브랜치가 업데이트 될 때마다 수동으로 빌드 후 jar 파일을 실행해야 하며 번거로웠기에깃에서 제공해주는 "GitHub Action"을 통해 자동화를 적용하여 개발에 좀 더 집중해보고자 합니다😀 CI/CD란? 지속적 통합 및 지속적 배포 CI Continuous Integration, 빌드와 테스트 자동화 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어 공유 레포지토리에 통합하는 것을 의미합니다. CD Continuou..
이전 포스팅에서는 HTTP 완벽 가이드 스터디 회고를 남겼었는데 스터디를 통해 꾸준하게 책을 읽고 매주 모여서 이야기를 하며 도움이 많이 되어팀원들과 계속해서 스터디를 진행하게 되었습니다. 이번에는 "객체지향"스러운 코드를 짜보자! 라는 목표로 스터디를 진행하였습니다!매번 객체지향 객체지향~ 중요성을 강조해왔지만막상 객체지향적으로 코드를 짜고 있는지는 의문이었습니다🤔 기능 개발하느라 급급했던 ;; 책을 완독하고, 객체지향적으로 개발하고 있을 모습을 기대하며 스터디에 참여했습니다!스터디 책, 진행방법과 함께 회고를 공유해보고자 합니다👣 책 선정📖오브젝트 객체지향 책하면 떠오르는 책이 "객체지향의 사실과 오해" 그리고 "오브젝트" 이렇게 두개가 후보였습니다.객사오를 이미 완독한 팀원들이 있어, "오브젝..
AOP란? Aspect Oriented Programming, 관점 지향 프로그래밍 횡단 관심사의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임 횡단 관심사란 어플리케이션의 여러 부분에 걸쳐있는 기능을 의미 ➡️로깅과 트랜잭션, 인증처리와 같은 시스템 공통 처리 영역을 말합니다. 👾 예를 들면 결제 시스템에서 결제 전과 후에 로깅이 이루어지는 경우, 로깅 작업은 결제 메서드에서 공통적으로 이용되는 부분이므로 횡단 관심사가 됩니다. 신용카드_결제(){ // 결제 시작 전 로그 // 로직 // 결제 종료 후 로그 } 포인트_결제(){ // 결제 시작 전 로그 // 로직 // 결제 종료 후 로그 } 쿠폰_결제(){ // 결제 시작 전 로그 // 로직 // 결제 종료 후 로그 } AOP..