SlideShare a Scribd company logo
1 of 22
Babel Coder
1. MICROSERVICES คืออะไร
การออกแบบแอปพลิเคชันแบบ Monolithic นันจะรวมศูนย์ทุกฟีเจอร ์เข้าเป็ นโปรแกรมเดียว โดย
ทังแอปพลิเคชันจะมีการใช้งานฐานข้อมูลร่วมกันเพือจัดเก็บข้อมูลสําหรับฟีเจอร ์ต่าง ๆ
Order
Stock
Payment
Monolithi
c
Babel Coder
1. MICROSERVICES คืออะไร
สถาปัตยกรรมแบบ Monolithic นีประกอบด้วยข้อดีต่าง ๆ ได้แก่
• ง่ายต่อการพัฒนา
• ง่ายต่อการแก้ไขหรือเปลียนแปลง
• สามารถทําการทดสอบฟังก ์ชันต่าง ๆ ได้อย่างตรงไปตรงมา
• ง่ายต่อการ Deploy แอปพลิเคชันสู่ Production
• ไม่ยุ่งยากในการ Scale ระบบ
Babel Coder
1. MICROSERVICES คืออะไร
อย่างไรก็ตาม Monolithic นันก็มีข้อเสียด้วยเช่นกัน คือ
• การผูกติดกับภาษาโปรแกรม
• ความยุ่งยากในการพัฒนาระดับทีม
• ความช้าในการ Deploy
• การ Scale ระบบทีไร ้ประสิทธิภาพ
Babel Coder
Order
Stock
Payment
Order
Stock
Payment
Order
Stock
Payment
1. MICROSERVICES คืออะไร
LOAD
BALANCER
Babel Coder
1. MICROSERVICES คืออะไร
เพือแก้ปัญหาของ Monolithic ดังกล่าว จึงเป็ นทีมาของสถาปัตยกรรมแบบ Microservices
สถาปัตยกรรมแบบ Microservices เป็ นสถาปัตยกรรมทีออกแบบตามหลักการของ Cloud
Native โดยระบบหนึง ๆ จะประกอบไปด้วยหลายหน่วยย่อยหรือเซอร ์วิส ทีมีการเชือมต่อกันอย่าง
หลวม ๆ กับเซอร ์วิสอืน แต่ละเซอร ์วิสจะมีขนาดเล็กและแยก Deploy ได้อย่างอิสระ
Babel Coder
Order
1. MICROSERVICES คืออะไร
microservices
Stock Payment
Babel Coder
2. ลักษณะพืนฐานของ MICROSERVICES
สถาปัตยกรรมแบบ Microservices ประกอบด้วยลักษณะต่าง ๆ ดังต่อไปนี
• Autonomy แต่ละเซอร ์วิสในสถาปัตยกรรมแบบ Microservices สามารถแยกพัฒนาได้
เช่น มีทีมสําหรับการพัฒนาเซอร ์วิสของ User, Article, Order และ Payment แยก
แตกต่างกันออกไป พร ้อมทังสามารถแยก Deploy หรือ scale แยกแต่ละเซอร ์วิสได้โดยไม่
กระทบกับเซอร ์วิสอืน
• Specialization แต่ละเซอร ์วิสได้รับการออกแบบโดยอาศัยการแบ่งแยกตาม Business
Capability เพือให้สามารถแก้ปัญหาทางธุรกิจนัน ๆ ได้อย่างเฉพาะเจาะจง
• Agility ความคล่องตัวนันเกิดจากการที Microservices ส่งเสริมให้องค์กรมีการออกแบบทีม
ขนาดเล็กเพือเป็ นเจ้าของแต่ละเซอร ์วิส
• Flexible Scaling Microservices ทําให้เกิดการ scale แต่ละเซอร ์วิสได้อย่างอิสระโดยไม่
กระทบกับเซอร ์วิสอืน ๆ
Babel Coder
Order
2. ลักษณะพืนฐานของ MICROSERVICES
Stock Payment
Order Order
Babel Coder
SCALE CUBE
--- Wikimedia
Babel Coder
3. API GATEWAY คืออะไร
Order Stock Payment
POST <ORDER_IP>/orders
Babel Coder
Order Stock Payment
3. API GATEWAY คืออะไร
POST <GATEWAY_IP>/orders
POST /orders
A
P
I
G
a
t
e
w
a
y
Babel Coder
4. การสือสารระหว่างเซอร ์วิส
Order Stock Payment
Babel Coder
Order Stock Payment
1
4.1 SYNCHRONOUS MESSAGES
Request an order
check
stock
Calculate total
price
2
3
Babel Coder
Order Stock Payment
4.1 SYNCHRONOUS MESSAGES
check
stock
Calculate total
price
2
3
POST
<STOCK_IP>/products/<ID>
POST
<PAYMENT_IP>/checkout
Babel Coder
Order Stock Payment
1
4.2 ASYNCHRONOUS MESSAGES
ORDER_REQUESTED Event
Message Channel
Message Broker
Babel Coder
4.3 เมือไหร่ควรใช้การสือสารแบบใด
ทังการสือสารแบบ Synchronous และ Asynchronous ต่างมีข้อดีข้อเสียแตกต่างกัน การเลือกใช ้การสือสารประเภทต่าง ๆ ตามความเหมาะสมจึง
เป็ นเรืองสําคัญ
เราควรเลือกใช้การสือสารแบบ Synchronous ในกรณีต่อไปนี
• หากไม่สามารถดําเนินการอย่างอืนได้ถ้าไม่ได้รับผลลัพธ์จากเซอร ์วิสอืน เช่น กรณีสอบถามข้อมูลสินค้าจาก Product ทีเซอร ์วิส Product มี
การร ้องขอข้อมูลผู้ขายต่อไปยัง User กรณีนีต้องใช้Synchronous เพือให้ข้อความตอบกลับไปยังส่วนของ UI นันสมบูรณ์
• เมือต้องการข้อมูลแบบ Real-time
• เมือแต่ละเซอร ์วิสมีระยะเวลาการประมวลผลทีสัน
เราควรเลือกใช้การสือสารแบบ Asynchronous ในกรณีต่อไปนี
• เมือฟีเจอร ์นันยอมรับการทํางานทีเสร็จสินในภายหลังได้เช่น การออกรายงานทีสามารถส่งผลลัพธ ์ภายหลังผ่านอีเมล ์ได้
• เมือการทํางานของเซอร ์วิสระหว่างกลางมีความล่าช้าหรือใช ้ระยะเวลานานในการประมวลผล
• เมือยอมรับให้บางเซอร ์วิสเกิดข้อผิดพลาดในการทํางานได้และต้องการความสามารถในการทําซํา (Retry)
Babel Coder
5. SAGA PATTERN
Saga Pattern คือรูปแบบของการออกแบบระบบในสถาปัตยกรรม Microservices เพือจัดการให้เกิด Data
Consistency จากการสือสารกันของเซอร ์วิสต่าง ๆ ในระบบ รูปแบบของ Saga นันจะมองว่าธุรกรรม
(Transaction) ใด ๆ จะเกิดจากการดําเนินการผ่านธุรกรรมย่อย ๆ ในแต่ละเซอร ์วิส (Local Transactions) แต่ละ
ธุรกรรมย่อย ๆ ของเซอร ์วิสนันจะมีการอัพเดทลงฐานข้อมูลของเซอร ์วิสตนเอง จากนันเซอร ์วิสจึงส่งต่อการทํางานด้วย
การส่งเหตุการณ์ (Event) เพือให้เกิดการทํางานของเซอร ์วิสถัดไป หากธุรกรรมย่อยนันล้มเหลวในการดําเนินงาน
Saga จะทําการเรียก Compensating Transaction อันเป็นธุรกรรมย้อนกลับเพือให้ระบบสามารถย้อนการ
เปลียนแปลงกลับไปได้
รูปแบบการทํางานของ Saga แบ่งออกเป็ นสองประเภท คือ Choreography-based Saga และ Orchestration-
based Saga
Babel Coder
5.1 CHOREOGRAPHY-BASED SAGA
Order
Stock
Payment
Babel Coder
5.1 CHOREOGRAPHY-BASED SAGA
Babel Coder
5.2 ORCHESTRATION-BASED SAGA
Orchestrato
r
Order
Stock
Paymen
t
T1: Order requested
Saga
Log
• ORDER_REQUESTED
T3: Check status requested
3. CHECK_STOCK_REQUESTED
T5: Payment requested
5. PAYMENT_REQUESTED
T6: Payment approved
T2: Order created
T4: Stock reserved
T7: Order reserved
Babel Coder
6. COMPENSATING TRANSACTIONS
Orchestrato
r
Order
Stock
Paymen
t
T1: Order requested
Saga
Log
• ORDER_REQUESTED
T3: Check status requested
3. CHECK_STOCK_REQUESTED
C3: -
C2: -
T2: Order created
T4: Stock rejected
C1: Order cancelled
Babel Coder

