기본 개념 - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

기본 개념

마이크로 프론트엔드 아키텍처는 이전의 세 가지 아키텍처 개념에서 많은 영감을 받았습니다.

  • 도메인 기반 설계는 복잡한 애플리케이션을 일관된 도메인으로 구조화하는 멘탈 모델입니다.

  • 분산 시스템은 애플리케이션을 독립적으로 개발하여 자체 전용 인프라에서 실행되는 느슨하게 연결된 서브시스템으로 구축하는 접근 방식입니다.

  • 클라우드 컴퓨팅은 모델을 사용하여 IT 인프라를 서비스로 실행하는 접근 방식입니다 pay-as-you-go .

도메인 기반 설계

도메인 기반 디자인 (DDD) 은 에릭 에반스가 개발한 패러다임입니다. 에반스는 2003년 저서 '도메인 기반 디자인: 소프트웨어 중심부의 복잡성 해결하기'에서 소프트웨어 개발은 기술적인 문제보다는 비즈니스 문제에 의해 주도되어야 한다고 주장합니다. Evans는 IT 프로젝트에서 기술 및 분야 전문가가 공통된 이해를 찾는 데 도움이 되는 유비쿼터스 언어를 먼저 개발해야 한다고 제안합니다. 이러한 언어를 기반으로 이들은 상호 이해되는 비즈니스 현실 모델을 만들 수 있습니다.

이러한 접근 방식이 당연하겠지만, 많은 소프트웨어 프로젝트는 비즈니스와 IT 간의 단절로 어려움을 겪고 있습니다. 이러한 연결이 끊기면 심각한 오해가 발생하여 예산 초과, 품질 저하 또는 프로젝트 실패로 이어지는 경우가 많습니다.

Evans는 그 외에도 여러 가지 중요한 용어를 소개하는데, 그 중 하나가 경계 문맥입니다. 제한된 컨텍스트는 정확히 하나의 비즈니스 문제에 대한 솔루션 또는 구현을 포함하는 대규모 IT 응용 프로그램의 독립된 세그먼트입니다. 대규모 응용 프로그램은 통합 패턴을 통해 느슨하게 결합되는 여러 개의 제한된 컨텍스트로 구성됩니다. 이러한 제한된 컨텍스트에는 유비쿼터스 언어의 고유한 방언이 있을 수도 있습니다. 예를 들어, 결제 시에는 배송이라는 개념이 무의미하기 때문에 애플리케이션의 결제 컨텍스트에 있는 사용자는 전송 컨텍스트의 사용자와 다른 측면을 가질 수 있습니다.

Evans는 제한된 컨텍스트가 얼마나 작거나 커야 하는지를 정의하지 않습니다. 크기는 소프트웨어 프로젝트에 따라 결정되며 시간이 지남에 따라 달라질 수 있습니다. 컨텍스트의 경계를 나타내는 좋은 지표는 개체 (도메인 개체) 와 비즈니스 로직 간의 통합 정도입니다.

마이크로 프론트엔드의 경우 항공편 예약 페이지와 같은 복잡한 웹 페이지를 예로 들어 도메인 기반 설계를 설명할 수 있습니다.

출발 및 도착에 대한 입력과 결과 목록이 포함된 항공편 검색 웹 애플리케이션의 예.

이 페이지의 주요 구성 요소는 검색 양식, 필터 패널, 결과 목록입니다. 경계를 식별하려면 독립적인 기능 컨텍스트를 식별해야 합니다. 또한 재사용성, 성능 및 보안과 같은 비기능적 측면도 고려하십시오. “서로 연관되어 있는 것”을 나타내는 가장 중요한 지표는 커뮤니케이션 패턴입니다. 아키텍처의 일부 요소가 자주 통신하고 복잡한 정보를 교환해야 하는 경우 동일한 경계 컨텍스트를 공유할 가능성이 높습니다.

버튼과 같은 개별 UI 요소는 기능적으로 독립적이지 않기 때문에 제한된 컨텍스트가 아닙니다. 또한 전체 페이지는 더 작은 독립 컨텍스트로 나눌 수 있기 때문에 제한된 컨텍스트에는 적합하지 않습니다. 검색 양식을 하나의 제한된 컨텍스트로 취급하고 결과 목록을 두 번째 경계 컨텍스트로 처리하는 것이 합리적입니다. 이제 이러한 두 개의 제한된 컨텍스트를 각각 별도의 마이크로 프론트엔드로 구현할 수 있습니다.

분산 시스템

