[Spring] Guava Library를 활용한 RateLimiter 적용기
·
Side Project
1. Rate Limiter 도입 목적웹 애플리케이션의 부하를 막기 위한 하나의 수단으로 트래픽 제어가 있습니다. 트래픽 제어는 DDos(악의적인 의도를 가진 사용자에 의해 대량의 패킷 또는 요청을 보내 시스템을 마비시키는 공격)과 같은 공격을 방지하기 위해 필수적으로 웹서비스에 존재해야 하는 기능입니다. 이러한 취약점을 막기 위해, Rate Limiter를 활용하면 클라이언트의 과도한 API 호출을 제한하여, 웹 서버의 리소스 낭비를 방지할 수 있습니다. 이를 통해 애플리케이션 안정성이 향상되며 QoS를 보장할 수 있게 됩니다. RateLimiter는 Guava (Google Library)에서 제공해 주는 API 호출 제한을 위한 클래스입니다. Guava Library가 제공해 주는 기능들을 설명하고..
[Spring] Kakao Maps API로 키워드 기반 식당 검색 기능을 구현해보자
·
Side Project
친구와 함께 사이드 프로젝트(MatJido)를 진행하면서, Keyword를 입력하여 모든 식당을 조회해야 하는 기능이 필요하였습니다. MatJido라는 프로젝트를 기획하게 된 계기와 위의 기능이 필요한 이유에 대해서 간략하게 설명드리겠습니다. MatJido 기획 계기MatJido는 Tripple 여행 앱에서 영감을 받아 사용자들과 함께 맛집을 공유하기 위한 웹 서비스입니다. Tripple은 여행 일정과 계획을 상세하게 세우고 다양한 사용자들과 함께 공유할 수 있는 기능을 제공합니다. (이 외에도 많은 기능들이 제공됩니다. (항공권 및 숙박시설 예약, AI 기반 여행지 추천 등과 같은 유용한 기능들도 존재합니다.) 더불어, 동기화 기능 또한 매우 뛰어납니다. (사용자들 중 한 명이라도 한 팀에서의 여행 ..
[Spring] application.yml과 docker-compose로 dev/prod 환경 분리
·
Side Project
프로젝트에서 개발환경과 배포환경이 달라짐에 따라서 설정 파일을 분리해야 하는 경우가 있습니다.docker로 애플리케이션 환경을 구성할 경우에는 local에서는 db (redis, mariadb..)만 컨테이너로 구성하고, production 환경에서는 RDS와 같은 외부 db 서버를 따로 구축하지 않는다고 가정하고, spring boot까지 함께 DockerFile을 통해 빌드하고 띄울 수 있습니다. 대략적인 아키텍처를 설명드리고, application.yml, docker-compose 파일을 분리하는 과정에 대해 설명드리겠습니다. Architecture docker-compose-dev.ymlmysql, redis만 container로 구성합니다. 외부로 노출되서는 안 되는 db 접속정보, 외부 포트..