Azure 애플리케이션 아키텍처 가이드Azure Application Architecture Guide

이 가이드는 확장성과 복원력이 있고 가용성이 뛰어난 Azure에서 애플리케이션을 디자인하기 위한 체계적인 방식을 제시합니다.This guide presents a structured approach for designing applications on Azure that are scalable, resilient, and highly available. 고객의 참여를 통해 확보한 검증된 사례를 기반으로 합니다.It is based on proven practices that we have learned from customer engagements.

소개Introduction

클라우드는 애플리케이션을 디자인하는 방식을 변화시키고 있습니다.The cloud is changing how applications are designed. 애플리케이션은 거대한 단일 프로그램에서 보다 작은 분산형 서비스로 분해되고 있습니다.Instead of monoliths, applications are decomposed into smaller, decentralized services. 이러한 서비스는 API나 비동기 메시징 또는 이벤트를 통해 통신합니다.These services communicate through APIs or by using asynchronous messaging or eventing. 애플리케이션은 수평 확장되어 수요가 있을 때 새로운 인스턴스를 추가합니다.Applications scale horizontally, adding new instances as demand requires.

이러한 추세는 새로운 도전을 불러옵니다.These trends bring new challenges. 애플리케이션 상태가 배포됩니다.Application state is distributed. 작업은 병렬 및 비동기식으로 수행됩니다.Operations are done in parallel and asynchronously. 장애가 발생할 경우 애플리케이션에 복원력이 있어야 합니다.Applications must be resilient when failures occur. 배포는 자동화되고 예측이 가능해야 합니다.Deployments must be automated and predictable. 모니터링 및 원격 분석은 시스템에 대한 통찰력을 확보하는 데 매우 중요합니다.Monitoring and telemetry are critical for gaining insight into the system. 이 가이드는 이러한 변화를 탐색하는 데 도움이 되도록 작성되었습니다.This guide is designed to help you navigate these changes.

기존의 온-프레미스Traditional on-premises최신 클라우드Modern cloud
모놀리식Monolithic
예측 가능한 확장성을 위한 디자인Designed for predictable scalability
관계형 데이터베이스Relational database
동기화된 처리Synchronized processing
장애 방지를 위한 디자인(MTBF)Design to avoid failures (MTBF)
간헐적인 대량 업데이트Occasional large updates
수동 관리Manual management
Snowflake 서버Snowflake servers
분해됨Decomposed
탄력적 확장을 위해 설계됨Designed for elastic scale
다각적인 지속성(스토리지 기술의 혼합)Polyglot persistence (mix of storage technologies)
비동기 처리Asynchronous processing
장애 대비 디자인(MTTR)Design for failure (MTTR)
빈번한 소규모 업데이트Frequent small updates
자동화된 자체 관리Automated self-management
변경이 불가능한 인프라Immutable infrastructure

이 가이드의 구조How this guide is structured

Azure 애플리케이션 아키텍처 가이드는 아키텍처와 디자인에서 구현에 이르는 일련의 단계로 구성되어 있습니다.The Azure Application Architecture Guide is organized as a series of steps, from the architecture and design to implementation. 각 단계마다 애플리케이션 아키텍처 설계에 도움이 되는 부연 지침이 있습니다.For each step, there is supporting guidance that will help you with the design of your application architecture.

아키텍처 스타일Architecture styles

첫 번째 의사 결정이 가장 근본적인 지점입니다.The first decision point is the most fundamental. 어떤 아키텍처를 구축하시겠습니까?What kind of architecture are you building? 마이크로 서비스 아키텍처, 전통적인 n 계층 애플리케이션 또는 빅 데이터 솔루션 등을 생각할 수 있습니다.It might be a microservices architecture, a more traditional N-tier application, or a big data solution. 아키텍처 스타일에는 뚜렷이 구분되는 여러 개가 있습니다.We have identified several distinct architecture styles. 여기에는 각각 이점과 어려운 점이 있습니다.There are benefits and challenges to each.

자세한 정보: 아키텍처 스타일Learn more: Architecture styles

기술 선택Technology choices

현재 빌드 중인 아키텍처의 유형을 알고 나면 아키텍처의 주요 기술 요소를 선택할 수 있습니다.Knowing the type of architecture you are building, now you can start to choose the main technology pieces for the architecture. 다음과 같은 기술 선택이 중요합니다.The following technology choices are critical:

  • 컴퓨팅은 애플리케이션이 실행되는 컴퓨팅 리소스의 호스팅 모델을 말합니다.Compute refers to the hosting model for the computing resources that your applications run on. 자세한 내용은 컴퓨팅 서비스 선택을 참조하세요.For more information, see Choose a compute service.

  • 데이터 저장소는 데이터베이스뿐만 아니라 메시지 큐, 캐시, 로그 및 애플리케이션이 스토리지에 유지할 수 있는 모든 것을 포함합니다.Data stores include databases but also storage for message queues, caches, logs, and anything else that an application might persist to storage. 자세한 내용은 데이터 저장소 선택을 참조하세요.For more information, see Choose a data store.

  • 메시징 기술은 시스템 구성 요소 간에 비동기 메시지를 사용하도록 설정합니다.Messaging technologies enable asynchronous messages between components of the system. 자세한 내용은 메시징 서비스 선택을 참조하세요.For more information, see Choose a messaging service.

