เมื่อ Twitter เปิด Open Source ให้เห็น Algorithms น่าสนใจมากๆ

Twitter เปิด open source algorithms ของตัวเองให้ดู น่าสนใจหลายจุดเลย (หลายตัวก็พอเดาได้ แต่นี่เป็นการยืนยันจากโค้ด) เช่น

  1. สัดส่วนของ following กับ follower มีผลกับ rank เช่น เราไปฟอลคนอื่นเยอะ แต่สักส่วนมีคนฟอลกลับน้อย เราจะถูกจัด rank ต่ำ
  2. สมาชิกแบบ Twitter Blue ได้รับสิทธิ์พิเศษในการ boost algorithm ต่างๆ
  3. อันนี้ กวนมากๆ คือ Twitter แบ่ง User ออกเป็น แค่ 4 กลุ่ม คือ
    • Power users
    • Democrat users
    • Republican users
    • @elonmusk
  4. การที่ Tweet เราไปอยู่ในแท็บ “For You” ของใครสักคน จะเกิดจากพฤติกรรมที่เขาคนนั้นเคยทำประมาณนี้
    • like/RT your tweet
    • click into your tweet & reply/stay there for >2 mins
    • check out your profile 👀
  5. มีจัดอันดับความน่าเชื่อถือ หรือชื่อเสียงของ user ใน twitter (Reputation Score) ซึ่งการถูกลดอันดับ จะเกิดจากมีประวัติ เหล่านี้
    • Getting blocked
    • Getting muted
    • Abuse reports
    • Spam reports
    • Unfollows (not as heavily penalized as the above 4, though)
Continue reading “เมื่อ Twitter เปิด Open Source ให้เห็น Algorithms น่าสนใจมากๆ” »

10 ข้อแนะนำ สำหรับการทำ Microservices ที่ดี (และ ทำ API ที่ดี)

เคยเขียนเรื่อง 6 ข้อที่จะบอกว่าระบบคุณเป็น Microservices หรือไม่ และมีประโยชน์อย่างไร นานแล้ว เพื่อบอกว่า Microservices ควรมีคุณสมบัติอย่างไรบ้าง แต่ค่อนข้าง Technical และเจาะจงกับ Microservices ไปหน่อย

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

Continue reading “10 ข้อแนะนำ สำหรับการทำ Microservices ที่ดี (และ ทำ API ที่ดี)” »

ทำไมถึงควรทำ Architecture Decision Record

ในโปรเจ็คที่มีขนาดใหญ่ มีคนเกี่ยวข้องเยอะ และมีผลกระทบเยอะในทุกการตัดสินใจ น่าจะเคยเจอการประชุมที่มีการถกเถียงกันเรื่องเหตุผลของผลลัพธ์ต่างๆ เช่น ทำงานไปเกือบเสร็จแล้ว แต่ลูกค้าหรือทีม Infrastructure ถามกลับว่า ทำไมเราตัดสินใจเลือก Architecture แบบนี้ หรือ Technology นี้? ตอนนั้นคิดอะไรอยู่? มีข้อจำกัดอะไร ถึงต้องเลือกแบบนี้?

สิ่งที่เราทำคือ ไปค้นหาหลักฐานการประชุม เช่น สมุดที่จดไว้ส่วนตัว หรือ Minute of Meeting ซึ่งในเอกสารเหล่านั้น มักเป็นการบันทึกเฉพาะผลลัพธ์ที่คุยกัน และน้อยคนมากที่จะจดละเอียดถึงเหตุผลของการตัดสินใจ

ดังนั้น เรามาทำความรู้จักกับ Architecture Decision Record (AR) กันดีกว่าครับ เพื่อใช้เป็นไกด์ไลน์บันทึกในการตัดสินใจเรื่องต่างๆ ที่มีประสิทธิภาพมาก

Continue reading “ทำไมถึงควรทำ Architecture Decision Record” »

E-Commerce ไม่ใช่แค่ทำเว็บหรือแอพ แต่มันคือ กระบวนการทำงาน

สมัยเอ๊าะๆ ที่เพิ่งเริ่มทำงาน TARAD.com ตอนนั้น E-Commerce ยังไม่ได้บูมมาก พี่ป้อม ภาวุธ CEO TARAD ยังต้องเดินสายทั่วไทยเพื่ออธิบายว่า E-Commerce คืออะไร การชำระเงินยังไม่น่าเชื่อถือมากนัก สัดส่วนโอนเงินทางธนาคารสูงถึง 80%, ระบบการขนส่งยังมีเพียงไปรษณีย์ไทยที่ใช้เวลา 5-10 วัน กว่าจะได้รับสินค้า, การส่งของก่อน จ่ายเงินทีหลัง (Buy Now Pay Later) หรือ ชำระเงินปลายทาง (Cash on Delivery) ยังถูกมองเป็นเรื่องบ้าบิ่น ไม่มีใครกล้าทำ

ผมจำได้ว่ายุคนั้น ทุกคนมอง E-Commerce เป็นของใหม่ ยังไม่ทำเงินอะไรมากนัก เป็นกิมมิกใหม่ทางเทคโนโลยีที่ใครทำก่อนก็ดูดี ทันสมัย ไม่ได้เป็นช่องทางขายหลักเฉกเช่นปัจจุบัน ดังนั้น การเช่า/ซื้อระบบสำเร็จรูป หรือทำระบบเองขึ้นมา ก็จะมีฟีเจอร์การขายไม่ซับซ้อนมาก ก็เปิดร้านขายของได้แล้ว (ฟีเจอร์ฮิตสมัยก่อน เช่น เลือกธีมสีได้ แปะรูป Gif วิ่งไปมา มีดาววิ่งตามเม้าส์ พอถึงคริสมาสต์ทำหิมะตกโปรยปราย)

Continue reading “E-Commerce ไม่ใช่แค่ทำเว็บหรือแอพ แต่มันคือ กระบวนการทำงาน” »

วิธีเก็บ Sensitive Data บน Kubernetes ด้วย Secrets

จากบล็อกที่แล้วได้ลองทำ Kubernetes บน Amazon EKS แบบง่ายๆ ด้วย eksctl แต่ก็ยังมีจุดที่กังวลอยู่ คือเรื่องการระบุ Sensitive Data เช่น Password, Token ต่างๆ ลงใน Environment Variable ที่ได้เขียนไว้ในไฟล์ Deployment YML

ซึ่งทาง Kubernetes เอง ได้ทำฟีเจอร์มารองรับการแก้ปัญหานี้แล้ว เป็น Kind ประเภท Secret นั่นเองครับ เลยขอบันทึกวิธีทำไว้สักหน่อย

Continue reading “วิธีเก็บ Sensitive Data บน Kubernetes ด้วย Secrets” »