แนวทางในการออกแบบระบบงานแบบ distributed นั้นเรื่องของ Resilience pattern เป็นความรู้พื้นฐานที่สำคัญมาก ๆเพื่อให้ระบบมีความเสถียรและคงทนต่อความผิดพลาดมากยิ่งขึ้นทั้ง backoff, timeout, retry, idempotency และ circuit breaker แต่ถ้าจัดการไม่ดี ก็อาจจะทำให้เกิดปัญหาตามมาได้ยกตัวอย่างเช่น การ Retry หรือ ทำซ้ำ
Read More…
ปัญหาที่น่าสนใจเกี่ยวกับการเก็บข้อมูลการค้นหาว่าในแต่ละวันมีการค้นหาคำไหน จำนวนเท่าไรจึงลองฝึกออกแบบ key-value ใน redis ดูหน่อย ว่าต้องทำอย่างไรบ้าง ?โดยมีเป้าหมายเพื่อ มาเริ่มออกแบบเล่น ๆ กันหน่อย
Read More…
เห็นทาง Microsoft ได้ปล่อย TypeSpec ออกมาเป็นภาษาในการออกแบบ API (Application Programming Interface)อีกทั้งยังทำงานร่วมกับ OpenAPI, JSON Schema และ Protobuf ได้รูปแบบของภาษานั้นจะคล้าย ๆ กับ TypeScript และ C# นั่นเอง
Read More…
หลังจากการอ่านบทความเรื่อง Redesigning Pinterest’s Ad Serving Systems with Zero Downtimeเป็นการ redesign และ rewrite ระบบ Ads-serving platform ของ Pinterestเป็นระบบที่สร้างรายได้ให้บริษัทอย่างมากแต่ระบบที่ใช้งานมี technical debt เยอะ และ ซับซ้อนสูงมาก ๆทำให้ระบบมีปัญหาต่อการ scale อย่างมาก ล่มบ่อยรวมทั้ง business goal ที่เยอะขึ้น
Read More…
เห็นเครื่องมือชื่อว่า DrawDBเป็น editor สำหรับออกแบบ database นั่นเองสามารถใช้งานผ่านระบบ web application ได้เลยมี user interface ที่ใช้งานง่ายดี และ ฟรีด้วยสามารถนำมาติดตั้งที่ server ของเราได้เองเลย
Read More…
วันนี้มีโอกาสได้เข้าร่วมฟัง meetup เรื่อง MongoDB Data Modelingจากกลุ่ม MongoDB Thailand User Groupซึ่งมีหัวข้อต่าง ๆ เหล่านี้ ทำการสรุปจากสิ่งที่ได้ฟังดังนี้มาเริ่มกันเลย
Read More…
จากบทความเรื่อง Law of Demeter (LoD) ในการเขียน code นั้นเพื่อช่วยลด coupling ระหว่าง classหรือเป็นแนวคิดที่ช่วยให้เรามีความรู้เกี่ยวกับปลายทางที่จะเรียกให้น้อยลงทำให้มีอิสระมากยิ่งขึ้น โดยถ้าเรานำแนวคิดนี้ มาใช้กับการแยก service ด้วยก็น่าจะได้ผลดีเช่นกันนะ
Read More…
ปัญหาที่มักพบเจอบ่อยมาก ๆ ของระบบงานคือการแย่งใช้งาน resource ต่าง ๆ ที่มีจำกัด พร้อมกันผลที่ตามมาคือ ระบบงานทำงานไม่ถูกต้องเช่น เกิดการทำงานซ้ำ เป็นต้นหรือเราจะเรียกว่า race condition
Read More…
อ่านไปเจอเรื่อง Path to Production พบว่าน่าสนใจมาก ๆ โดยเป็น workshop หรือ แนวทางในการทำงานร่วมกันที่ทำงานเป็นแบบ cross functional team/peopleนั่นคือ เป็นการทำงานข้ามแผนกหรือส่วนการทำงานมากมาย
Read More…
จากกลุ่มสมาคม programmer นั้น มีคำถามเกี่ยวกับการเก็บข้อมูลรูปว่าทำอย่างไรดี โดยทางเลือกที่แนะนำกันมา ประกอบไปด้วย ทำการ encode ข้อมูลรูปก่อน จากนั้นค่อยเก็บ เก็บเป็น binary ลง database เช่น BLOB (Binary Large OBject) เก็บรูปลง disk แล้วเก็บเฉพาะ path และชื่อรูปลง database ใช้งาน CDN (Content Delivery Network)
Read More…