본문 바로가기
project/Photogram

Photogram 아키텍처

by setung 2025. 4. 13.

Photogram은 Instagram을 모티브로 한 SNS 서비스로, 대규모 트래픽 처리와 MSA 구조 학습을 목적으로 만든 개인 프로젝트이다.

실무에서 자주 사용하는 구조와 기술들을 직접 설계하고 구현하면서 아키텍처 감각을 키우는 것이 이 프로젝트의 목표이다.

https://github.com/setung/photogram

목표

  • MSA 구조 설계 및 구현
  • Kafka 기반 이벤트 처리 경험
  • ElasticSearch를 활용한 태그 기반 검색
  • 시스템 설계 및 트래픽 처리 구조 학습

기술 스택

Backend Spring Boot (Kotlin), Spring Cloud
DB MySQL, Redis
Messaging Kafka
Search ElasticSearch
Storage AWS S3
Email AWS SES
Infra Config Server, Discovery(Eureka), Gateway
Monitoring Micrometer, Grafana, Prometheus
Distributed Tracing Sleuth, Zipkin
Fault Tolerance Resilience4j (서킷 브레이커, 타임아웃 등)

 

MSA 구성

  • Gateway: 진입점, JWT 인증 및 라우팅
  • Discovery: 마이크로서비스 등록 및 위치 탐색
  • Config: 설정 중앙관리
  • User-service: 회원가입, 로그인, 유저/팔로우 관리
  • Post-service: 게시글, 이미지 업로드, 좋아요, 댓글
  • Feed-service: 팔로우 기반 피드 구성
  • Post-Search-service: 태그 기반 게시글 검색

프로젝트는 Gradle multi-module 방식으로 구성했다.

 

MSA 특성상 DB와 Redis 등은 서비스 별로 구성하는게 맞지만, 개발 편의를 위해 공용으로 구성했다.

대신 모든 서비스는 다른 서비스의 테이블에 직접 접근을 하지 않고 Feign Client를 통해 필요한 데이터를 불러온다.

 

 

댓글