Azure에서 클라우드 개발

Python 개발자이며 Microsoft Azure용 클라우드 애플리케이션을 개발할 준비가 되었습니다. 세 가지 문서로 구성된 이번 시리즈에서는 길고 생산적인 경력을 준비하는 데 도움이 되도록 Azure에서 클라우드를 개발하는 기본 환경에 대해 안내합니다.

Azure란? 데이터 센터, 서비스 및 리소스

Microsoft의 CEO인 Satya Nadella는 종종 Azure를 "세계의 컴퓨터"라고 부릅니다. 아시다시피 컴퓨터는 운영 체제에서 관리하는 하드웨어 컬렉션으로, 사용자가 시스템의 컴퓨팅 능력을 원하는 수의 작업에 적용 하는 데 도움이 되는 소프트웨어를 빌드할 수 있는 플랫폼을 제공합니다. (그래서 소프트웨어를 설명할 때 "애플리케이션"이라는 단어를 사용하는 것입니다.)

Azure의 경우, 컴퓨터의 하드웨어는 단일 머신이 아니라 전 세계 수십 곳의 대규모 데이터 센터에 있는 가상화된 서버 컴퓨터의 방대한 풀입니다. Azure "운영 체제"는 애플리케이션의 필요에 따라 리소스 풀의 다양한 부분을 동적으로 할당되고 할당을 해제하는 서비스로 이루어집니다. 이러한 동적 할당을 사용하면 고객 수요와 같은 변경 조건이 얼마나 많든 관계없이 애플리케이션이 신속하게 대응할 수 있습니다.

각 할당을 리소스라고 하며, 각 리소스에는 고유한 개체 식별자(GUID) 및 고유한 URL이 할당됩니다. 리소스 종류로는 가상 머신(CPU 코어 및 메모리), 스토리지, 데이터베이스, 가상 네트워크, 컨테이너 레지스트리, 컨테이너 오케스트레이터, 웹 호스트, AI, 분석 엔진 등이 있습니다.

Layers of Azure, from the data center to Azure services to allocate resources

리소스는 클라우드 애플리케이션의 구성 요소입니다. 따라서 클라우드 개발 프로세스는 애플리케이션의 다양한 부분을 배포할 수 있는 적절한 환경을 만드는 것부터 시작됩니다. 간단히 말해서, 프로 비전된 적절한 대상 리소스를 할당하고 구성하기 전까지는 Azure에 코드 또는 데이터를 배포할 수 없습니다.

따라서 애플리케이션을 위한 환경을 만드는 프로세스에는 관련 서비스와 리소스 종류를 식별한 다음, 해당 리소스를 프로비저닝하는 과정이 포함됩니다. 프로비저닝 프로세스는 기본적으로 애플리케이션을 배포할 컴퓨팅 시스템을 구성하는 방법입니다. 프로비저닝은 Azure에서 리소스를 대여하기 시작하는 지점이기도 합니다.

원하는 대로 쓸 수 있는 리소스 유형은 가상 머신과 같은 기본 "인프라" 리소스(배포한 소프트웨어에 대한 모든 권한과 책임이 사용자에게 있음)에서 고급 "플랫폼" 서비스(데이터와 애플리케이션 코드에만 신경을 쓰면 되는 고급 관리형 환경이 제공됨)에 이르기까지 수백 가지가 있습니다.

애플리케이션에 적합한 서비스를 찾고 상대적으로 비용을 분산하는 것이 어려울 수 있지만 바로 이 부분이 클라우드 개발의 창의적인 즐거움 중 하나입니다. 다양한 옵션을 이해하려면 Azure 개발자 가이드를 살펴보세요. 여기서는 이러한 모든 서비스와 리소스를 실제로 사용하는 방법을 알아보겠습니다.

참고

아마 IaaS(Infrastructure-as-a-Service), PaaS(Platform-as-a-Service) 등의 용어를 많이 봤고 이제 지겨울 수도 있습니다. as-a-Service라는 부분은 일반적으로 데이터 센터에 물리적으로 직접 액세스할 수 없다는 사실을 나타냅니다. 대신 Azure Portal, Azure CLI 또는 Azure REST API와 같은 도구를 사용하여 인프라 리소스, 플랫폼 리소스 등을 프로비저닝할 수 있습니다. 일종의 서비스인 Azure는 사용자의 요청을 항상 기다리고 있습니다.

이 개발자 센터에는 IaaS, PaaS 등의 용어가 별로 없습니다. "as-a-service"는 클라우드에 처음부터 내재되어 있는 개념이기 때문입니다.

참고

하이브리드 클라우드는 개인용 컴퓨터와 Azure와 같은 클라우드 리소스가 있는 데이터 센터를 결합한 것이며, 이전 논의에서 언급하지 않았던 특유한 고려 사항이 있습니다. 또한, 이 문서에서 새로운 애플리케이션 개발 시나리오를 가정합니다. 기존 온-프레미스 애플리케이션 아키텍처를 재구성하고 마이그레이션하는 시나리오는 여기에서 다루지 않습니다.

참고

클라우드 네이티브클라우드 지원 애플리케이션이라는 용어를 들어보셨을 것입니다. 두 용어는 동일한 의미로 쓰이는 경우가 많지만 차이가 있습니다. 클라우드 지원 애플리케이션은 온-프레미스 데이터 센터에서 클라우드 기반 서버로 전체적으로 마이그레이션되는 애플리케이션을 지칭하는 경우가 많습니다. 이러한 애플리케이션은 원래 구조를 유지하며 클라우드의 가상 머신에 단순히 배포되는 경우가 많습니다(따라서 지리적 지역에 분산됨). 이러한 마이그레이션을 사용하면 애플리케이션이 사용자의 데이터 센터에 새 하드웨어를 프로비저닝하지 않고도 글로벌 수요에 맞게 확장할 수 있습니다. 그러나 애플리케이션의 한 부분만 성능을 강화해야 하는 경우에도 가상 머신(또는 인프라) 수준에서 크기 조정을 수행해야 합니다.

반면 클라우드 네이티브 애플리케이션은 애초부터 Azure와 같은 클라우드에서 사용할 수 있는 다양하고 독립적인 확장형 서비스를 활용하도록 제작되었습니다. 클라우드 네이티브 애플리케이션은 마이크로서비스 아키텍처 등을 사용하여 더 느슨하게 구조화되어 있습니다.따라서 각 부분에 대한 배포 및 확장을 보다 정확하게 구성할 수 있습니다. 이러한 구조 덕분에 유지 관리가 간소해지고 필요한 경우에만 프리미엄 서비스 이용 요금을 지불하면 되므로 비용을 크게 절감할 수 있습니다.

자세한 내용은 Azure에서 클라우드 네이티브 애플리케이션 빌드Azure용 클라우드 네이티브 .NET 애플리케이션 설계, 임의의 언어로 작성된 애플리케이션에 적용되는 원칙을 참조하세요.

다음 단계