✍ Posted by Immersive Builder Seong
스케일 업(scale-up)
스케일 업은 서버의 리소스가 부족한 경우 CPU, RAM, DISK 등 리소스를 서버에 추가하는 수직적 규모 확장 프로세스를 말합니다. 서버로 유입되는 트래픽의 양이 적을 때 고려해 볼 수 있고, 필요한 만큼의 리소스를 증설하여 성능을 개선합니다. 특히, 클라우드 환경에서 콘솔의 원클릭으로 스케일 업 기능을 지원하므로 좋은 선택지가 될 수 있습니다. 그러나 스케일 업 방식에는 아래와 같은 치명적인 단점이 존재합니다.
- CPU/MEM를 무한대로 증설할 수 없습니다.
- 스케일 업 과정에서 다운타임이 발생할 수 있습니다. *다운타임: 시스템을 이용할 수 없는 시간
- 자동복구(fail-over)와 다중화(redundancy)를 지원하지 않아 단일 장애 지점(SPOF)이 됩니다.
스케일 아웃(scale-out)
스케일 아웃은 기존 서버와 동일한 사양의 서버를 여러 대 추가하여 성능을 개선하는 수평적 규모 확장 프로세스를 말합니다. 사용자 수가 많은 대규모 어플리케이션을 통해 유입되는 트래픽을 분산 처리하는데 적합합니다. 이 경우 트래픽을 고르게 분산하기 위해 서버 앞단에 별도의 로드밸런서 장비가 필요합니다. 스케일 아웃 방식에는 아래와 같은 장점이 있습니다.
- 스케일 업 방식에 비해 성능 대비 확장성이 좋습니다.
- 트래픽 또는 트랜잭션의 분산 처리가 가능합니다.
- 자동복구(fail-over)와 다중화(redundancy) 구성을 설계하여 안정적인 서비스를 제공합니다.
- 리버스 프록시(Reverse Proxy) 구성으로 내부 서버의 주소를 노출하지 않습니다.
또한, 스케일 아웃 설계 시에는 아래 사항을 고려해야 할 것입니다.
- 서버에 설치된 소프트웨어의 라이선스 산정 방식과 비용은 어떻게 되는가?
- 서버 간의 데이터 불일치 가능성은 존재하지 않는가?
로드밸런서(LoadBalancer)
로드밸런서는 웹 서버들을 운영할 때 트래픽 부하를 균등하게 분산 처리하는 역할을 합니다. 사용자는 브라우저 또는 모바일 어플을 통해 로드밸런서의 공인 IP 주소(66.77.88.1)로 접속합니다. 로드밸런서는 사용자의 요청을 처리하여 웹 서버로 적절히 분배합니다. 로드밸런서와 웹 서버 간에는 사설 IP 대역(192.168.10.0/24)으로 통신하므로 보안이 향상됩니다. 다중화 서버 구성으로 시스템 전체가 다운되는 현상을 방지하며, 트래픽을 감당하기 어려운 시점에는 동일한 구성의 서버를 추가함으로써 부하를 낮출 수 있습니다.
데이터베이스 다중화
그럼 데이터 계층의 다중화 구성은 어떻게 설계할까요? 데이터베이스 다중화는 보통 데이터베이스 서버 간에 주-부(master-slave) 관계를 설정하고 데이터 원본은 주 서버에, 사본은 부 서버에 저장하는 방식으로 구성합니다. 쓰기 연산은 주 서버에서만 이루어지고 사본을 부 서버로 복제합니다. 부 서버는 읽기 연산만 지원합니다. 통상 80:20 비율로 읽기 연산(select)의 비중이 쓰기 연산(insert, delete, update)보다 높습니다. 따라서 부 서버를 여러 대 묶어 읽기 전용 레플리카를 구성하는 것이 일반적입니다. 데이터베이스를 다중화하면 아래와 같은 이점을 얻습니다.
- 읽기 연산 쿼리가 병렬로 처리되므로 성능이 개선됩니다.
- 데이터베이스 서버 중 일부 서버에 장애가 발생해도 서비스는 제공됩니다.
- 여러 지역에 데이터를 복제 구성하여 자연재해로부터 데이터를 보존합니다.
만약 주 데이터베이스 서버가 다운되면 무슨 일이 발생할까요? 부 서버 중 한 대의 서버가 주 서버로 승격되어 역할을 대신 수행합니다. 그러나 비동기 방식으로 복제가 이루어지고 있다면 승격된 부 서버의 정합성을 100% 보장할 수는 없습니다. 따라서 이런 경우 복구 스크립트를 실행하여 유실된 데이터를 추가하는 조치가 필요할 것입니다.
혹은 주 데이터베이스 서버를 이중화 구성(active-master, standby-master)하는 방식도 생각해 볼 수 있습니다. 다만, 비용이 두 배로 발생하는 부분은 감안해야 합니다.
마치며..
오늘은 확장성을 고려한 시스템 설계 방안을 주제로 가볍게 내용을 기술해보았습니다.
클라우드를 공부하는 분들에게 도움되시기 바랍니다.
'SA > Architecting' 카테고리의 다른 글
확장성을 고려한 데이터베이스 설계 방안 (1) | 2024.11.11 |
---|---|
메시지 큐 (0) | 2024.11.10 |
콘텐츠 전송 네트워크 설계 (1) | 2024.11.09 |
캐싱 전략 (0) | 2024.11.08 |