บริษัทสุธีการจำ, CAP Theorem, และ Eventual Consistency

Photo by Joanna Kosinska on Unsplash

หัวข้อด้าน Distributed System เป็นอะไรที่สนุก แต่เข้าใจยากมาก

หนึ่งในเรื่องที่ผมอ่านหลายรอบกว่าจะเก็ต ก็คือเรื่องของ CAP Theorem ซึ่งเป็นแนวคิดในการ Trade-off คุณสมบัติของ Distributed System ที่เราออกแบบ

“CAP” เป็นตัวย่อจาก Consistency, Availability, Partition Tolerant โดย Theorem นี้ได้กล่าวไว้ว่า คุณไม่มีทางที่่จะออกแบบระบบโดยมีคุณสมบัติ 3 ข้อนี้ พร้อมกัน อย่างเก่งก็ได้แค่ 2 ใน 3

แต่ทำไมถึงเป็นอย่างนั้นล่ะ?

วันนี้เราจะมาทำความเข้าใจกับเจ้า Theorem นี้กัน ผ่านการเรื่องราวของบริษัท “สุธีการจำ” !!

การออกแบบ Service API ให้เป็น Idempotent

Photo by William Iven on Unsplash

ใครเคยเรียกใช้งานเซอร์วิซครั้งเดียว (เช่น การโอนเงิน สั่งซื้อของ ฯลฯ) แล้วเจอ Transaction ตัดซ้ำสองครั้งไหมครับ?

ถ้าใช่ คุณเจอปัญหาเรื่อง Idempotent เข้าให้แล้วล่ะ

เราเคยคุยกันในเรื่องของRetryไปแล้ว ว่าอาจจะถล่มเซอร์วิซตัวเองได้ หากไม่จัดการให้ดี

มานั่งตรึกตรองดูอีกที จริงๆแล้วผมลืมอีกคอนเซ็บหนึ่งที่สำคัญมากเวลาเราใช้ Retry นั่นก็คือเรื่อง Idempotent ซึ่งเป็นที่มาของ เคส Transaction เกิดขึ้นสองที

บทความนี้จะเริ่มต้นจากต้นตอของปัญหานี้ก่อน เพื่ออธิบายให้เห็นภาพว่าเกิดอะไรขึ้น และเสนอวิธีการแก้ปัญหาในตอนท้ายครับ

การออกแบบ Service API ให้ Backward-Compatible

Photo by Iker Urteaga on Unsplash

“APIs, like diamonds, are forever” – Xebia Essentials

เรานิยมเลือกใช้เพชรในแหวนแต่งงาน เพื่อแสดงความเป็นนิรันดร์

เวลาออกแบบ Service API ผมแนะนำให้ใส่ความโรแมนติกนี้ลงไปหน่อย ลองคิดว่านี่แหละคือแหวนแต่งงาน ระหว่างคุณและผู้ใช้เซอร์วิซของคุณ ที่จะอยู่ต่อไปตลอดจนชั่วเซอร์วิซสลาย

วิธีการวัด Technical Skill ในการสัมภาษณ์งาน

ในบทความที่แล้ว เราคุยกันในเรื่อง Soft skill ของผู้สมัครด้วย Behavioral Interview

บทความนี้จะพูดถึงรูปแบบในการวัด Technical Skill กันบ้าง โดยผมจะยกตัวอย่างวิธีการวัด Technical Skill ต่างๆที่ผมเคยเจอมา ซึ่งแต่ละแบบก็จะมีข้อดีข้อเสียแตกต่างกัน

Photo by Helloquence on Unsplash

สัมภาษณ์งานด้วย Behavioral Interview

Photo by Alejandro Escamilla on Unsplash

ในบทความที่แล้ว เราคุยกันไปในเรื่องกระบวนการสัมภาษณ์งานโดยรวม (Process)

สำหรับบทความนี้ เราจะมาเจาะลึกลงไปในเรื่องการถามคำถามกัน

โดยหลักๆแล้ว คำถามในการสัมภาษณ์งานโปรแกรมเมอร์ จะวัดเกณฑ์สองด้าน คือ Technical skill และ Soft skill

บทความนี้จะคุยกันเรื่องการวัด Soft skill ด้วยเทคนิคที่เรียกว่า Behavioral Interview ครับ