Microservices Workshop for Dime - up1/training-courses GitHub Wiki

Microservices Workshop

  • Design
  • Develop
  • Testing
  • Monitoring

เป้าหมาย

Microservices architecture เป็นอีกแนวคิดหนึ่งสำหรับการออกแบบและพัฒนา software ซึ่งทำการแบ่งส่วนการทำงานของ software ออกเป็นส่วนการทำงานเล็ก ๆ เพื่อช่วยทำให้แต่ละส่วนการทำงานเป็นอิสระต่อกัน สามารถ deploy และรองรับการขยายตัวได้อย่างอิสระ

ใน course นี้จะอธิบายให้เข้าใจว่า Microservices คืออะไร ทำไม Microservices จึงได้รับความนิยม Microservices ช่วยแก้ไขปัญหาและมีประโยชน์อย่างไร ตลอดจนข้อเสียต่าง ๆ ที่ต้องรับมือจากการนำ Microservices มาปรับใช้งาน

กลุ่มเป้าหมาย

  • Software Developer/Programmer
  • Software Tester/QA
  • Software Analyst
  • Software Architect
  • Operation/Infrastructure

Software requirements

Duration

  • 2 Days

Course Outlines

  • Foundation of Software Architecture

    • วิวัฒนาการของสถาปัตยกรรมของ software
      • Monolith
      • Tier/Layer
      • Service-Oriented Architecture (SOA)
      • Microservices
      • Event-Driven Architecture (EDA)
    • เหตุผลว่าทำไมจึงต้องการ Microservice
      • No silver bullet
      • All about trade-offs
    • ความรู้พื้นฐานของ Microservice
      • ประโยชน์ของการออกแบบด้วยแนวคิด Microservice
      • คุณสมบัติหลักของการออกแบบระบบงานด้วยแนวคิด Microservice
      • ข้อดีและข้อเสียของการออกแบบด้วยแนวคิด Microservice
    • ปัญหาและความท้าทายของการนำ Microservice มาใช้งาน
    • การแบ่งหรือแยกส่วนการทำงานต่าง ๆ ออกจากกัน เพื่อให้ทำงานได้อย่างมีอิสระต่อกัน
    • การจัดการการติดต่อสื่อสารระหว่าง service หรือระบบงานย่อย ๆ
      • Synchronous (Request-Response Model)
      • Asynchronous (Observer/Event)
    • Microservices patterns
      • Decomposition
      • Data
      • Communication
      • Testing
      • Observability
        • Metric, Trace, Log and Exception tracking
  • การพัฒนาและทดสอบระบบ

    • แนวทางในการพัฒนาด้วยแนวคิด Microservices
    • แนวทางการทดสอบระบบงาน
      • Unit testing
      • Integration testing
      • Component testing
      • Contract testing
      • End-to-End testing
    • Workshop
      • Go and Gin framework
      • Event-base with Watermill and RabbitMQ
        • Design Events
        • Documentation of Event with AsyncAPI
  • Workshop Design workshop by use case !!

    • Design services
      • Decomposition services ?
      • Communication between services ?
      • Data modeling in each service ?
      • Caching strategies
    • How to develop ?
      • Project structure
    • How to test ?
      • Test strategies
      • Testable application
  • ระบบ Monitoring และ Observability ของ service

    • Application metric
      • Tools => Opentelemetry, Prometheus and Grafana
    • Distributed tracing
      • Tools => Opentelemetry, Jaeger and Tempo
    • Log aggregation
      • Tools => Opentelemetry, Loki
    • Exception tracking
    • Workshop with Observability
      • Go
      • Opentelemetry
      • Prometheus
      • Jaeger
      • Loki
      • Grafana