마이크로넛으로 개발하는 자바 클라우드 앱2
▲마이크로넛의 정의
앞에서 잠시 언급한대로 마이크로서비스 지향방식을 고집하는 마이크로넛 프레임워크는 혁신적인 새로운 서버 사이드 자바 기술이며, 공식 사이트는 micronaut.io 입니다. 그 마이크로넛 프레임워크의 론칭 사이트 주소는 깃허브 프로젝트에서 소스 코드와 Cli 관련 내용들을 받을 수 있습니다. 사실 마이크로넛을 사용하려면 리눅스/유닉스 운영체제 바탕에 제작된 듯 보입니다. 그러나 물론 윈도우즈 바탕에 실행시킬 수 있습니다.
▲마이크로서비스 그리고 그 이후
최근 마이크로서비스에 대한 좋은 견해와 그 마이크로서비스 아키텍처가 어떻게 빠른 개발을 주도하는지, 또한 에자일 방식의 접목과 더불어 엔터프라이즈 격에 맞는 웹 서비스들이 IT 변화를 주도하고 있는지 볼 수 있습니다. 그러한 마이크로서비스 아키텍처는 이제 이러한 고품격 웹 서비스 개발 위에서 고급 웹 페이지를 이끌어가려고 더 노력하는 중입니다. 따라서 마이크로서비스 디자인 패턴 내에서 이러한 고품격 개발의 토대 주도하는 것이 바로 마이크로넛 프레임워크(Micronaut Framework)입니다. 과거 전통적인 웹 서비스 방식에서 벗어나 빠른 마이크로서비스 디자인 패턴으로 이동하면서 21세기 현재, 성능과 최적화 이슈를 뛰어 넘고 있습니다.
“유일한 도전들을 이동시키고자 재빠르고, 민첩하고, 엔터프라이즈격 등급의 웹 서비스 개발을 위하여 마이크로서비스 아키텍쳐는 웹 서비스의 진화 내에서 변화하고 있습니다.”
– 마이크로넛 재단, 노몰 시이(Nirmal Singh), 잭 드우드(Zack Dawood)
✅ 모던 프레임워크 마이크로넛 세 가지 정의
그렇다면 마이크로넛이 마이크로서비스 사이에서 특히 주목을 끄는 이유는 무엇일까요?
▲마이크로넛의 모던 방식
이 이유 중 하나는 바로 마이크로넛의 모던 방식이기 때문입니다. 마이크로넛 웹 사이트에 따르면 “마이크로넛은 모던 방식이며, JVM 베이스 기준 방식을 따르는 풀스텍 프레임워크입니다. 이는 빌딩 모듈러를 위한 프레임워크이며, 손쉬운 테스트 가능성 있는 마이크로서비스이자 무서버 애플리케이션입니다”라고 말합니다.
이는 사실 최근 방식이라는 말이며, JVM 베이스 곧 자바 버추얼 머신 베이스 풀 스택 프레임워크입니다. 마이크로넛은 JVM 자바 버추얼 머신 위에 구동해 자바 언어를 지향하며, 모듈 방식을 채택하여 손쉽게 난이도 넘치지 않는 선에서 코드를 작성해 마이크로서비스 테스트가 가능합니다. 또한 Serverless Application, 즉 서버 없이 애플리케이션을 구축할 수 있죠. 바로 그 점에서 올 한해 주목됩니다.
▲ 독립적이며 모든 형태의 완벽한 애플리케이션
기업의 주목을 끄는 두 번째 사유는 이러합니다. 그래일(Grail) 과 마이크로넛 Micronaut Framework(마이크로넛 프레임워크) 두 프로그램 언어의 창시자 Graeme Rocher(그리네 로처)가 말하는 마이크로넛에 대한 정의를 보면,
Micronaut is a Modern framework for the Java Virtual Machine that focuses on the serverless and Microservices space.[1]
“마이크로넛은 사실 서버레스와 마이크로서비스 공간을 중점으로 자바 버추얼 머신을 위한 최신 프레임워크이자 모든 타입의 애플리케이션을 위한 완벽 호환 애플리케이션 프레임워크입니다.”
여기서 “Complete Application Framework”라는 말은 완벽한 애플리케이션 프레임워크를 말하며 이는 모든 타입의 애플리케이션에 잘 맞춰진 프레임워크라는 의미입니다. JVM방식 곧 자바 버추얼 머신 방식으로 어느 플랫폼에서 독립적으로 머신 작동되돼 그 위에 애플리케이션을 작동 및 운영하기 좋은 자바 환경을 따라갑니다.
또한 마이크로넛 프레임워크는 모노리스에서 스프링 프레임워크와 스프링 부츠, 그리고 그래들(Gradle)을 사용하는 마이크로서비스까지 사용가능한 실제 산업에 쓰이는 제반의 애플리케이션을 사용하도록 돕습니다.(추후에 언급하겠지만 IoC, AOP, Sensible Defaults and Auto-Configuration 등 세 가지 주요한 기능을 포함한 JVM 애플리케이션 구현에 필요한 여러 툴을 제공합니다.)
▲ 독립적이며 모든 형태의 완벽한 애플리케이션
마지막 세 번째로 마이크로넛 프레임워크는 마이크로서비스 환경 내에서 클라이언트/서버 프레임워크로 작동하고 있다는 이유 때문입니다. 실제 마이크로넛의 핵심은 바로 주석 프로세서 방식 (Annotation processor)를 사용하면서 애플리케이션을 실행하는 데 필요한 제반의 메타 데이터와 정보를 미리 컴파일 하는 방식으로 나아갑니다. 또한 동시에 네티 서버 (Netty)를 기반으로 내부 장착된 네트워크 애플리케이션 프레임워크에 구축된 HTTP 클라이언트 및 서버를 갖춰 무서버 애플리케이션 제작을 빠르게 구축할 수 있습니다. 물론 AWS 람다 서버 리스 컴퓨팅 플래폼과 추후에 제작할 오라클 기반의 무서버 애플리케이션 제작도 가능하도록 구현됩니다.
마이크로넛 프레임워크는, NON-BLOCKING HTTP Client/Server라는 정의를 내릴 정도로 미리 컴파일 한다는 방식에서 메모리 소비와 시작 타임에 대한 런타임 오버 헤드를 일정량 줄게해 메모리 낭비를 제거합니다. [2]