2-1. 마이크로서비스 outer/inner 아키텍처 의미

본 주차에서는 마이크로서비스 아키텍처를 구성하는 외부 아키텍처에 대해서 자세히 설명 드리도록 하겠습니다. 첫 번째 차시에서는 소프트웨어 아키텍처의 의미와 마이크로서비스 아키텍처를 구성하는 아우터 이너 아키텍처의 의미에 대해 살펴보도록 하겠습니다. 두 번째 차시에서는 외부 아키텍처를 구성하는 인프라, 플랫폼, DevOps 환경에 대해 살펴보고 세 번째, 네 번째 차시에서는 외부 아키텍처, 애플리케이션 영역의 기반 서비스에 대해 상세히 살펴보도록 하겠습니다. 이번 차시에서는 소프트웨어 아키텍처의 의미와 마이크로서비스 아키텍처에서 말하는 내외부 아키텍처의 의미, 그리고 예전의 아키텍처링 양상과 최근의 아키텍처링 양상이 어떻게 변했는지 살펴보도록 하겠습니다. 소프트웨어 아키텍처는 소프트웨어를 구성하는 요소와 그 구성요소 간의 관계를 정의하는 것입니다. 아키텍처링은 시스템 구축을 위한 여러 가지 비기능 요건, 예를 들면 문제 영역이 되는 성능, 가용성, 보안, 유지보수성, 확장성, 이런 것들을 만족하도록 여러 가지 해법을 정의하는 과정입니다. 특히 마이크로서비스 아키텍처는 클라우드라는 가상의 인프라를 활용하여 구조화하는 것이기 때문에 클라우드의 특징을 고려하여 설계되어야 합니다. 그렇다면 이렇게 클라우드를 고려했을 때 가장 신경 써야 할 요소는 무엇일까요? 저는 그것은 변화에 언제든지 대응할 수 있는 유연성이라고 생각합니다. 클라우드 인프라 및 마이크로서비스 기반 시스템의 장점은 변화무쌍한 비즈니스 환경에 대응할 수 있는 대체성과 확장성이 있기 때문에 아키텍처도 변화에 대응할 수 있는 유연성과 확장성을 반드시 갖춰야 합니다. 다음은 일반적인 마이크로서비스 아키텍처 구조도인데요. 각각의 구성요소들은 대체하거나 변경할 수 있도록 구성하였습니다. 아래부터 인프라, 플랫폼, 애플리케이션 영역으로 구분되는데요. 각각의 관계를 설명하면 하드웨어가 되는 인프라 위에 애플리케이션을 구동하기 위해 플랫폼이 올라가고 그 플랫폼 위에 애플리케이션인 서비스가 구동되는 관계라고 보시면 되겠습니다. 여기서 아래의 인프라 영역과 플랫폼 영역 그리고 애플리케이션 영역에 있는 서비스들의 관계를 정의하는 것을 MSA 아우터 아키텍처라고 부릅니다. 즉, 아우터 아키텍처는 마이크로서비스가 운영되는 환경을 정의하는 과정입니다. 이 환경을 유연하고 확장성 있게 정의해야 하는 것입니다. 또한 실제로 비즈니스가 실행되는 각각의 마이크로서비스 내의 구조도 유연하게 정의해야 하는데요. 이것을 MSA 이너 아키텍처라고 부릅니다. 본 주차에서는 먼저 마이크로서비스가 운영되는 환경, 이 아우터 아키텍처에 대해 자세히 설명하려고 합니다. 예전에는 아키텍처의 구성요소들을 각 기업이나 프로젝트에 직접 구축하는 일이 많았습니다. 그러나 최근에 들어 오픈 소스나 오픈 소스를 베이스로 한 상용 제품들이 너무 다양하고 또한 훌륭한 품질을 보유하고 있고 각각의 호환성을 제공하기 때문에 직접 구축할 필요가 적어졌습니다. 그래서 최근의 차시에서 아키텍처링은 직접 만드는 것이 아니라 필요한 영역에 적절한 솔루션을 선택하고 조합하는 과정으로 바뀌고 있습니다. 최근 아키텍처 문서들을 보면 다음과 같이 솔루션의 아이콘을 그리는 경향들이 있는데요. 이것은 아키텍처링이 적절한 솔루션 및 오픈 소스를 선택하는 과정임을 보여주고 있습니다. 아래부터 보면 각 영역에 어떠한 제품을 선택했는지 알아볼 수 있는 것입니다. 이 문서는 클라우드 네이티브 랜드스케이프라는 문서입니다. 클라우드 기반의 애플리케이션을 구축하기 위해 필요한 인프라 애플리케이션 영역에 다양한 오픈 소스 제품이나 상용 제품을 표현하고 있습니다. 특히 매년 업데이트되고 있는데요. 얼마나 많은 영역에 다양한 오픈 소스 및 제품들이 포진하고 있는지 알 수 있습니다. 따라서 아키텍트는 이런 다양한 기술 영역의 변화 흐름을 이해하고 따라서 가야 하며 마이크로서비스를 구동할 환경의 적절한 제품을 선택하여 조합할 필요가 있는 것입니다. 그럼 아키텍처가 문제 영역에 대한 솔루션을 제공하는 것이라고 했는데요. MSA는 어떠한 문제 영역이 있을까요? 또한 어떤 솔루션이 있을까요? 어떤 문제 영역에 대한 검증되고 정의된 유용한 해법을 우리가 패턴이라고 하는데요. 마이크로서비스 아키텍처에도 이런 패턴이 존재합니다. 크리스 리처드슨이라는 분이 이렇게 다음 사이트에 정의를 했는데요. 인프라 패턴, 애플리케이션 인프라 패턴, 애플리케이션 패턴. 이런 식으로 분류를 하여 정의했습니다. 이번 차시 초반에 제가 아키텍처 구조들을 보면서 인프라 영역, 플랫폼 영역, 애플리케이션 영역, 세 가지로 구분했는데요. 동일한 표현이라고 생각하시면 되겠습니다. 다음 차시에서는 이를 중심으로 MSA 아우터 아키텍처에 대해 하나하나 자세히 살펴보도록 하겠습니다. 감사합니다.