유지 관리를 용이하게 하고 발전 능력을 지원하기 위해 대다수의 사소하지 않은 IT 솔루션은 모듈식입니다. 이 경우 모듈식이란 IT 시스템이 식별 가능한 구성 요소로 구성되고 인터페이스를 통해 분리되어 문제를 분리하는 것을 의미합니다.

분산 시스템은 모듈식일 뿐만 아니라 그 자체로도 독립된 시스템이어야 합니다. 단순한 모듈식 시스템에서 각 모듈은 이상적으로 캡슐화되어 인터페이스를 통해 기능을 노출하지만 독립적으로 배포할 수는 없으며 자체적으로 작동할 수도 없습니다. 또한 모듈은 일반적으로 동일한 시스템에 속한 다른 모듈과 동일한 수명 주기를 따릅니다. 반면 분산 시스템의 구성 요소에는 각각 고유한 수명 주기가 있습니다. 도메인 기반 설계 패러다임을 적용하면 각 빌딩 블록은 하나의 비즈니스 도메인 또는 하위 도메인을 다루며 고유한 경계 내에서 작동합니다.

구축 중에 분산 시스템이 상호 작용하는 경우 일반적인 접근 방식은 문제를 신속하게 식별할 수 있는 메커니즘을 개발하는 것입니다. 예를 들어, 형식화된 언어를 채택하고 단위 테스트에 막대한 투자를 할 수 있습니다. 여러 팀이 모듈의 개발 및 유지 관리를 위해 협업할 수 있습니다. 모듈의 개발 및 유지 관리는 시스템이 npm, Apache Maven, NuGet pip와 같은 도구를 사용하여 사용할 수 있도록 라이브러리로 배포되는 경우가 많습니다.

런타임 동안 상호 작용하는 분산 시스템은 일반적으로 개별 팀이 소유합니다. 종속성이 사용되면 오류 처리, 성능 균형 조정 및 보안으로 인해 운영이 복잡해집니다. 통합 테스트 및 옵저버빌리티에 대한 투자는 위험을 줄이는 데 필수적입니다.

오늘날 가장 인기 있는 분산 시스템의 예는 마이크로서비스입니다. 마이크로서비스 아키텍처에서 백엔드 서비스는 UI 또는 인증과 같은 기술적 문제가 아닌 도메인 중심이며 자율 팀이 소유합니다. 마이크로 프런트엔드는 동일한 원칙을 공유하여 솔루션 범위를 프런트엔드까지 확장합니다.

클라우드 컴퓨팅

클라우드 컴퓨팅은 자체 데이터 센터를 구축하고 온프레미스에서 운영하기 위한 하드웨어를 구매하는 대신 pay-as-you-go 모델을 통해 IT 인프라를 서비스로 구매하는 방법입니다. 클라우드 컴퓨팅은 다음과 같은 몇 가지 이점을 제공합니다.

  • 조직은 사전에 대규모 장기 재정 약정을 하지 않고도 새로운 기술을 실험할 수 있어 비즈니스 민첩성이 크게 향상됩니다.

  • 와 같은 클라우드 공급자를 사용하면 조직은 API 게이트웨이 AWS, 데이터베이스, 컨테이너 오케스트레이션, 클라우드 기능 등 유지 관리가 거의 필요 없고 통합성이 뛰어난 서비스로 구성된 광범위한 포트폴리오를 이용할 수 있습니다. 이러한 서비스에 액세스하면 직원들이 경쟁 업체와 차별화되는 업무에 집중할 수 있습니다.

  • 조직이 전 세계에 솔루션을 출시할 준비가 되면 전 세계 클라우드 인프라에 솔루션을 배포할 수 있습니다.

클라우드 컴퓨팅은 고도로 관리되는 인프라를 제공하여 마이크로 프론트엔드를 지원합니다. 따라서 부서 간 팀이 더 쉽게 end-to-end 소유권을 가질 수 있습니다. 팀은 강력한 운영 지식을 갖추고 있어야 하지만 인프라 프로비저닝, 운영 체제 업데이트, 네트워킹과 같은 수동 작업은 방해가 될 수 있습니다.

마이크로 프론트엔드는 제한된 상황에 있기 때문에 팀이 가장 적합한 서비스를 선택하여 실행할 수 있습니다. 예를 들어 팀은 클라우드 함수와 컴퓨팅용 컨테이너 중에서 선택하고 다양한 종류의 SQL 및 NoSQL 데이터베이스 또는 인메모리 캐시 중에서 선택할 수 있습니다. 팀은 서버리스 인프라를 위한 사전 구성된 빌딩 블록과 함께 제공되는 고도로 통합된 툴킷을 기반으로 마이크로 프론트엔드를 구축할 수도 있습니다. AWS Amplify