ในการออกแบบ REST API นั้น มักจะออกแบบในรูปแบบของ OpenAPI หรือ Swagger กัน
มีคำถามใน course Microservices workshop ว่า
ถ้าเป็น Async หรือพวก messaging หรือ Event-based
ที่ใช้งาน RabbitMQ, Apache Kafka
จะทำการออกแบบในรูปแบบใด
โดยหนึ่งในแนวทางที่ผมใช้งานอยู่คือ AsyncAPI
โดยสามารถเขียนและออกแบบรูปแบบของ message/event
ที่ producer/publisher ส่งไปยัง messaging
และ message ที่รับมาทำงานโดย consumer/subscriber
ตัวอย่างดังนี้
จากเอกสารหรือ specification ที่ออกแบบนั้น
สามารถนำไปสร้างสิ่งต่าง ๆ ดังต่อไปนี้ได้
- มี Async Studio สำหรับการเขียนเอกสาร และมีการ validate ให้ด้วย
- สร้างเอกสาร
- ทำการ generate code ออกมาได้ทั้งฝั่ง producer และ consumer
- มีชุดของเครื่องมือให้ใช้งานเพียบ
เป็นอีกแนวทางที่น่าสนใจ
สำหรับ Design-First ของการออกแบบและพัฒนาระบบงาน
ลองใช้งานกันดูครับ