More Related Content

More from NuttavutThongjor1

More from NuttavutThongjor1 (20)

2 เทคโนโลยี cloud computing.pdf 2 เทคโนโลยี cloud computing.pdf
2 เทคโนโลยี cloud computing.pdf 2 เทคโนโลยี cloud computing.pdf2 เทคโนโลยี cloud computing.pdf 2 เทคโนโลยี cloud computing.pdf
2 เทคโนโลยี cloud computing.pdf 2 เทคโนโลยี cloud computing.pdf
 
1 devops คืออะไร.pdf 1 devops คืออะไร.pdf
1 devops คืออะไร.pdf 1 devops คืออะไร.pdf1 devops คืออะไร.pdf 1 devops คืออะไร.pdf
1 devops คืออะไร.pdf 1 devops คืออะไร.pdf
 
angular fundamentals.pdf angular fundamentals.pdf
angular fundamentals.pdf angular fundamentals.pdfangular fundamentals.pdf angular fundamentals.pdf
angular fundamentals.pdf angular fundamentals.pdf
 
mean stack mean stack mean stack mean stack
mean stack mean stack  mean stack  mean stackmean stack mean stack  mean stack  mean stack
mean stack mean stack mean stack mean stack
 
pinia.pdf
pinia.pdfpinia.pdf
pinia.pdf
 
