instagram을 모티브로 만든 SNS API 서버 프로젝트
-
각 유저의 피드 목록은
Redis
,Kafka
를 활용한 비동기 방식으로 push model 구현 -
푸시 알림도 Kafka를 활용한 비동기 처리
-
각종 DB Lock 조사 후, 상황에 맞는 Lock 적용
-
Redis에서도 발생할 수 있는 Race Condition 문제를 Lua Script를 통해 Atomic하게 처리
-
분산 환경에서 ID로 정렬하기 위해서 Snowflake ID 구현
-
애플리케이션 레벨에서 DB sharding 로직 구현 (동적으로 DB Source 변경하기)
-
각종 추상화 및 AOP 도입 (
ImageService
추상화, 세션에 유저 정보 가져오기 위한 AOP 등) -
템플릿 메서드 패턴과 같은 디자인 패턴 도입
-
캐시 유무로 인한 성능 비교
-
부하 테스트 후, pinpoint로 call stack 확인해 병목 지점 파악 후, 개선하기
- 카카오 오븐을 활용해 간단한 프로토타입 제작