클라우드 네이티브란 무엇입니까?

hi·2023년 1월 15일
0

CNA

목록 보기
1/4
post-thumbnail

클라우드 네이티브란 무엇입니까?

클라우드 네이티브의 일반적인 정의는 존재하지 않습니다. 클라우드 네이티비의 정의는 사람이나 기관마다 약간의 차이가 있으며, CSP 별로도 약간의 차이가 있습니다. 이들 정의를 정리해보자면 "클라우드 네이티브란 퍼블릭, 프라이빗, 하이브리드, 멀티 클라우드와 같은 환경에서 실행할 수 있는 독립적인 비즈니스 기능 중심의 마이크로서비스들을 느슨하게 결합하여 크기 조절이 가능하고 탄력적이며 관리와 관찰이 용이한 자동화된 소프트웨어 애플리케이션을 만드는 것" 정도로 정의내릴 수 있습니다.


마이크로서비스란 무엇입니까?

일반적으로 클라우드 네이티브 애플리케이션은 독립적으로 만들어진 서비스들을 느슨하게 결합하는 것을 원칙으로 설계됩니다. 또한 각 서비스는 주어진 비즈니스 요구를 모두 충족시켜야 합니다. 이런 조건을 만족하는 서비스들을 마이크로서비스라고 부릅니다. 클라우드 네이티브 애플리케이션에서 마이크로서비스는 없어서 안 될 필수 요소입니다.


모놀리식 애플리케이션에서 흔히 보이는 한계

MSA와 같은 분산 아키텍처가 출현하기 전엔 모놀리식으로 애플리케이션이 구성되어져 왔습니다. 그러나 기존의 모놀리식 애플리케이션은 근본적인 복잡함과 크기 조절의 어려움, 유지 보수의 어려움, Business Agility를 빠르게 가져갈 수 없음. 등의 어려움이 제기되어왔습니다. 또한 모놀리식 애플리케이션은 다른 모놀리식 애플리케이션과 주로 전용 프로토콜을 사용하여 통신하여 왔고 단일 데이터베이스를 함께 쓰는 경우가 많았습니다.


SOA란 무엇입니까?

모놀리식 아키텍처 (MA)의 한계를 극복하고자 2000년대 중반, 서비스 지향 아키텍쳐 (Service-Oriented-Architecture, SOA)기 주목받기 시작했습니다. 서비스 지향 아키텍처는 기존 MA의 한계를 해결할 수 있는 아키텍처로 부각되었고, SOA는 특정 비즈니스 기능을 지원하는 서비스들을 조합하여 소프트웨어 애플리케이션을 만드는 모듈성 개념을 선보였습니다. 그러나 SOA로 구현된 서비스들은 여전히 복잡한 표준과 메시지 포맷을 사용하였으며 중앙 집중화된 모놀리식 컴포넌트를 아키텍처에 포함하기도 했습니다.


SOA의 구성

일반적으로 SOA는 개방형 표준과 ESB (엔터프라이즈 서비스 버스), API 관리 계층으로 구성되어집니다.

많은 엔터프라이즈 솔루션이 SOA와 같은 구조를 채택했으며 아직도 많은 수의 소프트웨어가 SOA에 기반하여 설계되고 만들어지고 있습니다. 그러나 SOA 역시 근본적인 복잡성과 한계로 민첩성이 떨어지는 한계가 있습니다. 또한 SOA 기반으로 구성된 소프트웨어는 의존성 때문에 독립적으로 개발하고 배포하기가 어렵습니다. 그리고 중앙 집중화 애플리케이션 형태여서 신뢰성이 떨어지며, 애플리케이션 개발 시 애플리케이션 레이어에 한해 폴리글랏한 구현을 하기 어렵습니다.


SOA와 MSA 비교

SOA와 달리 MSA에서 애플리케이션은, 조금 더 비즈니스 중심의 서비스들로 구성되며 ESB와 같은 중앙 컴포넌트들을 제거함으로써 SOA의 한계를 해결합니다. MSA에서 소프트웨어 애플리케이션은 비즈니스 핵심 기능을 구현한 독립적인 서비스들로 구성되며 각각의 서비스들은 개별 팀에서 독립적으로 개발되고 배포되며 관리되어집니다.

서비스와 통합하기 위해 MSA서는 ESB 계층 대신 각 마이크로서비스간의 통신을합니다. 따라서 마틴 파울러는 MSA를 "잘 정의된 엔드포인트를 단순한 연결 수단으로 연결하였다"라고도 표현하였습니다. 마이크로서비스로 애플리케이션을 구성하고자 할 때는 일반적으로 외부 시스템과 연결하거나 사용될 수 있는 Facade라고 불리는 인터페이스를 제공하는 것을 설계원칙으로 둡니다. 이외에도 마이크로서비스는 데이터베이스를 함께 사용하지 않으며 외부에선 오직 서비스 인터페이스를 통해서만 데이터에 접근하는 것을 설계원칙으로 둡니다.

0개의 댓글