지난번 포스팅에서는 클라우드 분야의 또 따른 유형인 공공 클라우드, 민간 클라우드 그리고 CSAP(클라우드 보안인증)에 대하여 정리해보았습니다.
지난번 포스팅 보기 : 공공클라우드, 민간클라우드 그리고 CSAP(클라우드 보안인증)
다양한 개념과 분류들을 정의하고 쉽게 풀어서 설명하기 위해 개념 뿐 아니라 다양한 예시, 그리고 절차 등의 내용들을 함께 풀어서 작성해 놓았으니 살펴보시고 내용을 정리하는데 조금이나마 도움이 되면 좋겠습니다.
이번 포스팅에서는 클라우드 분야에 관심 있는 분이시라면 한번쯤은 인터넷, 서적 등에서 접해보셨을 용어들을 모아 쉽게 설명해보고자 합니다.
저도 처음에 해당 개념을 확립하기까지 다양한 자료들을 찾아보았으나 어느정도 이해를 하기까지는 다소 오랜시간이 걸렸던 기억이 납니다.
IT인프라 분야에서 스치거나 흘겼더라도 접해본 적이 있을법한 2가지 중요 내용에 대하여 제가 이해한 내용대로 쉽게 정리해 볼 수 있도록 하겠습니다.
저는 소스코딩을 직접하는 개발자는 아니기 때문에 스스로 이해하고 타인에게 설명 할 수 있는 수준에서 내용을 정리 할 예정이오니 다소 깊은 내용의 개념, 아키텍트는 타 자료를 추가적으로 참고하시면 좋겠습니다.
1. 클라우드네이티브(CloudNative)의 뜻과 의미
앞선 포스팅 중 클라우드의 유형인 IaaS, PaaS, SaaS에 대해 정리해보았습니다. 업계에서 업무를 진행하는 저 조차도 기술 흐름과 새로운 개념, 용어의 등장 등 하루가 다르게 빠름을 체감할 정도이니 IT산업의 발전은 끊임없는 관심과 공부가 필요한 분야 인 듯 합니다.
네이티브(Native)는 사전적 뜻으로 해석해보자면 ‘토박이, 토착민’ 이라는 의미로 이해해보자면 ‘완전한 원래의 것’ 정도로 이해 할 수 있을 거 같습니다.
그렇다면 클라우드네이티브(CloudNative)의 의미를 나름의 이해를 덧붙여 정의해보자면
클라우드네이티브(CloudNative) : 본연의, 완전한 클라우드
정도로 정의해 볼 수 있을까요? 물론 사전적 정의는 아니며 최대한 이해를 돕기 위해 쉽게 정의해보았습니다.
제가 앞서 설명 드린 포스팅의 클라우드 유형(IaaS, PaaS, SaaS)와 같이 다양한 클라우드 유형에서 “완전한 클라우드 서비스 형태가 비로서 ‘SaaS’라고 표현해도 무방 할 듯 합니다” 라는 표현을 사용하였습니다.
이렇듯 SaaS는 SW, 서비스가 완전한 클라우드 유형으로 단순 인프라 자원, 플랫폼 내 개발도구를 사용하여 완성된 SW, 서비스와는 차이점을 가집니다.
즉 클라우드네이티브(CloudNative)=SaaS(Software as a Service) 로 이해해도 제 관점에서는 큰 무리가 없을 것 같습니다.
조금 더 구체적으로 정의해 보자면
: 퍼블릭, 프라이빗, 하이브리드 클라우드를 활용하면서 해당 클라우드 환경 위에서 SW 및 서비스(Application)을 구축하고 수행하고, 서비스 하는 것
이렇게 클라우드네이티브(CloudNative)로 구성된 SW, 서비스, Application 들은 다양한 IT기술들이 적용되어 구성되게 됩니다.
클라우드 네이티브(CloudNative)에 대해 조금만 더 공부하다보면 컨테이너기술(Container), 서비스매쉬(Service Meshes), 마이크로서비스(MircroService) 등이 클라우드 네티이브를 구현하기 위한 사용되고, 친숙한 기술로 많은 컨텐츠에 등장하게 됩니다.
위 기술들이 좀 더 효과적인 클라우드네티이브를 구현하기 위해 제반되는 기술들이구나 정도로만 알고 계셔도 충분 할 거 같습니다.
이러한 유연한 최신 기술이 적용된 클라우드네이티브(CloudNative) 서비스들은 몇 가지 특성을 가집니다.
1. 약결합 시스템 (Loosely Coupled System) 특성
: 간략히 설명하자면 각 서비스의 프로세스는 독자적이고 독립적인 시스템과 프로세스(시스템, 운영체제, 통신 등)로 동작한다는 의미입니다.
: 수많은 프로세스가 하나로 연결된 서비스라면 향 후 수정, 활용이 어렵겠죠. 그래서 클라우드네이티브 서비스는 약결합 특성으로 유연한 특성을 가집니다.
2. 회복성, 탄력성이 있고, 관리가 용이하며, 식별하기 용이한 특성
: 위 내용과 연결되는 내용으로 결국 클라우드 네이티브로 개발, 구축된 SW들은 개발자들이 좀 더 자주 수정하고, 예상 가능한 형태로 배포하고 구성 할 수 있는 특성을 가진다고 말씀드릴 수 있겠습니다.
한 마디로 무거운 시스템이 아닌 가벼운 시스템으로 좀 더 다양한 형태로의 수정이 가능하다 정도면 조금 이해를 도울 수 있겠습니다.
결국 클라우드네이티브로 구축 된 시스템은 그만큼 많은 시간과 비용을 줄 일 수 있는 특성을 지니며, 유연한 형태로의 SW를 활용이 가능하며, 다양한 확장성을 가진다고 말씀드릴 수 있겠습니다.
그러면 다음으로 클라우드 네이티브 시스템과 유기적으로 결합하여 사용 할 수 있는 개발 방법론인 MSA(Micro Service Architecture)에 대하여 말씀드려 볼 수 있도록 하겠습니다.
2. MSA구조(Micro Service Architecture) 기본 개념 이해하기
클라우드 네이티브(Cloud Native)에 조금 관심을 가지고 공부하고 계신분들이라면 짝궁처럼 따라다니는 MSA-마이크로서비스아키텍처에 대해 한번 쯤은 들어 보셨으리라 생각합니다.
MSA는 조금더 가볍고 유연하게 연결되어 SW가 동작 할 수 있도록 개발하는 일종의 개발 구조 입니다. 이미 우리가 사용하는 수많은 서비스들은 MSA 개발방법론을 채택하여 서비스되고 있고 MSA는 우리 삶에 가까이 다가와 구현되고 있습니다.
가장 대표적인 서비스로는 넷플릭스, 트위터, 아마존, 다양한 SNS 서비스들이 MSA 개발방법론을 채택하여 구현되고 있습니다.
그렇다면 MSA(Micro Service Architecture)란 쉽게 이해 할 수 있도록 정의해 볼 수 있도록 하겠습니다.
MSA(Micro Service Architecture, 마이크로서비스아키텍쳐) : SW, 즉 어플리케이션을 작은 독립된 서비스, 기능 단위로 구성하는 SW 개발 아키텍처
추가로 설명을 해보자면 각 SW를 통으로 개발, 구축하는 것이 아니라 서비스, 기능 단위로 잘게 쪼개어 구축한 후 유연하고, 가볍고, 확정성이 높은 서비스로 사용하기 위해 채택된 아키텍처로 이해하면 좋겠습니다.
이러한 MSA로 구축된 서비스는 몇 가지 특성을 가집니다.
1. 독립적 배포
: 다른 서비스와 결합이 가능하고, 독립적으로 배포되고, 확장될 수 있습니다.
2. 작은 단위의 개발
: 서비스가 작은 기능 단위로 구현되어 있기때문에 소스코드가 단순하고, 독립적인 작업이 가능합니다.
3. 다양한 기술 적용 가능
: 각 서비스는 가장 적합한 기술을 적용하여 구현 할 수 있습니다.
즉 정리하자면 단일의 서비스, 기능의 역할만을 수행하도록 개발되어 독립적으로 배포, 기동, 종료 가능한 서비스로 다양한 이점들을 가지게 됩니다. 특히 확장성, 유지보수의 용이성 등 유연한 구조를 채택하고 있는 것 이지요.
또한 서비스, 기능의 개선/수정 사항을 빠르게 배포 할 수 있다 보니 전체 시스템의 안정성, 가용성을 획기적으로 개선 할 수 있는 특징을 가집니다.
3. Summary. 클라우드네이티브(CloudNative) + MSA구조(마이크로서비스아키텍처) 상관 관계
위 내용들을 정리해보자면
클라우드네이티브는 클라우드 환경을 최대한 활용하는 완전한 클라우드 서비스 입니다.
MSA 는 SW, 어플리케이션을 작은 독립된 서비스, 기능 단위로 개발하여 좀 더 유연하게 개발, 배포, 관리하는 개발 아키텍처 입니다.
클라우드네이티브 환경을 구현하기 위해 꼭 MSA 개발 구조를 채택해야하는 필수 사항은 아니지만 좀 더 시너지를 낼 수 있는 기술의 결합정도로 이해하면 좋겠고, 두 개념 모두 유연성, 확장성으 탄력성을 향상시키기 위해 채택된 기술이다보니 조금 더 효과적이고 시너지를 낼 수 있는 형태로 활용 할 수 있다 정도로 이해하면 좋겠습니다.
몇 가지 단어로 정리하자면 유연성, 확정성, 자동화, 탄력성, 고가용성, 빠른 개발속도와 민첩성 정도의 단어가 적합 할 거 같습니다.
다소 낯선 개념을 쉽게 설명하려다보니 글이 조금 길어진거 같습니다.
천천히 차근차근 읽어보시고 여러분들의 IT인프라 여정에 조금이나마 도움이 되었으면 좋겠습니다.