다음을 통해 공유


요약: 클라우드 네이티브 앱 설계

팁 (조언)

이 콘텐츠는 eBook, Architecting Cloud Native .NET Applications for Azure에서 발췌한 것으로, .NET Docs 또는 오프라인에서 읽을 수 있는 다운로드 가능한 무료 PDF로 제공됩니다.

Azure eBook의 클라우드 네이티브 .NET 앱 커버 썸네일.

요약하면 이 가이드의 중요한 결론은 다음과 같습니다.

  • 클라우드 네이티브 는 퍼블릭, 프라이빗 및 하이브리드 클라우드와 같은 최신 동적 환경에서 빠른 변화, 대규모 및 복원력을 수용하는 최신 애플리케이션을 설계하는 것입니다.

  • CNCF(클라우드 네이티브 컴퓨팅 재단)는 300개가 넘는 주요 기업의 영향력 있는 오픈 소스 컨소시엄입니다. 기술 및 클라우드 스택에서 클라우드 네이티브 컴퓨팅을 채택하도록 유도하는 역할을 담당합니다.

  • CNCF 지침 에서는 그림 11-1과 같이 클라우드 네이티브 애플리케이션이 6가지 중요한 핵심 요소를 수용하는 것이 좋습니다.

    클라우드 네이티브 기본 핵심 요소

    그림 11-1. 클라우드 네이티브 기본 핵심 요소

  • 이러한 클라우드 네이티브 핵심 요소는 다음과 같습니다.

    • 클라우드 및 기본 서비스 모델
    • 최신 디자인 원칙
    • 마이크로 서비스
    • 컨테이너화 및 컨테이너 오케스트레이션
    • 데이터베이스 및 메시지 브로커와 같은 클라우드 기반 지원 서비스
    • 코드로서의 인프라 및 코드 배포를 포함한 자동화
  • Kubernetes 는 대부분의 클라우드 네이티브 애플리케이션에서 선택하는 호스팅 환경입니다. 더 작고 간단한 서비스는 Azure Functions와 같은 서버리스 플랫폼에서 호스트되는 경우도 있습니다. 많은 주요 자동화 기능 중 두 환경은 변동하는 워크로드 볼륨을 처리하기 위해 자동 크기 조정을 제공합니다.

  • 서비스 통신은 클라우드 네이티브 애플리케이션을 구성할 때 중요한 디자인 결정이 됩니다. 애플리케이션은 일반적으로 프런트 엔드 클라이언트 통신을 관리하기 위해 API 게이트웨이를 노출합니다. 그런 다음 백 엔드 마이크로 서비스는 가능한 경우 비동기 통신 패턴을 구현하는 서로 통신하려고 노력합니다.

  • gRPC 는 오래된 RPC(원격 프로시저 호출) 프로토콜을 발전시키는 최신 고성능 프레임워크입니다. 클라우드 네이티브 애플리케이션은 종종 gRPC를 수용하여 백 엔드 서비스 간의 메시징을 간소화합니다. gRPC는 전송 프로토콜에 HTTP/2를 사용합니다. 메시지 크기가 60~80% 작으면 JSON 직렬화보다 최대 8배 더 빠를 수 있습니다. gRPC는 오픈 소스이며 CNCF(Cloud Native Computing Foundation)에서 관리합니다.

  • 분산 데이터는 클라우드 네이티브 애플리케이션에서 구현하는 모델입니다. 애플리케이션은 비즈니스 기능을 소규모의 독립적인 마이크로 서비스로 분리합니다. 각 마이크로 서비스는 자체 종속성, 데이터 및 상태를 캡슐화합니다. 클래식 공유 데이터베이스 모델은 각각 마이크로 서비스에 맞춰 여러 개의 작은 데이터베이스 중 하나로 발전합니다. 연기가 걷히면, 우리는 database-per-microservice 모델을 드러내는 디자인과 함께 등장합니다.

  • No-SQL 데이터베이스는 고성능 비관계형 데이터 저장소를 참조합니다. 사용 편의성, 스케일링 기능, 복원력 및 가용성이 탁월합니다. 1초 미만의 응답 시간이 필요한 대용량 서비스는 NoSQL 데이터 저장소를 선호합니다. 분산 클라우드 네이티브 시스템에 대한 NoSQL 기술의 확산은 과장될 수 없습니다.

  • NewSQL은 NoSQL 의 분산 확장성과 관계형 데이터베이스의 ACID 보증을 결합한 새로운 데이터베이스 기술입니다. NewSQL 데이터베이스는 전체 트랜잭션/ACID 규정 준수를 사용하여 분산 환경에서 대량의 데이터를 처리해야 하는 비즈니스 시스템을 대상으로 합니다. CNCF(Cloud Native Computing Foundation)는 여러 NewSQL 데이터베이스 프로젝트를 제공합니다.

  • 복원력 은 시스템이 오류에 대응하고 계속 작동할 수 있는 기능입니다. 클라우드 네이티브 시스템은 오류가 불가피한 분산 아키텍처를 수용합니다. 애플리케이션은 오류에 우아하게 대응하고 완전히 작동하는 상태로 신속하게 돌아가도록 구성되어야 합니다.

  • 서비스 메시 는 서비스 통신 및 기타 교차 절단 문제를 처리하는 기본 제공 기능을 갖춘 구성 가능한 인프라 계층입니다. 교차 절단 책임을 비즈니스 코드와 분리합니다. 이러한 책임은 서비스 프록시로 이동합니다. Sidecar pattern라고 불리는 프록시는 비즈니스 코드로부터 격리를 제공하기 위해 별도의 프로세스에 배포됩니다.

  • 관찰성은 클라우드 네이티브 애플리케이션에 대한 주요 디자인 고려 사항입니다. 서비스가 노드 클러스터에 분산되면 중앙 집중식 로깅, 모니터링 및 경고가 필수가 됩니다. Azure Monitor는 시스템 상태에 대한 가시성을 제공하도록 설계된 클라우드 기반 도구의 컬렉션입니다.

  • 코드로서의 인프라 는 플랫폼 프로비저닝을 자동화하는 널리 사용되는 관행입니다. 인프라 및 배포는 자동화되고 일관되며 반복 가능합니다. Azure Resource Manager, Terraform 및 Azure CLI와 같은 도구를 사용하면 필요한 클라우드 인프라를 선언적으로 스크립토리할 수 있습니다.

  • 코드 자동화 는 클라우드 네이티브 애플리케이션에 대한 요구 사항입니다. 최신 CI/CD 시스템은 이 원칙을 충족하는 데 도움이 될 수 있습니다. 일관되고 품질이 좋은 코드를 보장하는 데 도움이 되는 별도의 빌드 및 배포 단계를 제공합니다. 빌드 단계는 코드를 이진 아티팩트로 변환합니다. 릴리스 단계에서는 이진 아티팩트를 선택하고, 외부 환경 구성을 적용하고, 지정된 환경에 배포합니다. Azure DevOps 및 GitHub는 완전한 기능을 갖춘 DevOps 환경입니다.