Google Cloud 아키텍처 프레임워크의 안정성 요소 원칙은 수평 확장성을 사용하는 데 도움이 되는 권장사항을 제공합니다. 수평 확장성을 사용하면Google Cloud 의 워크로드를 효율적으로 확장하고 성능을 유지할 수 있습니다.
이 원칙은 안정성의 중점 영역 범위 지정과 관련이 있습니다.
원칙 개요
시스템을 수평 아키텍처로 재설계합니다. 트래픽 또는 데이터 증가를 수용하려면 리소스를 더 추가하면 됩니다. 사용하지 않을 때 리소스를 삭제할 수도 있습니다.
수평 확장의 가치를 이해하려면 수직 확장의 제한사항을 고려하세요.
수직 확장의 일반적인 시나리오는 MySQL 데이터베이스를 중요한 데이터가 있는 기본 데이터베이스로 사용하는 것입니다. 데이터베이스 사용량이 증가하면 더 많은 RAM과 CPU가 필요합니다. 결국 데이터베이스가 호스트 머신의 메모리 한도에 도달하여 업그레이드해야 합니다. 이 과정을 여러 번 반복해야 할 수 있습니다. 문제는 데이터베이스가 얼마나 커질 수 있는지에 대한 엄격한 제한이 있다는 것입니다. VM 크기는 무제한이 아닙니다. 더 이상 리소스를 추가할 수 없는 지점에 데이터베이스가 도달할 수 있습니다.
리소스가 무제한이더라도 대규모 VM은 단일 장애 지점이 될 수 있습니다. 기본 데이터베이스 VM에 문제가 있으면 오류 응답이 발생하거나 모든 사용자에게 영향을 미치는 시스템 전반의 서비스 중단이 발생할 수 있습니다. 중복 리소스를 통해 고가용성 시스템 빌드에 설명된 대로 단일 장애점을 방지합니다.
이러한 확장 한도 외에도 수직 확장은 비용이 더 많이 드는 경향이 있습니다. 컴퓨팅 성능과 메모리가 더 많은 머신을 구매하면 비용이 기하급수적으로 증가할 수 있습니다.
반면 수평 확장은 비용이 더 적게 들 수 있습니다. 확장하도록 설계된 시스템에서는 수평 확장의 잠재력이 사실상 무제한입니다.
권장사항
단일 VM 아키텍처에서 가로형 다중 머신 아키텍처로 전환하려면 신중하게 계획하고 적절한 도구를 사용해야 합니다. 수평 확장을 달성하려면 다음 하위 섹션의 권장사항을 고려하세요.
관리형 서비스 사용
관리형 서비스를 사용하면 수평 확장을 수동으로 관리할 필요가 없습니다. 예를 들어 Compute Engine 관리형 인스턴스 그룹 (MIG)을 사용하면 VM을 추가하거나 삭제하여 애플리케이션을 수평 확장할 수 있습니다. 컨테이너화된 애플리케이션의 경우 Cloud Run은 수신 트래픽을 기반으로 스테이트리스 컨테이너를 자동으로 확장할 수 있는 서버리스 플랫폼입니다.
모듈식 디자인 장려
모듈식 구성요소와 명확한 인터페이스를 사용하면 전체 애플리케이션을 확장하는 대신 필요에 따라 개별 구성요소를 확장할 수 있습니다. 자세한 내용은 성능 최적화의 핵심 요소인 모듈식 설계 사용을 참고하세요.
스테이트리스 디자인 구현
애플리케이션을 스테이트리스(Stateless)로 설계합니다. 즉, 로컬에 저장된 데이터가 없어야 합니다. 이렇게 하면 데이터 일관성에 대해 걱정하지 않고도 인스턴스를 추가하거나 삭제할 수 있습니다.