전체 글 (388) 썸네일형 리스트형 [프로젝트 이슈] DB 캐싱 전략과 개선 과정 들어가기 전스터디 매칭 서비스를 만들면서 가장 먼저 부딪힌 문제는 데이터 확보였습니다. 오프라인 스터디를 매칭한 사용자들이 스터디룸이나 카페를 선택할 수 있으려면, 위치 기반으로 주변 공간을 조회할 수 있어야 하는 요구사항이 있었습니다. 이를 위해 Kakao Local API를 활용하기로 했습니다. 카카오 로컬 API는 장소 데이터를 제공하지만, 실제 서비스에서 사용하려 하니 몇 가지 제약이 있었습니다. 대표적으로 API 호출 제한(쿼터) 문제였습니다. 외부 API는 무제한으로 호출할 수 없습니다. 특히 카카오 로컬 API는 일간/월간 호출 제한과 분당/초당 호출 속도 제한이 동시에 적용되고 있습니다. 🚨 카카오 API 제약사항앱 단위로 월 300만 건 무료 호출 제공API별로 일간/분당/초당 제한이 .. [프로젝트 이슈] 무중단 배포 자동화 들어가기 전지난번 배포 과정에서는 GitHub Actions와 CodeDeploy를 활용해 빌드와 서버 배포를 대부분 자동화했기 때문에, 사람이 직접 파일을 복사하고 서버를 재시작하며 발생할 수 있는 오류는 크게 줄일 수 있었습니다. 또한 배포 실패 시 CodeDeploy의 롤백 기능을 통해 이전 버전으로 빠르게 되돌릴 수 있어, 서비스가 완전히 중단되는 상황은 최소화할 수 있었습니다. 하지만 단일 EC2 인스턴스 환경에서는 배포 중 잠시 서비스가 끊길 가능성을 완전히 제거할 수 없었고, 진정한 의미의 무중단 배포까지 구현한 것은 아니었습니다. 이 한계를 보완하고자, 배포 과정에서 서비스 중단을 최소화할 수 있는 전략을 찾아보았습니다.롤링(Rolling) 배포 방식카나리 (Canary) 배포 방식블루/그.. [프로젝트 이슈] CI/CD 구축기 들어가기 전코드를 완성하고 나면, 그다음 단계는 바로 배포입니다. 처음에는 단순하다고 생각했습니다. 로컬에서 빌드한 JAR 파일을 서버에 올리고, SSH로 접속해서 실행하면 끝났죠. 한두 번 정도는 금방 끝나는 일이었고, 이 정도면 충분하다라고 생각하기도 했습니다. 제가 처음 배포를 시작했을 때는, 로컬에서 서버로 JAR 파일을 옮기는 과정도 직접 실행하여야 했습니다. 일반적으로는 SCP나 SFTP를 이용해서 파일을 서버에 업로드했습니다. 예를 들어, 터미널에서 다음과 같이 명령어를 입력하면 됩니다.scp build/libs/app.jar ubuntu@서버IP:/home/ubuntu/app/ 이 한 줄로 로컬에서 빌드한 JAR 파일이 원격 서버의 지정 디렉토리로 복사됩니다. 처음에는 단순히 파일을 복사하.. 이전 1 2 3 4 ··· 130 다음