Helidon

Helidon?

이런저런 IT 이야기 2023. 7. 21. 09:01
반응형

 

https://helidon.io/

 

Helidon Project

Observable and Resilient With support for health checks, metrics, tracing and fault tolerance, Helidon has what you need to write cloud-ready applications that integrate with Prometheus, Jaeger/Zipkin and Kubernetes.

helidon.io

https://github.com/helidon-io/helidon

 

GitHub - helidon-io/helidon: Java libraries for writing microservices

Java libraries for writing microservices. Contribute to helidon-io/helidon development by creating an account on GitHub.

github.com

 

@ Helidon?

Helidon은 클라우드 네이티브 애플리케이션 개발을 위한 Java 라이브러리 세트입니다. 이름은 작고 가벼운 속성을 전달하기 위해 "제비"와 유사한 Helidon으로 선택되었습니다. Helidon은 성능, 클라우드 네이티브, Java SE 채용, 현대적인 Enterprise Java 표준 호환성, 그리고 GraalVM Native Image 지원을 목표로 설계되었습니다. 리액티브 비차단 구현을 통해 뛰어난 성능을 달성하며, 클라우드 네이티브 애플리케이션 개발에 필요한 기능을 제공합니다.

최신 Java 버전과 기능을 적극적으로 채택하며, 타사 종속성을 최소화하여 JDK에 의존합니다. Jakarta EE와 MicroProfile 표준을 지원하여 이식성과 유지 보수성을 갖추었으며, GraalVM Native Image를 통해 네이티브 실행 파일로 컴파일될 수 있습니다. Helidon은 CDI와 네이티브 이미지를 함께 사용할 수 있는 기능을 제공하며, 오픈 소스로 개발되었습니다.

@ Helidon flavors?

Helidon MP와 Helidon SE는 Helidon의 두 가지 주요 Flavor입니다. 각각 다른 개발 스타일과 특징을 가지고 있습니다.

  • Helidon MP(MicroProfile)는?
    • 선언적인 스타일의 API를 제공합니다. 이 플레이버는 전통적인 Enterprise Java 개발자를 위해 만들어졌으며, Jakarta Contexts and Dependency Injection (CDI)와 같은 주요 기술을 활용합니다. Helidon MP는 Jakarta EE와 MicroProfile의 모든 사양을 완전히 지원하며, 클라우드 네이티브 애플리케이션 개발을 위한 다양한 기능을 제공합니다. 또한, 블로킹 방식의 동기식 API로 작동하며, 주석을 활용하여 개발자가 더 쉽게 작성할 수 있도록 합니다. Helidon MP는 전통적인 Java 엔터프라이즈 개발 환경에 익숙한 개발자들에게 적합합니다.
    • 현대적인 엔터프라이즈 자바 표준을 지원하는 플레이버입니다. 사용 편의성을 고려하여 설계되었으며, Spring Boot와 유사한 개발 경험을 제공합니다.  Helidon MP는 자동화된 많은 작업을 처리해주지만 제어권이 상대적으로 줄어드는 단점이 있습니다. 하지만 이러한 단점은 큰 제한사항이 아니며, Helidon MP는 빠른 시작 시간, 낮은 메모리 소비, 작은 디스크 풋프린트 등 클라우드 네이티브 애플리케이션 개발을 위한 기능을 제공합니다.
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/hello")
public class HelloWorldResource {
    
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String sayHello() {
        return "Hello, World!";
    }
}
  • Helidon SE는?
    • 함수형 스타일의 API를 제공합니다. 이 플레이버는 논블로킹 방식의 리액티브 API를 중심으로 설계되었습니다. Helidon SE는 작은 메모리 풋프린트를 가지며, 주석을 사용하지 않고도 간결한 코드 작성이 가능합니다. 또한, 의존성 주입(Dependency Injection)을 사용하지 않으므로 가볍고 독립적인 애플리케이션을 개발할 수 있습니다. Helidon SE는 Java SE(Standard Edition)를 포용하며, 최신 Java 버전과 기능을 빠르게 적용할 수 있습니다. 주요한 기능은 Flow API와 java.util.logging을 활용하며, 순수 JDK로 구현 가능한 경우에는 제3자 라이브러리를 최소화하여 의존성을 줄입니다. Helidon SE는 클라우드 네이티브 마이크로서비스 애플리케이션을 개발하고자 하는 개발자들에게 적합합니다.
    • GraalVM Native Image와 완벽히 호환되며, JavaScript 개발자들이 Java로 전환할 때도 유용합니다. 리액티브 프로그래밍에 익숙한 경우 작은 단점이지만, 그렇지 않은 경우에는 더 큰 도전이 될 수 있습니다. Helidon SE는 매우 작은 메모리 풋프린트를 가지고 있습니다.
import io.helidon.webserver.Routing;
import io.helidon.webserver.WebServer;

public class HelloWorldApp {
    
    public static void main(String[] args) {
        WebServer.create(
                Routing.builder()
                        .get("/", (req, res) -> res.send("Hello, World!"))
                        .build()
        ).start();
    }
}

Helidon MP와 Helidon SE는 각각의 특징과 개발 스타일을 가지고 있으며, 개발자는 프로젝트의 요구 사항과 선호도에 따라 적절한 플레이버를 선택하여 사용할 수 있습니다.

반응형