เห็นมีการ share บทความเกี่ยวกับ Helidon Project จากทาง Oracle
ซึ่งปล่อย version 1.0 ออกมาแล้ว
บอกว่ามันคือ Lightweight Java Microservice framework
ดังนั้นจึงมี library ที่จำเป็นสำหรับการพัฒนาระบบตามแนวคิด Microservices ไว้ให้เลย
โดยเบื้องหลังของ web server คือ Netty เป้าหมายหลัก ๆ คือ
- ความเรียบง่าย
- ความเร็ว
- สนับสนุน MicroProfile
- Reactive Web server
- เตรียมเรื่องของ health check, metric, tracing และ tolerance ให้
- พร้อมสำหรับการ integrate กับ Prometheus, Zipkin และ Kubernetes
- เตรียมเรื่องของ security ไว้ให้ เช่น Authentication, Authorization, Outbound security และ การ Audit
มาดูรายละเอียดและลองใช้งานกันดู
ที่มาของ project นี้ ก็อธิบายไว้ดีและชัดเจนคือ
เนื่องจาก Microservices เป็นแนวคิดที่ได้รับความนิยม
รูปแบบการพัฒนาก็จำเป็นต้องมีการเปลี่ยนแปลงเช่นกัน
เมื่อมองในสิ่งที่มีอยู่ของ Oracle คือ Java EE ซึ่งมันเป็นเทคโนโลยีที่ดีและเสถียร
แต่ว่ามี legacy technology มากมาย
การที่จะพัฒนาระบบตามแนวคิด Microservices บน Java EE คงไม่ใช่สิ่งที่ดี
ดังนั้นเราจำเป็นต้องมี framework ใหม่ที่ออกแบบมาเพื่อ Microservices โดยเฉพาะ
นั่นคือที่มาของ Helidon project
เรื่องของ Architecture
จะมีอยู่ 2 ส่วนหรือ version คือ
- Helidon SE (Standard Edition) คือ core หลักของ project ซึ่งไม่มี magic หรือพวก DI แปลก ๆ รวมทั้งไม่มี class loader อะไรมากมาย มันคือการเขียนด้วย Java SE ทั่วไปเลย
- Helidon MP (MicroProfile) เป็นส่วนที่สร้างอยู่บน Helidon SE
มีการเปรียบเทียบกับ Microservice framework อื่น ๆ ให้เข้าใจง่ายขึ้น
สังเกตว่าจะมีขนาดที่เล็กกว่า Spring Boot ด้วยนะ
มาลองเขียนกันนิดหน่อย
เริ่มง่าย ๆ กับ hello world นี่แหละ การเขียนก็ไม่ยากเท่าไร
เพราะว่าเอกสารมีตัวอย่างครบ ซึ่งทำการพัฒนา RESTful API ดังนี้
[gist id="549e55fa27bce2343dca73ee00738a0b" file="HelloWorld.java"]
คำอธิบาย
ทำการสร้าง Web server ขึ้นมาซึ่ง run ที่ port 8080 (Reactive Web Server)
แน่นอนว่า Web server คือ Netty นั่นเอง ทำการกำหนด routing ของ API
หน้าตามันคุ้น ๆ เหมือน NodeJS เลย
เนื่องจากได้แรงบันดาลในมานั่นเอง
ตัวอย่าง source code ของ Project อยู่ที่ Github::Hello
ไว้ว่าง ๆ มาลองสร้าง Microservices ด้วย Helidon แบบเต็ม ๆ กันดู
Reference Websites https://github.com/oracle/helidonhttps://www.infoq.com/news/2018/10/oracle-introduces-helidon
https://www.infoq.com/news/2019/03/helidon-v1-api-stability
https://blogs.oracle.com/developers/microservices-from-dev-to-deploy-part-1-getting-started-with-helidon