확장성과 분산
확장성이란?
- 소프트웨어나 서비스의 요구사항 수준이 증가할 때 대응할 수 있는 능력
- 주로 규모에 대한 확장성을 뜻함 (데이터 크기, 요청 트래픽 등)
- 수직 확장(scale-up)과 수평 확장(scale-out)이 사용됨
: 요구가 증가함에 따라 비용이 급격히 커지는 경우 → 확장성이 나쁨
: 요구가 증가하여도 비용이 완만하게 증가하는 경우 → 확장성이 좋음
수평 확장(scale-out)
- 처리 요소(ex: 서버)를 여러개 두어서 작업을 분산
- 무중단 확장이 가능
- 이론적으로는 무한대로 확장이 가능
분산 시스템에 따라오는 문제
- 부분 장애
- 네트워크 실패
- 데이터 동기화
- 로드밸런싱(또는 discovery)
- 개발 및 관리의 복잡성
분산 시스템의 적용
- 분산 시스템으로 인한 trade-off를 판단해서 적합하다면 사용