연습 - 계층형 상태 구조 빌드

완료됨

이 연습에서는 예제 애플리케이션에 대한 계층형 상태 모델을 디자인해야 합니다. 먼저 애플리케이션 아키텍처, 애플리케이션에서 사용하는 주요 Azure 서비스 및 Azure 서비스가 전체 사용자 환경에 기여하는 바를 검토합니다.

예제 애플리케이션

이 연습의 예제는 Contoso Shoes에서 사용하는 웹 애플리케이션입니다. 직원들은 이 애플리케이션을 통해 제품 카탈로그를 찾아보고, 카탈로그의 개별 항목을 업데이트하고, 애플리케이션에서 주석을 남겨 다른 사용자와 상호 작용할 수 있습니다.

Contoso Shoes의 운영 팀은 이 애플리케이션에 대한 두 가지 중요한 비즈니스 요구 사항을 확인했습니다. 직원들이 다음을 수행할 수 있어야 합니다.

  • 항목 목록을 표시하고 항목을 검색하여 카탈로그와 상호 작용합니다.
  • 다른 사용자가 볼 수 있도록 개별 항목에 대한 주석을 남깁니다.

상태 모델에는 적어도 이러한 두 가지 중요한 작업이 포함되어야 합니다.

Architecture

Contoso Shoes 애플리케이션의 아키텍처를 보여 주는 다이어그램

구성 요소

  • 프런트 엔드 웹 애플리케이션: 이 워크로드의 사용자 인터페이스이며 Azure Web Apps에서 실행됩니다.

    • 읽는 위치: 카탈로그 API, Azure Blob Storage
    • 쓰는 위치: 카탈로그 API
  • 카탈로그 API: 프런트 엔드 웹 애플리케이션이 카탈로그 항목 및 주석에 대한 데이터 작업에 사용하는 API 계층입니다. 데이터를 데이터베이스에 쓰지 않습니다. 그 대신 비동기적으로 처리할 메시지가 이벤트 허브로 전송됩니다. 이 구성 요소는 Azure Functions에 호스트됩니다.

    • 읽는 위치: Azure Cosmos DB
    • 쓰는 위치: Azure Event Hubs
  • 백그라운드 프로세서: 데이터베이스 업데이트를 비동기적으로 처리하는 구성 요소입니다. 프로세서에 퍼블릭 엔드포인트가 없습니다. 이 구성 요소는 Azure Functions에 호스트됩니다.

    • 읽는 위치: Azure Event Hubs
    • 쓰는 위치: Azure Cosmos DB
  • 메시지 브로커: 메시지 프로세서는 Azure Event Hubs를 사용하여 카탈로그 API와 백그라운드 프로세서 간에 메시지를 전달합니다.

  • 데이터베이스: 데이터는 Azure Cosmos DB에 유지됩니다. 카탈로그 API는 데이터베이스에서 직접 읽습니다. 백그라운드 프로세서는 쓰기를 처리합니다. 이미지는 Azure Blob Storage에 저장됩니다.

  • 비밀: 이 워크로드의 애플리케이션 구성 요소는 비밀을 사용하여 액세스 권한을 부여합니다. 비밀은 Azure Key Vault에 저장됩니다. 카탈로그 API 및 백그라운드 프로세서는 연결 문자열을 사용하여 데이터베이스 및 Azure Event Hubs에 액세스합니다. 프런트 엔드 웹 애플리케이션은 API 키를 사용하여 카탈로그 API를 호출합니다.

  • 모니터링: 애플리케이션 구성 요소는 Log Analytics 작업 영역을 통해 지원되는 Application Insights에 모든 데이터 측정값을 보냅니다. 동일한 작업 영역은 이 워크로드에 대한 다른 로그와 메트릭을 수집하는 데 사용됩니다.

아키텍처를 여러 계층으로 분할

이전 단원에서 설명한 대로 상태 모델은 계층화된 구조여야 합니다. 상태 모델링 프로세스는 모든 사용자 흐름을 정의하고, 기능 및 논리 구성 요소 간의 종속성을 매핑하고, Azure 리소스 간의 종속성을 정의하는 아키텍처 작업입니다.

