SW/마이크로서비스

마이크로서비스 : 내부/외부 아키텍처 : 의미, 개념, 정의, 개요

얇은생각 2020. 4. 28. 19:30
반응형

소프트웨어 아키텍처의 의미

소프트웨어 아키텍처는 소프트웨어를 구성하는 요소와 그 구성요소 간의 관계를 정의하는 것입니다. 아키텍처링은 시스템 구축을 위한 여러 가지 비기능 요건, 예를 들면 문제 영역이 되는 성능, 가용성, 보안, 유지보수성, 확장성 등을 만족하도록 여러 가지 해법을 정의하는 과정입니다.

특히 마이크로서비스 아키텍처는 클라우드라는 가상의 인프라를 활용하여 구조화하는 것이기 때문에 클라우드의 특징을 고려하여 설계되어야 합니다. 클라우드 인프라 및 마이크로서비스 기반 시스템의 장점은 변화무쌍한 비즈니스 환경에 대응할 수 있는 대체성과 확장성이 있기 때문에  아키텍처도 변화에 대응할 수 있는 유연성과 확장성을 반드시 갖춰야 합니다.

 

 

MSA 내부/외부 아키텍처

다음은 일반적인 마이크로서비스 아키텍처 구조도입니다. 각각의 구성요소들은 대체하거나 변경할 수 있도록 구성하였습니다.

마이크로서비스 : 내부/외부 아키텍처 : 의미, 개념, 정의, 개요

 

인프라, 플랫폼, 애플리케이션 영역으로 구분되어집니다. 각각의 관계를 설명하면 하드웨어가 되는 인프라 위에 애플리케이션을 구동하기 위해 플랫폼이 올라가고 그 플랫폼 위에 애플리케이션인 서비스가 구동되는 관계입니다.

여기서 아래의 인프라 영역과 플랫폼 영역 그리고 애플리케이션 영역에 있는 서비스들의 관계를 정의하는 것을 MSA 아우터 아키텍처라고 합니다. 즉, 아우터 아키텍처는 마이크로서비스가 운영되는 환경을 정의하는 과정입니다.

이 환경을 유연하고 확장성 있게 정의해야 합니다. 또한 실제로 비즈니스가 실행되는 각각의 마이크로서비스 내의 구조도 유연하게 정의해야 합니다. 이것을 MSA 이너 아키텍처라고 부릅니다.

 

 

이전 문화

예전에는 아키텍처의 구성요소들을 각 기업이나 프로젝트에 직접 구축하는 일이 많았습니다. 그러나 최근에 들어 오픈 소스나 오픈 소스를 베이스로 한 상용 제품들이 너무 다양하고 또한 훌륭한 품질을 보유하고 있고 각각의 호환성을 제공하기 때문에 직접 구축할 필요가 적어졌습니다.

마이크로서비스 : 내부/외부 아키텍처 : 의미, 개념, 정의, 개요

 

그래서 아키텍처링은 직접 만드는 것이 아니라 필요한 영역에 적절한 솔루션을 선택하고 조합하는 과정으로 바뀌고 있습니다. 이것은 아키텍처링이 적절한 솔루션 및 오픈 소스를 선택하는 과정임을 나타냅니다. 각 영역에 어떠한 제품을 선택했는지 알아볼 수 있는 것입니다.

위 그림은 클라우드 네이티브 랜드스케이프라는 문서입니다. 클라우드 기반의 애플리케이션을 구축하기 위해 필요한 인프라 애플리케이션 영역에 다양한 오픈 소스 제품이나 상용 제품을 표현하고 있습니다. 특히 매년 업데이트되고 있습니다. 얼마나 많은 영역에 다양한 오픈 소스 및 제품들이 포진하고 있는지 알 수 있습니다.

따라서 아키텍트는 이런 다양한 기술 영역의 변화 흐름을 이해하고 따라서 가야 합니다. 그리고 마이크로서비스를 구동할 환경의 적절한 제품을 선택하여 조합할 필요가 있습니다.

 

 

마이크로 서비스 아키텍처 패턴

아키텍처는 문제 영역에 대한 솔루션을 제공하는 것입니다. 어떤 문제 영역에 대한 검증되고 정의된 유용한 패턴이라고 합니다. 마이크로서비스 아키텍처에도 이런 패턴이 존재합니다. 

인프라 패턴, 애플리케이션 인프라 패턴, 애플리케이션 패턴으로 분류할 수 있습니다. 아키텍처 구조들을 보면서 인프라 영역, 플랫폼 영역, 애플리케이션 영역, 세 가지로 구분했습니다. 동일한 표현이라고 생각할 수 있습니다.

반응형