Hexagonal Architecture - Apply Ports and Adapter Patterns
Hexagonal Architecture - Apply Ports and Adapter Patterns
Hexagonal Architecture เป็นแนวคิดการวาง Application Structure ที่ถูกคิดขึ้นมาโดย Alistair Cockburn (หนึ่งใน Agile Manifesto Fellowship) โดยมีพื้นฐานมาจาก Ports & Adapters Pattern เพื่อแยก Business logic ไม่ให้ผูกกับ technology มากเกินไป ช่วยให้ออกแบบ Application ให้อยู่ในรูปของ Modular Monolith ได้ง่ายขึ้น
เนื้อหาใน class นี้ จะพูดถึง:
เนื้อหาใน class นี้ จะพูดถึง:
- ที่มาของ Hexagonal ตั้งแต่ Ports & Adapters Pattern และความเข้าใจที่คลาดเคลื่อน ที่เกิดในวงการพัฒนา software เกี่ยวกับ Hexagonal Architecture
- ความแตกต่างของ Layered-Architecture และ Modular Architecture ของ Monolith Application
- มี hands-on labs ที่ได้เขียนโปรแกรมจริงๆ โดยเริ่มจาก refactor code เดิม ให้อยู่ใน structure ของ Ports & Adapter Pattern
- มี hands-on labs ที่จะได้ลองวาง structure เพื่อสำรวจไอเดียของ Ports & Adapters ว่านำไปสู่การออกแบบ Application ให้เป็น Modular Style ได้ยังไง
- เนื้อหาจะรวมไปถึง การ apply แนวคิดที่เล็กๆ ไปสู่ความเข้าใจถึงสิ่งที่ต่อยอดไปจาก Hexagonal Architecture เช่น Clean Architecture, ความสัมพันธ์ไปยัง Domain-Driven Design, รวมถึงแนวทางการออกแบบระบบขนาดใหญ่ด้วย Microservices Architecture
Class นี้ ออกแบบมาสำหรับ Software Developer เพื่อให้เข้าใจความสำคัญของการสื่อสารด้วย Application Structure เพื่อให้สามารถดูแลรักษา code ได้ง่ายขึ้น, ทีมสามารถนำแนวทางไปทำ code review ที่ชัดเจนขึ้น, ช่วยให้ออกแบบและสื่อสารไปในแนวทางเดียวกัน
ใน class จะมี lab เขียน code ด้วยภาษา TypeScript แต่ผู้เรียนสามารถใช้ภาษาและเครื่องมือที่ตัวเองถนัดได้ ไม่ว่าจะเป็น Java, C#, Kotlin, Swift, หรือภาษาใดๆที่เป็น Object-Oriented Programming และขอให้นำเครื่อง Laptop ของตัวเองมาด้วย
Course Outline:
- 9:00 - 10:30 - Introduction
- Application Architecture
- Separation of Concerns: Dependencies Injection
- GoF OOP Design patterns Revisit
- Fundamental Pattern: Adapter Pattern + (optional) Strategy Pattern
- Hexagonal Architecture - AKA Ports & Adapters Pattern
- 10:45 - 12:00 - Workshop 1 : Refactoring by Apply Ports & Adapters
- Restructure :- Apply Interfaces
- Introduce Test
- Apply ports and adapters
- 13:00 - 14:15 - Workshop 2 : Implement Ports & Adapters
- Understand Requirements
- Define App structure
- Test-to-Test -> Real-to-Real Walkthrough
- Apply Ports & Adapters
- 14:30 - 15:30 - More about Software Architecture Related Topics
- Hexagonal Architecture Wrap up
- Hexagonal vs. Onion vs. Clean Architecture
- Layered & Component in Monolith Architectural Style
- Modular Monolith :- From Monolith to Microservices with Hexagonal
- DDD Related
- 15:40 - 16:00 - Class Retrospective