마이크로넛으로 개발하는 자바 클라우드 앱1
✅모노리스에서 마이크로서비스 이동 : 모노리틱 애플리케이션
마이크로넛을 이해하기 위해서는 알아야 할 개념이 있습니다. 바로 모노리스 (Monolithic Application :모노리틱 애플리케이션)입니다. 모니리틱 애플리케이션은 단순히 하나의 클라이언트와 서버 아키텍처 구조로, 사용자가 터미널과 데스크탑을 통해 관련 데이터베이스로 접근하는 방식을 말합니다. 과거 전통 방식의 클라이언트 앤 서버 애플리케이션입니다. 이는 향상된 서비스 레벨 동의에 관한 유지보수(better Service-Level Agreements : SLAs)의 반대 개념으로 1990년과 2000년 초까지 부를 이뤘습니다.
그러나 지금 보면 아주 단순하면서도 향상된 서비스가 아니었습니다. 한 예로, 이커머스 애플리케이션 (e-Commerce application)이 그 전형적인 모노리틱 아키텍처 구조였습니다. 그 구조 내부에는 공통적으로 소비자로부터 오더를 얻는 프로세스(Orders from Customers), 인벤토리 재고 확인 (Inventory Verification), 사용 가능한 크레딧 설정 (Available Credit) 및 배송 관리 (Shipping/Orders Management)를 포함합니다. 자바 애플리케이션은 싱글 WAR 압축 파일(Single War file)을 구성돼 있어 일반적으로 톰켓과 웹로직과 같은 기타 다른 싱클 애플리케이션 서버에서 구동합니다.
느려지는 분석 및 거대한 모노로틱 코딩 구현 (Being difficult to modify)
이러한 모노로틱 애플리케이션은 새로운 개발자들이나 새롭게 꾸려진 운영팀들이 개발하면서 대형 엔터프라이즈격을 이해하거나 수정하는 데 애를 먹게 됩니다. 당연히 운영 및 개발 진도는 비대해지며 느려집니다. 코드의 질은 향상되기보다 유지차원에서 정확한 구현 및 제작이 어려울 수 있습니다.
오버로딩 IDE/Web Container
초점을 잃은 거대한 코딩은 IDE 개발 툴 도구 제작에 서서히 돌아가거나 생산적인 개발 능력이 줄어들게 됩니다. 또한 컨테이너를 기다려야 하는 지루한 운영 속도는 생산성을 떨어뜨립니다.
디플로이 애플리케이션 운영 제약
일차원적 스케일인 모노로틱 어플리케이션은 대형 스케일 규모에서 어려움을 호소하고 트랜젝션 규모가 증가되는 반면 개발 능력과 운영 상태는 따라가지 못하기도 합니다. 그래서 운영측면에서 디플로이 영향으로 재구동해야 하는 운영 지연은 기업의 수익을 낮추는 효과를 발휘하고 있습니다.
✅ SOA/SOAP/AJAX
다양한 애플리케이션은 수세기 동안 분산처리와 확장성을 위한 디자인을 모색하면서 진화했습니다.
SOA 곧 서비스-지향 아키텍처 구조로서 2000년도에 선보인 이래, SOA는 SOAP (Simple Object Access Protocol) 과 같은 스탠다드 프로토콜로 자리하게 됩니다. 이러한 스탠다드 프로토콜의 예로서 웹 서비스 명시 언어 (Web Services Description Language : WSDL)가 있었고, 웹 1.0 세대에 주목받는 하나의 스탠다드 프로토콜로 기업에서 이를 사용하여 품격 높은 고객 서비스 레벨은 높아진 듯 보였습니다.
이러한 품격 높은 서비스 향상에 주안점을 둔 엔터프라이즈 격인 애플리케이션 소프트웨어 솔루션은 이제 웹 2.0 (웹 2.0 어플리케이션) 세대인 AJAX (Asynchronous JavaScript And XML)라는 명칭으로 각광을 받게 됩니다. 그림에서 보듯 웹 서비스와 애플리케이션 서비스의 분할이 방증입니다.
✅ 마이크로서비스 아키텍처 (Microservices Architecture)
중앙집중형 모노리스틱 애플리케이션에서 인스턴스 방식의 독립적인 서비스로 변모한 마이크로서비스 아키텍처를 알아보겠습니다.
수세기 동안 분산처리와 확장성을 위한 디자인을 모색하면서 진화하기 시작된 다양한 애플리케이션은 우버, 에어비엔비, 네플릭스 등과 같은 훌륭한 기업들의 선택에 높은 점수를 주었습니다. 또한, 컨테이너 방식의 서비스를 소개하면서 클라우드 방식 서비스와 빅 데이터 그리고 머신러닝에 이르기까지 높은 수준의 최고속 처리에 대한 아키텍처 디자인으로 빠르게 이동했습니다.
현재 그림에서 보듯 마이크로 아키텍처와 함께 애플리케이션은 데이터베이스 개수 기준에 맞춘 마이크로서비스로 분할돼 마이크로서비스 방식의 애플리케이션과 서로 다른 각각의 데이터베이스 서비스가 HTTP를 사용해 다른 서비스와 서로 상호작용할 수 있는 수준에까지 도달합니다.
결국 각각의 마이크로서비스를 개발하고, 테스트하고, 디플로이와 독립적인 유지보수까지 분할하게 되는 마이크로 디자인 패턴 방식을 도입한 것입니다. 모노리스 애플리케이션이 복잡해지며, 디플로이와 독립성 점수가 낮아지는 대신 분할 방식과 각종 서비스에 맞춘 인스턴스 방식의 독립적 서비스이자 마이크로 서비스 방식이 주를 이루는 쾌거를 누리게 됩니다.(다음 화에 계속)
I will be back.