다음을 통해 공유


클라우드 네이티브 애플리케이션 소개

팁 (조언)

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

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

또 다른 날, 사무실에서 "다음 큰 일"을 작업했습니다.

핸드폰이 울립니다. 당신의 친근한 리크루터입니다 - 매일 즐거운 새 기회를 가지고 전화를 드리는 사람.

이번에는 상황이 다릅니다: 스타트업, 주식, 그리고 풍부한 자금 조달이 있습니다.

클라우드, 마이크로서비스, 그리고 최첨단 기술에 대한 언급은 당신을 벼랑 끝으로 몰아세웁니다.

몇 주 후에 주요 전자 상거래 애플리케이션을 설계하는 디자인 세션의 신입 사원이 되었습니다. 주요 전자 상거래 사이트와 경쟁하게 됩니다.

어떻게 빌드할 것인가?

지난 15년 동안의 지침을 따르는 경우 그림 1.1에 표시된 시스템을 빌드할 가능성이 높습니다.

전통적인 모놀리식 디자인

그림 1-1. 전통적인 모놀리식 디자인

모든 도메인 논리를 포함하는 대규모 코어 애플리케이션을 생성합니다. 여기에는 ID, 카탈로그, 주문 등과 같은 모듈이 포함됩니다. 단일 서버 프로세스 내에서 서로 직접 통신합니다. 모듈은 큰 관계형 데이터베이스를 공유합니다. 핵심은 HTML 인터페이스 및 모바일 앱을 통해 기능을 노출합니다.

축하합니다! 방금 모놀리식 애플리케이션을 개발했습니다.

모든 것이 나쁘지는 않습니다. 모놀리스는 몇 가지 뚜렷한 장점을 제공합니다. 예를 들어 다음과 같이 간단하게 사용할 수 있습니다.

  • 구축하다
  • 테스트
  • 배포하다
  • 문제 해결
  • 수직 확장

오늘날 존재하는 많은 성공적인 앱이 모놀리식으로 만들어졌습니다. 앱은 인기를 끌고 있으며 계속 진화하고 반복을 거듭하며 더 많은 기능이 추가되고 있습니다.

그러나 어떤 시점에서는 불편함을 느끼기 시작합니다. 애플리케이션에 대한 제어권을 잃게 됩니다. 시간이 지남에 따라, 느낌은 더 강렬해지고, 당신은 결국 Fear Cycle로 알려진 상태에 들어간다.

  • 앱은 너무 압도적으로 복잡해져서 한 사람이 그것을 이해하지 못합니다.
  • 변경을 두려워합니다 - 각 변경에는 의도하지 않고 비용이 많이 드는 부작용이 있습니다.
  • 새로운 기능/수정은 까다로워지고, 시간이 많이 걸리며, 구현하는 데 비용이 많이 듭니다.
  • 각 릴리스는 가능한 한 작아지고 전체 애플리케이션의 전체 배포가 필요합니다.
  • 하나의 불안정한 구성 요소는 전체 시스템을 충돌시킬 수 있습니다.
  • 새로운 기술과 프레임워크는 옵션이 아닙니다.
  • 민첩한 배달 방법론을 구현하는 것은 어렵습니다.
  • 코드 베이스가 끝없는 "빠른 수정"으로 악화되면서 아키텍처 침식이 발생합니다.
  • 마지막으로 , 컨설턴트가 들어와서 다시 작성하라고 말합니다.

익숙한 소리?

많은 조직에서 시스템 빌드에 클라우드 네이티브 접근 방식을 채택하여 이러한 모놀리식 공포 주기를 해결했습니다. 그림 1-2는 클라우드 네이티브 기술 및 사례를 적용하여 빌드된 동일한 시스템을 보여 줍니다.

Cloud-Native 디자인

그림 1-2. 클라우드 네이티브 디자인

작은 격리된 마이크로 서비스 집합에서 애플리케이션이 어떻게 분해되는지 확인합니다. 각 서비스는 자체 포함되며 자체 코드, 데이터 및 종속성을 캡슐화합니다. 각각은 소프트웨어 컨테이너에 배포되고 컨테이너 오케스트레이터에서 관리됩니다. 큰 관계형 데이터베이스 대신 각 서비스는 데이터 저장소를 소유하며, 형식은 데이터 요구 사항에 따라 달라집니다. 일부 서비스는 관계형 데이터베이스에 의존하지만 다른 서비스는 NoSQL 데이터베이스에 따라 달라집니다. 한 서비스는 해당 상태를 분산 캐시에 저장합니다. APIGateway 서비스가 핵심 백엔드 서비스로 트래픽을 라우팅하고 여러 측면에서 중요한 문제를 조율하는 방법을 주목하세요. 가장 중요한 것은 애플리케이션이 최신 클라우드 플랫폼에 있는 확장성, 가용성 및 복원력 기능을 최대한 활용합니다.

클라우드 네이티브 컴퓨팅

흠... 클라우드 네이티브라는 용어를 사용했습니다. 첫 번째 생각은 "정확히 무슨 뜻인가요?" 소프트웨어 공급 업체가 더 많은 물건을 시장에 출시하기 위해 혼합 한 또 다른 업계의 유행어?"

다행히도 그것은 훨씬 다르며, 이 책이 당신을 설득하는 데 도움이 되기를 바랍니다.

짧은 시간 내에 클라우드 네이티브는 소프트웨어 업계에서 추진 추세가 되었습니다. 이는 크고 복잡한 시스템을 구성하는 새로운 방법입니다. 이 접근 방식은 최신 소프트웨어 개발 관행, 기술 및 클라우드 인프라를 최대한 활용합니다. 클라우드 네이티브는 시스템을 디자인, 구현, 배포 및 운영하는 방식을 변경합니다.

업계를 이끄는 지속적인 과대 광고와 달리 클라우드 네이티브는 진짜입니다. 400개가 넘는 주요 기업의 컨소시엄인 CNCF( 클라우드 네이티브 컴퓨팅 재단 )를 고려해 보세요. 이 목적은 클라우드 네이티브 컴퓨팅을 기술 및 클라우드 스택 전반에 걸쳐 널리 확산시키는 것입니다. 가장 영향력 있는 오픈 소스 그룹 중 하나인 이 그룹은 GitHub에서 가장 빠르게 성장하는 오픈 소스 프로젝트를 많이 호스팅합니다. 이러한 프로젝트에는 Kubernetes, Prometheus, Helm, EnvoygRPC가 포함됩니다.

CNCF는 오픈 소스 및 공급업체 중립성의 에코시스템을 조성합니다. 이 책에는 기술 중립적인 클라우드 네이티브 원칙, 패턴 및 모범 사례가 제시되어 있습니다. 동시에 클라우드 네이티브 시스템을 생성하기 위해 Microsoft Azure 클라우드에서 사용할 수 있는 서비스 및 인프라에 대해 설명합니다.

그렇다면 클라우드 네이티브는 정확히 무엇인가요? 앉아서 휴식을 취하고 이 새로운 세상을 탐험할 수 있도록 도와주세요.