이 섹션의 디자인 원칙 문서는 실패를 견디고, 수요에 따라 크기를 조정하고, 비즈니스 요구 사항에 따라 발전할 수 있는 클라우드 애플리케이션을 빌드하는 데 도움이 되는 기반을 제공합니다. 새 시스템을 설계하거나, 레거시 애플리케이션을 현대화하거나, 프로덕션 워크로드를 계획하려는 경우 이러한 상호 연결된 원칙은 안정성, 성능 및 유지 관리에 대한 정보에 입각한 결정을 내리는 데 도움이 됩니다. 함께, 그들은 클라우드 네이티브 애플리케이션 설계를 위한 포괄적인 접근 방식을 형성하여 기술적 우수성과 비즈니스 가치를 균형잡습니다.
애플리케이션의 확장성, 복원력 및 관리 효율성을 향상하려면 다음 디자인 원칙을 따릅니다.
핵심 원칙
자기 치유를 위한 디자인. 오류를 감지하고, 정상적으로 응답하고, 자동으로 복구하도록 애플리케이션을 디자인합니다. 분산 시스템에서는 오류가 불가피합니다. 오류를 격리하고 시스템 가용성을 유지하려면 재시도 논리, 상태 엔드포인트 모니터링, 회로 차단기 및 격벽 패턴을 구현합니다.
모든 것을 불필요하게 만듭니다. 단일 실패 지점을 방지하기 위해 애플리케이션에 중복성을 빌드합니다. 부하 분산 장치, 여러 인스턴스, 데이터베이스 복제본 및 다중 영역 또는 다중 지역 배포를 사용합니다. 비즈니스 요구 사항 및 위험 허용 범위와 일치하는 중복성 수준을 디자인합니다.
조정을 최소화합니다. 확장성을 달성하기 위해 애플리케이션 서비스 간의 조정을 최소화합니다. 비동기적으로 통신하고, 적절한 경우 최종 일관성을 수용하고, 도메인 이벤트를 적용하여 긴밀한 결합 없이 상태를 동기화하는 분리된 구성 요소를 사용합니다.
스케일 아웃하도록 디자인합니다. 수요가 변경될 때 인스턴스를 추가하거나 제거하여 수평 크기 조정을 위한 애플리케이션을 디자인합니다. 세션 고정을 방지하고, 병목 상태를 식별하고, 요구 사항을 조정하여 워크로드를 분해하고, 라이브 메트릭에 따라 자동 크기 조정을 사용하여 변수 부하를 효율적으로 처리합니다.
한도를 중심으로 분할합니다. 분할을 사용하여 데이터베이스, 네트워크 및 컴퓨팅 제한을 해결합니다. 핫스폿을 방지하기 위해 데이터를 가로, 세로 또는 기능적으로 분할하고 파티션 키를 디자인합니다. 데이터베이스, 큐 및 컴퓨팅 리소스를 포함하여 여러 수준에서 분할하는 것이 좋습니다.
운영 원칙
작업을 위한 디자인입니다. 운영 팀에 배포, 모니터링 및 인시던트 대응에 필요한 도구를 제공하도록 애플리케이션을 디자인합니다. 포괄적인 로깅, 분산 추적, 표준화된 메트릭을 구현하고 관리 작업을 자동화하여 효과적인 운영 감독을 가능하게 합니다.
관리되는 서비스를 사용합니다. IaaS(Infrastructure as a Service) 대신 PaaS(Platform as a Service)를 사용합니다. 관리되는 서비스는 운영 오버헤드를 줄이고, 기본 제공 크기 조정 기능을 제공하며, 팀이 인프라 유지 관리 대신 애플리케이션 논리에 집중할 수 있도록 합니다.
ID 서비스를 사용합니다. 사용자 고유의 ID 시스템을 빌드하거나 운영하는 대신 Microsoft Entra ID와 같은 관리 ID 플랫폼을 사용합니다. 관리형 솔루션은 자격 증명 스토리지, 인증 기능, 페더레이션 기능 및 업계 표준 준수를 제공합니다.
전략적 원칙
진화를 위한 디자인. 모든 성공적인 애플리케이션이 시간이 지남에 따라 변경되므로 지속적인 혁신을 위한 디자인 느슨한 결합을 적용하고, 도메인 지식을 캡슐화하고, 비동기 메시징을 사용하고, 적절한 버전 관리가 포함된 잘 정의된 API를 노출하여 독립적인 서비스 발전을 가능하게 합니다.
비즈니스 요구 사항에 맞게 빌드합니다. 비즈니스 요구 사항에 따라 디자인 결정을 내립니다. RTO(복구 시간 목표), SLA(서비스 수준 계약) 및 SLO(서비스 수준 목표)를 문서화하고, 비즈니스 도메인을 중심으로 애플리케이션을 모델링하고, 기능 및 비기능적 요구 사항의 균형을 유지하면서 성장을 계획하는 것과 같은 명확한 목표를 정의합니다.
서비스에 대한 오류 모드 분석을 수행합니다. 시스템에서 잠재적인 오류 지점을 체계적으로 식별하고 복구 전략을 계획합니다. 처음부터 복원력을 구축하려면 아키텍처 및 디자인 단계에서 FMA(오류 모드 분석)를 수행합니다. 위험 및 영향별로 각 실패 모드를 평가한 다음 적절한 응답 및 복구 메커니즘을 결정합니다.
이러한 원칙 적용
이러한 원칙은 함께 작동하여 복원력 있는 확장성 있는 애플리케이션을 만듭니다.
비즈니스 요구 사항으로 시작하여 빌드하는 내용과 이유를 이해합니다.
자체 복구 기능 및 중복성을 구현하여 실패를 대비한 설계를 합니다.
수평적 크기 조정, 분할 및 최소한의 조정을 통해 크기 조정을 계획합니다.
Azure 서비스를 사용하여 운영 복잡성을 줄이고 비즈니스 논리에 집중합니다.
적절한 모니터링, 로깅 및 자동화를 통해 작업을 지원합니다.
애플리케이션이 비즈니스 요구 사항에 따라 진화할 수 있도록 변경을 위해 빌드합니다.