ต่อจากที่แนะนำ Spring Modulith ไปแล้ว
มาลองลงมือเขียน code ตามแนวทางนี้หน่อยว่าเป็นอย่างไร
มีเครื่องมืออะไรที่น่าสนใจบ้าง
ขั้นตอนที่ 1 สร้าง Project ด้วย Apache Maven Project
โดยทำการเพิ่ม library ของ Spring Modulith ในไฟล์ pom.xml ดังนี้
[gist id="f925433ef3f7fc3c819bcc53cd61b32e" file="pom.xml"]ขั้นตอนที่ 2 ทำการออกแบบสิ่งที่ต้องการ
จะสร้างมา 3 module โดยที่ Module 1 เรียกใช้งาน Module 2 และ 3
โดยแยก package ตามแต่ละ module ไป
ใน Spring Modulith จะทำการ injection ผ่าน constructor ดังนี้
ขั้นตอนที่ 3 ทำการเขียน test สำหรับ Spring Modulith
[gist id="f925433ef3f7fc3c819bcc53cd61b32e" file="ModulithTests.java"]จากนั้นทำการ run test ผลที่ได้ตามมา
คือ UML diagram ของทั้ง project และแยกแต่ละ module
โดยสามารถเปิดดูได้จาก PlantUML
Diagram ของแต่ละ Module
หรือสร้าง diagram แบบอื่น ๆ ได้อีก ดูที่ Document
เป็นสิ่งที่ดีมาก ๆ ช่วยให้เราสร้างเอกสารของระบบงานแบบ up-to-date อยู่ตลอดเวลา
ในแต่ละ module สามารถมี internal class หรือใช้เฉพาะภายใน module
สามารถสร้าง class/interface ใน package ย่อยชื่อว่า internal
ขั้นตอนที่ 4 สามารถดู tracing ของการเรียกระหว่าง module ผ่าน Zipkin ได้ด้วย
ต้องทำการเพิ่ม library ในไฟล์ pom.xml
ประกอบไปด้วย
- Zipkin
- Tracing
- Actuator
- Observability
ดังนี้
[gist id="f925433ef3f7fc3c819bcc53cd61b32e" file="pom2.xml"]จากนั้นทำการ run และดูผลใน Zipkin จะเป็นดังนี้
เพียงเท่านี้ก็เริ่มใช้งานแบบง่าย ๆ ได้แล้ว
ลองเล่นกันดูครับ
ขอให้สนุกกับการ coding !!
ตัวอย่างของ source code