photogram3 Photogram Push 기반 피드 구현 Photogram에서는 사용자의 팔로우 기반 피드를 Push 방식으로 구성했다.즉, 게시글이 업로드되면 해당 게시글 정보를 팔로워들의 피드에 즉시 푸시하는 방식이다. ERD는 위와 같이 구성되어 있으며 쿼리로 충분히 feed를 구현할 수 있다.SELECT p.*FROM Post pJOIN Follow f ON p.writer_id = f.target_idWHERE f.requester_id = :userId AND f.status = 'ACCEPTED'ORDER BY p.created_at DESCLIMIT 20;하지만 feed는 요청이 잦거나, follow가 많을수록 DB에 부하가 올 수 있다. Push 기반 피드 생성 흐름 (with Kafka & Redis)전체 흐름 요약클라이언트가 게시글 업로.. 2025. 4. 14. Photogram 태그 기반 게시글 검색 기능 Post는 N개의 태그를 가질 수 있도록 설계를 하였다.tag는 중복된 이름이 많을 것을 대비해, 기존의 태그를 사용할 수 있도록 post와 tag 사이 post_tag라는 중간 테이블을 추가하였다. RDB 기반 태그 검색의 장점과 한계실제 테스트를 위해 약 100만 건의 데이터를 대상으로 RDB와 Elasticsearch의 검색 속도를 비교해본 결과, RDB 쪽이 더 빠른 성능을 보였다.(물론 이는 내가 아직 Elasticsearch를 완전히 최적화하지 못했기 때문일 수도 있다.)하지만, 다음과 같은 상황에서는 RDB 방식에 한계가 있었다.부분 검색 (LIKE '%태그%')→ 인덱스를 활용하지 못해 검색 속도가 급격히 느려짐철자가 조금씩 다른 경우→ 예: "운!동", "운 동", "운동기록" 등연관 .. 2025. 4. 13. Photogram 아키텍처 Photogram은 Instagram을 모티브로 한 SNS 서비스로, 대규모 트래픽 처리와 MSA 구조 학습을 목적으로 만든 개인 프로젝트이다.실무에서 자주 사용하는 구조와 기술들을 직접 설계하고 구현하면서 아키텍처 감각을 키우는 것이 이 프로젝트의 목표이다.https://github.com/setung/photogram목표MSA 구조 설계 및 구현Kafka 기반 이벤트 처리 경험ElasticSearch를 활용한 태그 기반 검색시스템 설계 및 트래픽 처리 구조 학습기술 스택BackendSpring Boot (Kotlin), Spring CloudDBMySQL, RedisMessagingKafkaSearchElasticSearchStorageAWS S3EmailAWS SESInfraConfig Server.. 2025. 4. 13. 이전 1 다음 728x90