사용자 흐름을 식별하고 상태 모델을 빌드하는 것은 이 단계의 개념적 연습입니다. 펜과 종이 또는 빈 문서를 사용하여 개별 레이어를 기록하고 구조를 그려 보세요.

이 연습의 상태 모델에는 사용자 흐름, 애플리케이션 구성 요소, Azure 리소스의 세 가지 레이어가 있습니다.

사용자 흐름

아키텍처의 맨 위에서 시작하여 애플리케이션의 예상 기능을 바탕으로 가능한 사용자 흐름을 생각해 보세요. 기술 세부 사항 및 Azure 서비스를 추상화하고 사용자의 관점에서 흐름을 평가해 보세요.

  • 어떤 프로세스가 중요한가요?
  • 직원이 비즈니스 목표를 달성하려면 어떤 방식으로 애플리케이션을 사용해야 할까요?

운영 팀에서 파악한 요구 사항에 따라 최상위 레이어에는 적어도 카탈로그 항목 나열주석 추가라는 2개의 사용자 흐름이 있어야 합니다.

필요한 사용자 흐름이 더 있으면 상태 모델에 포함시킵니다.

애플리케이션 구성 요소

레이어 아래로 이동하여 애플리케이션 구성 요소를 평가합니다. 다음과 같은 질문으로 시작하세요.

  • "내 애플리케이션에서 이 흐름이 작동하게 만들어 주는 부분은 어디인가요?"
  • "이 흐름에 참여하는 마이크로 서비스 또는 구성 요소는 무엇입니까?"
  • "이 부분이 실패해도 이 흐름이 계속 작동할까요?"

목표는 각 사용자 흐름에 기여하는 기술 수준에서 애플리케이션 구성 요소를 파악하는 것입니다. 이러한 구성 요소는 API, 백그라운드 작업자, 마이크로 서비스 등입니다.

이 워크로드에는 적어도 파악된 2개의 사용자 흐름에 참여하는 프런트 엔드, 카탈로그 API백그라운드 프로세서 애플리케이션 구성 요소가 있습니다.

Azure 리소스

하위 레이어에는 개별 애플리케이션 구성 요소에서 사용하는 Azure 리소스가 포함됩니다. 이 연습의 구성 요소 및 리소스는 구성 요소 섹션에 설명되어 있습니다.

참고

실제 상황에서는 더 많은 서비스가 있고 서비스 간의 관계가 더 복잡할 것입니다. 성공적인 상태 모델을 빌드하려면 어느 부분이 중요하고 각 구성 요소가 시스템의 전반적인 상태에 어떻게 기여하는지 파악해야 합니다.

최종 상태 모델 구조 그리기

수집한 정보를 상태 모델 구조의 그래픽 표현에 넣습니다. 그러면 다음 다이어그램과 비슷한 형태가 될 것입니다.

일반적인 계층형 상태 모델의 아키텍처를 보여 주는 다이어그램

웹 애플리케이션 상태 모델에는 위에서 아래로 다음과 같은 레이어가 있습니다.

사용자 흐름
  • 카탈로그 항목 나열. 프런트 엔드 웹 애플리케이션 및 카탈로그 API에 종속됩니다.
  • 주석 추가. 프런트 엔드 웹 애플리케이션, 카탈로그 API 및 백그라운드 프로세서에 종속됩니다.
애플리케이션 구성 요소
  • 프런트 엔드 웹 애플리케이션. Blob Storage 및 카탈로그 API에 종속됩니다.
  • 카탈로그 API. Azure Cosmos DB, Key Vault 및 Event Hubs에 종속됩니다.
  • 백그라운드 프로세서. Azure Cosmos DB, Key Vault 및 Event Hubs에 종속됩니다.
Azure 리소스
  • Blob Storage
  • Azure Cosmos DB
  • Key Vault
  • Event Hubs