nuxt-rendering-modes.pdf
nuxt-rendering-modes.pdfnuxt-rendering-modes.pdf
nuxt-rendering-modes.pdf
 
zustand.pdf
zustand.pdfzustand.pdf
zustand.pdf
 
tanstack-query.pdf
tanstack-query.pdftanstack-query.pdf
tanstack-query.pdf
 
nuxt-fundamentals.pdf
nuxt-fundamentals.pdfnuxt-fundamentals.pdf
nuxt-fundamentals.pdf
 
vue-components.pdf
vue-components.pdfvue-components.pdf
vue-components.pdf
 
vue-reactivity.pdf
vue-reactivity.pdfvue-reactivity.pdf
vue-reactivity.pdf
 
vue-template.pdf
vue-template.pdfvue-template.pdf
vue-template.pdf
 
recap-restful.pdf
recap-restful.pdfrecap-restful.pdf
recap-restful.pdf
 
nuxt-tech-stack.pdf
nuxt-tech-stack.pdfnuxt-tech-stack.pdf
nuxt-tech-stack.pdf
 
recap-js-and-ts.pdf
recap-js-and-ts.pdfrecap-js-and-ts.pdf
recap-js-and-ts.pdf
 
prisma.pdf
prisma.pdfprisma.pdf
prisma.pdf
 
fullstack-nextjs.pdf
fullstack-nextjs.pdffullstack-nextjs.pdf
fullstack-nextjs.pdf
 
angular fundamentals.pdf
angular fundamentals.pdfangular fundamentals.pdf
angular fundamentals.pdf
 
javascript for modern application.pdf
javascript for modern application.pdfjavascript for modern application.pdf
javascript for modern application.pdf
 
harmonyx.pdf
harmonyx.pdfharmonyx.pdf
harmonyx.pdf
 

