The Data Side of Event Driven Architecture โดย Mark Richards

The Data Side of Event Driven Architecture โดย Mark Richards

เป็นอีกหนึ่ง Talk ที่ดี คุ้มค่าแก้การนั่งฟังครับ

เค้าเล่าได้เพลินดีว่าเวลาเราทำ Event-Driven Architecture (EDA) มันหน้าตาประมาณไหน แล้วการใช้ Pattern อย่าง Event Contract Patterns มีแนวคิดอย่างไร เราควรเลือกแบบไหน ซึ่งแน่นอนว่าไม่ว่าเลือกทางไหนก็จะต้องเจอ

Trade-off

เช่น เดียวกับการเลือก Database Topologies ว่าจะมีเครื่องเดียว มีแยกตาม Domain หรือแยกไปทุก Services เลย แต่ละแบบก็มี Trade-off เช่นเดียวกัน ต้องดูที่ Use Cases & Scenarios (Business) ว่าเราควรเลือกแบบไหนเพื่อแก้ปัญหา

ทีนี้ก็สนุกตรงที่ว่าเวลาทำ EDA ไปเรื่อย ๆ แล้วถ้าเราไม่ได้คอยระวังเรื่องการเรียกข้อมูลจากแต่ละ Services ที่ไม่ได้ผ่าน Event เช่น เรียก API ของ Service นั้นตรง ๆ เลย ซึ่งก็จะเกิด Synchronous Calls ขึ้น แล้วถ้ามีเยอะ ๆ เข้า สุดท้ายแล้วระบบเราจาก EDA ก็จะย้ายกลับไปเป็น Monolith ซะงั้น แถมวอดวายกว่าเดิม เพราะแยก Services ออกจากกันไปแล้ว..

เค้าก็เลยบอกว่าวิธีแก้ปัญหาแบบนี้ แทนที่จะเรียก API ของ Service ตรง ๆ ให้เกิด Synchronous Call แล้ว เรายังสามารถทำ EDA ได้อยู่คือให้ ทำ Data Replication หรือ In-Memory Replicated Caching ซึ่งบอกได้เลยว่าเวลาเอาไปทำจริงมันไม่ได้มีแค่เรื่อง Replicate ข้อมูลอย่างเดียว มันยังมีเรื่อง Operations ที่จะตามด้วยเช่นกันที่เราต้องคำนึงถึงว่าจะทำอย่างไรให้ทั้งระบบและข้อมูลมันมีความ (Eventually) Consistent ไปต่อได้อย่างยั่งยืน

ซึ่ง.. วิธีแก้ปัญหาที่ว่ามาด้านเราก็จะเห็นว่ามันมี Trade-off อีก! 😂 จะทำอะไรก็มี Trade-off ไปหมดเลย ซึ่งก็นั่นแหละครับ ชีวิตจริงก็เป็นแบบนั้น

แล้วเอาจริง ๆ ใน Talk นี้เราจะได้ยินแต่คำด้านบนนี้บ่อยครั้งมาก เราหนีไม่พ้นคำ ๆ นี้แน่ ๆ ตราบใดที่เรายังทำงานในสายงานด้านนี้กันอยู่ ดังนั้นเวลาเราจะตัดสินใจอะไรก็ทำให้แน่ใจว่าเราได้เอา Business มาประกบแล้ว เพื่อให้มั่นใจได้ว่าเราได้แก้ปัญหาทาง Business แล้วจริง ๆ สุดท้ายพอเลือกวิธีแก้ปัญหาแล้วก็อย่าลืมเขียน Architectural Decision Records ไว้ด้วยนะ 😎

สรุปว่าคำว่า Data Side ใน Talk นี้ของเค้าก็หมายถึงเรื่องแบบนี้แหละ เราต้องตระหนักไว้เสมอด้วยว่า EDA ไม่ได้เป็น Silver Bullet มันจะมีเรื่องที่ Challenges อีกเยอะเวลาที่เราหยิบมาทำจริง

โดยเฉพาะเรื่องข้อมูล

Read more

The Five Ideals

The Five Ideals

จากหนังสือ The Unicorn Project ในนั้นจะมีที่ปรึกษาเก่ง ๆ คนหนึ่งชื่อ Erik เป็นเหมือนเซ็นเซหาตัวยาก เดี๋ยวก็มา เดี๋ยวก็ไป ถ้าโชคดีก็จะเจอเค้าว่าง แล้วเค้าก็จะสอนอะไรที่สำคัญ ๆ แต่ฟังดูล้ำ ๆ และลึกซึ้ง

By Chokchai Phatharamalai
Communication, Reliability and Modern concepts - System Design, Simply Explained

Communication, Reliability and Modern concepts - System Design, Simply Explained

บทความนี้จะอธิบายพื้นฐานของ System Design โดยต่อยอดจากตัวอย่าง Gym Application เพื่อให้เห็นภาพว่า เมื่อระบบเริ่มเติบโตและถูกแยกออกเป็นหลาย Service แต่ละ Service จะสื่อสารและทำงานร่วมกันอย่างไร งานแบบไหนควรสื่อสารแบบ Synchronous งานแบบไหนควรประมวลผลแบบ Asynchronous รวมถึงอธิบาย Concept พื้นฐานต่าง ๆ ที่ควรรู้ เช่น API

By Boonsong Srithong
Race condition

Race condition

ผมกำลังอ่านหนังสือ The Unicorn Project ซึ่งเป็นนิยายเกี่ยวกับ developer สาวคนหนึ่งที่ใช้ชีวิตในองค์กรท่ามกลางกระแส digital disruption อ่านแล้วสนุกมาก เป็นเรื่องที่ตื่นเต้น และหลาย ๆ dynamic ที่เกิดขึ้นก็คล้ายกับที่ผมพบเจอในบริษัทซอฟต์แวร์ เลยทำให้

By Chokchai Phatharamalai
Distributed Systems Concepts - System Design, Simply Explained

Distributed Systems Concepts - System Design, Simply Explained

ในช่วงแรก Product เราสามารถออกแบบระบบให้อยู่ใน Server และ Database เดียวกันได้ แต่เมื่อระบบโตขึ้น มีผู้ใช้งานเพิ่มขึ้น ข้อมูลเยอะขึ้น ระบบเริ่มทำงานช้าลดเรื่อยๆ สิ่งที่หนีไม่ได้คือการ Decomposition Service ไปเป็น Distributed System เช่น Member Service, Booking Service, Payment

By Boonsong Srithong