이 경우 추가 기술을 선택해야 할 수 있지만 이 세 가지 요소(컴퓨팅, 데이터 및 메시징)는 대부분의 클라우드 애플리케이션의 핵심이며 디자인의 많은 측면을 결정합니다.You will probably have to make additional technology choices along the way, but these three elements (compute, data, and messaging) are central to most cloud applications and will determine many aspects of your design.

아키텍처 설계Design the architecture

아키텍처 스타일 및 주요 기술 구성 요소를 선택했다면 애플리케이션의 특정 디자인을 다룰 준비가 된 것입니다.Once you have chosen the architecture style and the major technology components, you are ready to tackle the specific design of your application. 모든 애플리케이션은 다르지만 다음과 같은 리소스를 참고하면 도움이 될 수 있습니다.Every application is different, but the following resources can help you along the way:

참조 아키텍처Reference architectures

시나리오에 따라 참조 아키텍처 중 하나가 좋은 출발점이 될 수 있습니다.Depending on your scenario, one of our reference architectures may be a good starting point. 각 참조 아키텍처는 확장성, 가용성, 보안, 탄력성 및 기타 디자인 측면에 대한 고려 사항과 함께 권장 방법을 포함하고 있습니다.Each reference architecture includes recommended practices, along with considerations for scalability, availability, security, resilience, and other aspects of the design. 대부분 배포 가능한 솔루션 또는 참조 구현도 포함됩니다.Most also include a deployable solution or reference implementation.

디자인 원칙Design principles

애플리케이션의 확장성, 복원력 및 관리성을 높이는 10가지 기본 디자인 원칙을 확인했습니다.We have identified 10 high-level design principles that will make your application more scalable, resilient, and manageable. 이러한 디자인 원칙은 모든 아키텍처 스타일에 적용됩니다.These design principles apply to any architecture style. 디자인 프로세스 전반에서 10가지 기본 설계 원칙을 염두에 둘 필요가 있습니다.Throughout the design process, keep these 10 high-level design principles in mind. 자세한 내용은 디자인 원칙을 참조하세요.For more information, see Design principles.

디자인 패턴Design patterns

소프트웨어 디자인 패턴은 특정 패턴을 해결하는 것으로 입증된 반복 가능한 패턴입니다.Software design patterns are repeatable patterns that are proven to solve specific patterns. 클라우드 디자인 패턴 카탈로그는 분산 시스템의 특정 과제를 다룹니다.Our catalog of Cloud design patterns addresses specific challenges in distributed systems. 가용성, 복원력, 성능 및 보안과 같은 측면을 다룹니다.They address aspects such as availability, resiliency, performance, and security. 디자인 패턴 카탈로그는 여기에서 찾을 수 있습니다.You can find our catalog of design patterns here.

모범 사례Best practices

모범 사례 문서에서는 API 디자인, 자동 크기 조정, 데이터 분할, 캐싱 등을 비롯한 다양한 디자인 고려 사항을 다룹니다.Our best practices articles cover various design considerations including API design, autoscaling, data partitioning, caching, and so forth. 이를 검토하고 애플리케이션에 적합한 모범 사례를 적용하세요.Review these and apply the best practices that are appropriate for your application.

품질 핵심 요소Quality pillars

성공적인 클라우드 애플리케이션은 다음과 같은 다섯 가지의 소프트웨어 품질 요소에 중점을 둡니다. 비용, DevOps, 복원력, 확장성 및 보안에 집중해야 합니다.A successful cloud application will focus on five pillars of software quality: Cost, DevOps, resiliency, scalability, and security.

핵심 요소Pillar DescriptionDescription
비용Cost 비용을 관리하여 제공되는 가치를 극대화합니다.Managing costs to maximize the value delivered.
DevOpsDevOps 프로덕션에서 시스템을 실행하는 작업 프로세스입니다.Operations processes that keep a system running in production.
복원력Resiliency 오류를 복구하여 계속 작동하는 시스템 기능입니다.The ability of a system to recover from failures and continue to function.
확장성Scalability 부하의 변화에 맞게 조정되는 시스템 기능입니다.The ability of a system to adapt to changes in load.
보안Security 위협으로부터 애플리케이션 및 데이터를 보호합니다.Protecting applications and data from threats.

Azure 아키텍처 프레임워크를 사용하여 이러한 5가지 핵심 요소를 기준으로 아키텍처를 평가합니다.Use the Azure Architecture Framework to assess your architecture across these five pillars.

다음 단계Next steps