프로젝트 개요
- 실시간 날씨 정보를 기반으로 옷 스타일을 추천하고, 사용자 간 패션을 공유할 수 있는 소셜 커뮤니티 서비스
기술스택
- Language & Framework: Java 17, Spring Boot 3.x
- Data Access: JPA, QueryDSL
- Database & Search: PostgreSQL, H2, Elasticsearch
- Cache: Redis
- Messaging: Kafka
- Infra: Azure (Container Apps, ACR, VNet)
- Monitoring: Spring Actuator, Micrometer, Prometheus, Grafana
담당한 작업
- 피드 관리
- 피드 생성, 조회, 좋아요 기능 구현
- 좋아요 처리 시 동시성 문제를 고려하여 DB atomic update 방식 적용
- Elasticsearch를 활용한 피드 검색 기능 구현 및 검색 성능 개선
- Nori 기반 한국어 형태소 분석, ngram 기반 부분 검색, fuzziness 적용으로 검색 정확도 및 사용성 개선
- 댓글 관리
- 댓글 생성(Create) 및 피드별 댓글 목록 조회 기능 구현
- 커서 기반 페이지네이션 적용으로 대량 데이터 조회 성능 개선
- 인프라 설계 및 운영
- 클라우드 환경 (Azure)
- Azure 기반 클라우드 인프라 설계 및 운영
- Virtual Network 및 Resource Group 단위로 리소스 관리
- Azure Container Apps 기반 컨테이너 환경 및 내부 네트워크 구성
- Nginx 리버스 프록시를 통한 외부 Ingress 처리 및 라우팅
- Grafana 외부 노출, Prometheus 및 내부 서비스는 Internal Ingress로 제한하여 보안 강화
- PostgreSQL, Redis, Event Hubs(Kafka), Blob Storage 등 데이터 계층 분리
- Elasticsearch는 비용 절감을 위해 VM + Docker로 직접 운영
- NAT Gateway를 통해 outbound IP 고정하여 외부 API IP whitelist 대응
- Azure Container Registry + Container Apps 기반 CI/CD 파이프라인 구축
- 로컬 개발 환경 구성
- Docker Compose를 활용하여 운영 환경과 유사한 로컬 분산 환경 구성
- PostgreSQL, Redis, Kafka, Elasticsearch 등 서비스 컨테이너를 분리하여 구성
- 내부 Docker 네트워크를 통해 서비스 간 통신 환경 구축
문제점 및 해결 과정
- 좋아요 동시성 이슈
- 오타 및 검색 순서 문제 개선
- 키워드 부분 검색 문제 개선
- 피드 상세 조회 DTO 설계 개선
- 피드 목록 조회 성능 개선 (N+1 문제 해결)