3 Microservices.pdf 3 Microservices 3 Microservices.pdf.pdf

  • 2. 1. MICROSERVICES คืออะไร การออกแบบแอปพลิเคชันแบบ Monolithic นันจะรวมศูนย์ทุกฟีเจอร ์เข้าเป็ นโปรแกรมเดียว โดย ทังแอปพลิเคชันจะมีการใช้งานฐานข้อมูลร่วมกันเพือจัดเก็บข้อมูลสําหรับฟีเจอร ์ต่าง ๆ Order Stock Payment Monolithi c Babel Coder
  • 3. 1. MICROSERVICES คืออะไร สถาปัตยกรรมแบบ Monolithic นีประกอบด้วยข้อดีต่าง ๆ ได้แก่ • ง่ายต่อการพัฒนา • ง่ายต่อการแก้ไขหรือเปลียนแปลง • สามารถทําการทดสอบฟังก ์ชันต่าง ๆ ได้อย่างตรงไปตรงมา • ง่ายต่อการ Deploy แอปพลิเคชันสู่ Production • ไม่ยุ่งยากในการ Scale ระบบ Babel Coder
  • 4. 1. MICROSERVICES คืออะไร อย่างไรก็ตาม Monolithic นันก็มีข้อเสียด้วยเช่นกัน คือ • การผูกติดกับภาษาโปรแกรม • ความยุ่งยากในการพัฒนาระดับทีม • ความช้าในการ Deploy • การ Scale ระบบทีไร ้ประสิทธิภาพ Babel Coder
  • 6. 1. MICROSERVICES คืออะไร เพือแก้ปัญหาของ Monolithic ดังกล่าว จึงเป็ นทีมาของสถาปัตยกรรมแบบ Microservices สถาปัตยกรรมแบบ Microservices เป็ นสถาปัตยกรรมทีออกแบบตามหลักการของ Cloud Native โดยระบบหนึง ๆ จะประกอบไปด้วยหลายหน่วยย่อยหรือเซอร ์วิส ทีมีการเชือมต่อกันอย่าง หลวม ๆ กับเซอร ์วิสอืน แต่ละเซอร ์วิสจะมีขนาดเล็กและแยก Deploy ได้อย่างอิสระ Babel Coder
  • 8. 2. ลักษณะพืนฐานของ MICROSERVICES สถาปัตยกรรมแบบ Microservices ประกอบด้วยลักษณะต่าง ๆ ดังต่อไปนี • Autonomy แต่ละเซอร ์วิสในสถาปัตยกรรมแบบ Microservices สามารถแยกพัฒนาได้ เช่น มีทีมสําหรับการพัฒนาเซอร ์วิสของ User, Article, Order และ Payment แยก แตกต่างกันออกไป พร ้อมทังสามารถแยก Deploy หรือ scale แยกแต่ละเซอร ์วิสได้โดยไม่ กระทบกับเซอร ์วิสอืน • Specialization แต่ละเซอร ์วิสได้รับการออกแบบโดยอาศัยการแบ่งแยกตาม Business Capability เพือให้สามารถแก้ปัญหาทางธุรกิจนัน ๆ ได้อย่างเฉพาะเจาะจง • Agility ความคล่องตัวนันเกิดจากการที Microservices ส่งเสริมให้องค์กรมีการออกแบบทีม ขนาดเล็กเพือเป็ นเจ้าของแต่ละเซอร ์วิส • Flexible Scaling Microservices ทําให้เกิดการ scale แต่ละเซอร ์วิสได้อย่างอิสระโดยไม่ กระทบกับเซอร ์วิสอืน ๆ Babel Coder
  • 11. 3. API GATEWAY คืออะไร Order Stock Payment POST <ORDER_IP>/orders Babel Coder
  • 12. Order Stock Payment 3. API GATEWAY คืออะไร POST <GATEWAY_IP>/orders POST /orders A P I G a t e w a y Babel Coder
  • 14. Order Stock Payment 1 4.1 SYNCHRONOUS MESSAGES Request an order check stock Calculate total price 2 3 Babel Coder
  • 15. Order Stock Payment 4.1 SYNCHRONOUS MESSAGES check stock Calculate total price 2 3 POST <STOCK_IP>/products/<ID> POST <PAYMENT_IP>/checkout Babel Coder
  • 16. Order Stock Payment 1 4.2 ASYNCHRONOUS MESSAGES ORDER_REQUESTED Event Message Channel Message Broker Babel Coder
  • 17. 4.3 เมือไหร่ควรใช้การสือสารแบบใด ทังการสือสารแบบ Synchronous และ Asynchronous ต่างมีข้อดีข้อเสียแตกต่างกัน การเลือกใช ้การสือสารประเภทต่าง ๆ ตามความเหมาะสมจึง เป็ นเรืองสําคัญ เราควรเลือกใช้การสือสารแบบ Synchronous ในกรณีต่อไปนี • หากไม่สามารถดําเนินการอย่างอืนได้ถ้าไม่ได้รับผลลัพธ์จากเซอร ์วิสอืน เช่น กรณีสอบถามข้อมูลสินค้าจาก Product ทีเซอร ์วิส Product มี การร ้องขอข้อมูลผู้ขายต่อไปยัง User กรณีนีต้องใช้Synchronous เพือให้ข้อความตอบกลับไปยังส่วนของ UI นันสมบูรณ์ • เมือต้องการข้อมูลแบบ Real-time • เมือแต่ละเซอร ์วิสมีระยะเวลาการประมวลผลทีสัน เราควรเลือกใช้การสือสารแบบ Asynchronous ในกรณีต่อไปนี • เมือฟีเจอร ์นันยอมรับการทํางานทีเสร็จสินในภายหลังได้เช่น การออกรายงานทีสามารถส่งผลลัพธ ์ภายหลังผ่านอีเมล ์ได้ • เมือการทํางานของเซอร ์วิสระหว่างกลางมีความล่าช้าหรือใช ้ระยะเวลานานในการประมวลผล • เมือยอมรับให้บางเซอร ์วิสเกิดข้อผิดพลาดในการทํางานได้และต้องการความสามารถในการทําซํา (Retry) Babel Coder
  • 18. 5. SAGA PATTERN Saga Pattern คือรูปแบบของการออกแบบระบบในสถาปัตยกรรม Microservices เพือจัดการให้เกิด Data Consistency จากการสือสารกันของเซอร ์วิสต่าง ๆ ในระบบ รูปแบบของ Saga นันจะมองว่าธุรกรรม (Transaction) ใด ๆ จะเกิดจากการดําเนินการผ่านธุรกรรมย่อย ๆ ในแต่ละเซอร ์วิส (Local Transactions) แต่ละ ธุรกรรมย่อย ๆ ของเซอร ์วิสนันจะมีการอัพเดทลงฐานข้อมูลของเซอร ์วิสตนเอง จากนันเซอร ์วิสจึงส่งต่อการทํางานด้วย การส่งเหตุการณ์ (Event) เพือให้เกิดการทํางานของเซอร ์วิสถัดไป หากธุรกรรมย่อยนันล้มเหลวในการดําเนินงาน Saga จะทําการเรียก Compensating Transaction อันเป็นธุรกรรมย้อนกลับเพือให้ระบบสามารถย้อนการ เปลียนแปลงกลับไปได้ รูปแบบการทํางานของ Saga แบ่งออกเป็ นสองประเภท คือ Choreography-based Saga และ Orchestration- based Saga Babel Coder
  • 21. 5.2 ORCHESTRATION-BASED SAGA Orchestrato r Order Stock Paymen t T1: Order requested Saga Log • ORDER_REQUESTED T3: Check status requested 3. CHECK_STOCK_REQUESTED T5: Payment requested 5. PAYMENT_REQUESTED T6: Payment approved T2: Order created T4: Stock reserved T7: Order reserved Babel Coder
  • 22. 6. COMPENSATING TRANSACTIONS Orchestrato r Order Stock Paymen t T1: Order requested Saga Log • ORDER_REQUESTED T3: Check status requested 3. CHECK_STOCK_REQUESTED C3: - C2: - T2: Order created T4: Stock rejected C1: Order cancelled Babel Coder