- 실제 사용자 수가 적음에도 불구하고 불필요하게 복잡한 시스템 구조를 사용하는 문제 지적
- Redis, MongoDB, Kubernetes, 마이크로서비스 등 다양한 기술을 무분별하게 결합한 사례 제시
- 단일 Postgres 인스턴스와 간단한 서버 구성만으로 충분한 상황 강조
- 복잡성은 미덕이 아니며, 필요성이 입증될 때만 확장해야 함을 강조
- 스타트업과 개발팀이 규모에 맞는 단순한 설계 원칙을 지켜야 함을 상기시키는 내용
불필요한 기술 스택의 남용
- Redis와 MongoDB가 동시에 사용되는 등 무작위로 선택된 기술 조합을 비판
- “왜 Redis가 MongoDB와 대화하고 있나?”, “왜 MongoDB를 사용하는가?”라는 질문 제시
- 실제 사용자 수가 12명(그중 6명은 테스트 계정)에 불과함에도 분산 시스템을 도입한 점 지적
- 단일 Postgres 인스턴스로 충분했음에도 과도한 확장을 선택한 사례로 언급
배포 및 인프라 구조의 과잉
- 현재 구성: 15개의 마이크로서비스, 8개의 데이터베이스, 3개 환경의 Kubernetes 클러스터, 4개의 메시지 큐, 서비스 메시, 2시간 걸리는 CI/CD 파이프라인
- 필요한 구성으로는 단일 서버, Postgres, 캐싱용 Redis 정도만 제시
- 실제 요구사항 대비 인프라 복잡도 과잉을 명확히 대비시킴
시스템 복잡성과 설명 가능성
- 주니어 개발자에게 시스템을 설명할 때 스파게티처럼 얽힌 다이어그램이 필요하다면 문제가 있다고 지적
- 복잡성은 미덕이 아니다라는 문장으로 핵심 메시지 요약
- 단순하게 시작하고, 필요가 입증될 때만 복잡성을 추가해야 함을 강조
핵심 교훈
- 기술 선택과 시스템 설계는 규모와 실제 사용량에 맞게 단순화해야 함
- 무분별한 확장과 과도한 기술 스택 도입은 유지보수성과 효율성을 해침
- 스타트업이나 소규모 팀이 “규모에 맞는 단순함” 을 지키는 것이 중요함