확장성
확장성은 시스템의 성능 저하 없이 증가하는 작업 부하를 처리할 수 있는 능력을 의미하는데, 이 역시 설계 관점에서는 상당히 중요한 항목입니다. 확장성은 크게 두 가지로 나누어 볼 수 있습니다.
• 수직 확장성: CPU, 메모리, 저장소 등 단일 컴포넌트에 자원을 추가하여 성능을 향상시키는 방법입니다.
• 수평 확장성: 작업 부하를 여러 컴포넌트나 인스턴스로 분산하여 성능을 높이는 방법입니다. 예를 들어 클러스터에 서버를 추가하는 방법이 있습니다.
확장성을 고려해서 설계할 때는 로드 밸런싱, 캐싱, 데이터베이스 분할, 스테이트리스한 서비스 활용 등을 검토해야 합니다. 이제 상위 수준 설계의 마지막 항목인 장애 허용 시스템을 알아보겠습니다.