Meet-Coder-Study/book-system-design-interview

[01주차]_1장_사용자 수에 따른 규모 확장성_강한규

hankkuu opened this issue · 1 comments

주로 관계형 데이터 베이스 위주로 서비스를 개발하다보니 비-관계형 데이터베이스를 어떻게 도입해야하고 모델링 해야 하는지 궁금합니다

  1. 비관계 형 데이터가 필요해 질 때
  • 아주 낮은 응답 지연시간 요구 될 때
  • 비정형 데이터를 다룰 때
  • 데이터를 역 or 직렬화 하기만 하면 될 때
  • 아주 많은 양을 다룰 때

로드 밸런서를 어떻게 운영하고 관리할까요. 즉 어떤 회사는 L4 스위치를 쓰기도 하고 어떤 회사는 HA Proxy, Nginx, 또는 Cloud의 여러 LB 들을 사용하는데 각각의 장단점이나 직접 오픈소스를 이용해 구축하거나 클라우드 서비스를 쓰는 것에 따른 차이는 무엇일까요?

캐시사용 경험들을 얘기해 봤으면 해요 - 특히 분산환경에서 데이터 일관성!! 을 어떻게 100% 지킬 수 있을가요?

무상태 아키텍처로 되었을 때 사용자 로그인 처리를 어떻게 할 수 있을가요?(ex: jwt)

메시지 큐를 사용했을 때 아키텍처가 여러개 가능한걸로 알고 있습니다 (ex: MSA 아키텍처)
이에 관해 알려줄 것이 있을까요?

  1. 답은 위에 적혀 있다
  2. 관리/비용/성능 등등 차이가 있을 수 있으나 지금은 클라우드 서비스를 인프라 레벨의 코드를 작성해서 운영과 관리하는 경우가 매우 많다
  3. 내 경험으로는 캐시 업데이트에 대한 트랜잭션을 가장 마지막에 갱신하게 했다
  4. 과거에 로그인 세션을 서버에서 관리한 단점을 지금은 로그인 토큰(JWT) 같은걸 이용한다
  5. 클린 아키텍처, 핵사 고날 아키텍처, 사가 패턴, 이벤트 소싱 패턴 등등