<aside>
✅ 확장성
- 소프트웨어나 서비스의 요구사항 수준이 증가할 때 대응할 수 있는 능력
- 주로 규모에 대한 확장성을 뜻함(데이터 크기, 요청 트래픽 등)
- 수직 확장(scale-up)과 수평 확장(scale-out)이 사용됨
- 수직 확장 : 서버의 하드웨어를 더 높은 스펙으로 교체
- 수평 확장 : 동일한 머신을 여러개 두어 작업을 분산
</aside>
수직 확장이란
- 처리 요소(ex: 서버)를 여러개 두어서 작업을 분산
- 무중단 확장이 가능
- 이론적으로는 무한대로 확장이 가능
- 일반적으로 확장성에 대해 얘기할 때 수직 확장을 말함
수평 확장시 분산 시스템에 따라오는 문제
- 부분 장애
- 네트워크 실패
- 데이터 동기화
- 로드밸런싱(또는 service discovery)
- 개발 및 관리의 복잡성
그럼에도 불구하고 분산 시스템을 사용하는 이유
- 분산 시스템으로 인한 trade-off를 판단해서 적합하다면 사용
- 서비스 복잡도와 규모의 증가로 분산은 피할 수 없는 선택
→ 수직 확장만으로는 따라갈 수 없게 되었음
- 분산 시스템의 구현체들은 세부적인 부분에서 튜닝이 가능하게 옵션이 제공됨
(즉, 분산 시스템의 장단점을 세부적으로 조절 가능)