반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- daspecialty
- Optimization
- python
- Algorithm
- elasticsearch
- 파이썬
- Medium
- programmers
- twosum
- ELK
- 스파크
- 엘라스틱서치
- 알고리즘
- solution
- RecommendationSystem
- 해시
- AWS
- 키바나
- dump
- 장고
- 리트코드
- kibana
- 깊이우선탐색
- Django
- CentOS
- 프로그래머스
- Spark
- leetcode
- dfs
- Easy
Archives
- Today
- Total
Archive
시스템 확장 ( Scalability ) 본문
반응형
Scalability
- 수직적 규모 확장 ( Scale Up ) : 서버의 고사양화
- 트래픽 양이 적을 때 유용하나 확장에 한계가 있고, Fail Over / Re-Dundancy 에 대한 방안 제시 불가
- 수평적 규모 확장 ( Scale Out ) : 더 많은 서버 추가
- 대규모 애플리케이션에 적합
1) 웹서버 확장
- Load balancing 을 통해 웹 서버에 트래픽 고르게 분산 -> Failover / Availability 향상
2) DB 확장
(1) DB 이중화
- Master - Slave 방식
- Master : 원본 저장 / 쓰기 연산
- Slave : 사본 저장 / 읽기 연산
- 병렬로 처리 될 수 있는 질의 수 증가, Reliability / Availability 향상
(2) Sharding
- DB를 샤드로 분할 - 모든 Shard는 같은 Schema를 사용하나, Shard에 보관되는 데이터 사이에는 중복 X.
- 즉, Schema 내 데이터 분리를 통한 수평적 확장
- Partition key ( 하나 이상의 칼럼) 을 통해 분산됨 - 데이터를 고르게 분산할 수 있는 Partition Key 선정이 중요
3) 효율적 처리
(1) Cache
- 결과 Cost가 높거나 자주 참조되는 데이터를 메모리에 저장 -> 성능 개선 / DB 부하 감소 / 캐시 계층 Scale Up 가능
- 갱신은 자주 일어나지 않으나 참조가 잦은 경우 유용
- 영속적 보관 목적의 데이터 저장으론 적합 X
- 적절한 만료 기간과 방출 정책 설정 필요
- 방출 정책의 경우 LRU / LFU / FIFO 등 사용
- SPOF를 피하기 위해 다중화 필요
(2) CDN (Contents Delivery Network)
- 정적 컨텐츠 캐시
- 지리적으로 분산된 서버의 네트워크 - 사용자에게 가까운 CDN 서버에서 컨텐츠 전달
- CDN에서 이미지
- 비용 / 적절한 만료기간 고려 필요
- 자주 사용하지 않는 컨텐츠의 캐싱은 과도한 비용지불의 원인
- Time-Sensitive한 컨텐츠의 경우 만료 시점의 선정이 중요
(3) 상태 정보 분리 (Statless)
- 상태 정보를 NoSQL, Memcached/Redis 등에 보관 함으로서 웹 계층의 수평적 확장 가능
- 상태 정보에 의존적이면 동일 세션이 동일 서버로만 접근해야함
4) 시스템 확장
(1) 데이터 센터
- 장애 발생 시 장애가 없는 데이터 센터로 트래픽 우회 (GeoDNS)
- DB를 여러 데이터 센터에 걸쳐 다중화
(2) 메시지큐 (Message Queue)
- 무손실을 보장하는 비동기 통신 -> 작업 프로세스의 효율화
- 컴포넌트들의 독립성을 강화하여 Fault Tolerance를 높인다.
(3) 로그/메트릭/모니터링/자동화
정리
- 모든 계층(서버 ~ 데이터 센터)에 다중화 필요
- 웹 계층 : Stateless / 정적 컨텐츠 : CDN / 가능한 한 많은 캐시
- 각 계층을 독립적인 서비스로 분할
- 데이터는 샤딩을 통해 확장
- 모니터링 / 자동화
가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 01. 사용자 수에 따른 규모 확장성
반응형
'------- CS ------- > System' 카테고리의 다른 글
신뢰성/확장성/유지보수성을 갖춘 애플리케이션 (0) | 2022.05.11 |
---|
Comments