본문 바로가기

개발/독서

대규모 시스템 설계 기초 - 1

1장 - 사용자 수에 따른 규모 확장성

수직적 규모 확장 VS 수평적 규모 확장

수직적 규모 확장

  • 서버 스펙을 올린다.
  • 물리적 한계가 존재한다.

수평적 규모 확장

  • 서버 개수를 늘린다.
  • 장애에 대한 자동 복구, 다중화 처리 필요

로드밸런서

로드밸런싱 알고리즘

  • 라운드로빈
  • IP 해시
  • 최소 연결
  • 최소 리스폰

데이터베이스 다중화

Master/Slave 방식
쓰기는 마스터에서만, 읽기는 슬레이브에서

캐시

statless 웹 계층

웹 계층이 수평적으로 확장되기 위해서는 웹 계층에 상태정보가 없어야 한다.
상태정보를 데이터베이스에 저장하고 필요할때 가져오도록 한다.상태정보는 어디에 보관하나?캐시, 디비 etc ...

메시지 큐

RabbitMQ, Kafka, ActiveMQ

콘텐츠 전송 네트워크 (CDN)

로그, 메트릭, 자동화

  • 로그 : 에러 로그 모니터링
  • 메트릭
  • 자동화 : CI/CD

 

회사 서비스에 위의 대부분 내용들이 적용되어 있다.

개발하면서 이럴땐 이런걸 처리하는군, 이런 시스템을 사용하고 있군? 한 것들이 다 이런 내용들이라니 !
알게 모르게 다 한번씩 개발하면서 만났던 기술들이다. 하나씩 연관관계를 파보면 재밌을 것 같다.


참고

[1] 로드밸런싱 알고리즘 : https://m.post.naver.com/viewer/postView.naver?volumeNo=27046347&memberNo=2521903