เชื่อว่าหลายคนคงรู้จักหรือเคยใช้บริการ Airbnb (ธุรกิจห้องพักอันดับต้น ๆ ของโลกที่ไม่มีอสังหาริมทรัพย์) จากบริษัท Tech Startup สู่ตลาด NASDAQ ที่มีมูลค่ากว่า 3 ล้านล้านบาท เบื้องหลังของ Platform เจ้า Airbnb เป็นอย่างไร บริษัทมีการปรับเปลี่ยนอย่างไร เพื่อให้ตอบรับกับการเติบโต มาดูกัน กับ กว่าจะมาเป็น Microservice Architecture ที่ลงตัว ของ Airbnb
คุณ Jessica Tai, Engineering Manager ของ Airbnb ได้พูดคุยกับ QCon เกี่ยวกับ Architecture ของ Airbnb ที่ถูกเปลี่ยนแปลงในตลอดหลายปีที่ผ่านมาและการพัฒนาของบริษัท Airbnb และเรื่องราวทั้งหมดถูกถ่ายทอดอยู่ในบทความนี้แล้ว
1. Monolith (2008 – 2017)
ในช่วงปีแรก ๆ นับตั้งแต่ Airbnb ก่อตั้งในปี 2008 จนถึงประมาณปี 2017 Airbnb ดำเนินการโดยใช้ Monolithic Architecture เป็นหลัก พัฒนาด้วย Ruby on Rails ซึ่งในตอนแรก การตั้งค่านี้สามารถให้บริการบริษัทได้เป็นอย่างดี โดยรองรับ Full-stack Engineers ที่สามารถจัดการ End-to-end Feature ภายใน Repository เดียวได้
อย่างไรก็ตาม เนื่องจาก Airbnb ยังมีการเติบโตอย่างรวดเร็ว และได้เข้าสู่ช่วงการเติบโตอย่างก้าวกระโดด ทำให้ทีมตระหนักถึงข้อจำกัดของ Monolith ได้อย่างชัดเจน Application เติบโตและซับซ้อนมากขึ้น นำไปสู่ความท้าทายในการปรับขนาดที่สำคัญ (เช่น การแบ่ง Codebase และมอบหมายให้ทีมที่แตกต่างกัน)
รู้หรือไม่? ในปี 2017 Airbnb ในประเทศไทย มีที่พักทั้งหมด 61,400 แห่ง
และเจ้าของที่พักมีรายได้รวมกันทั้งหมด 4 พันล้านบาทเลยทีเดียว
นอกจากนี้ หนึ่งในปัญหาที่สำคัญที่สุด คือ การ Deploy ที่ช้า ซึ่งเพิ่มระดับจากที่ต้องใช้เวลาหลายนาที เป็นหลายชั่วโมงหรือหนึ่งวัน ทำให้ส่งผลเสียต่อประสิทธิภาพการทำงานของ Developer อย่างรุนแรง ดังนั้น ปัญหาทั้งหมดที่กล่าวมานี้ มีอิทธิพลอย่างมากต่อการตัดสินใจของ Airbnb ที่จะเปลี่ยนไปใช้ Microservice Architecture
2. Microservices (2017 – 2020)
การจัดหมวดหมู่บริการ ทำให้การเปลี่ยนแปลงครั้งนี้ ถูกแบ่งออกเป็น 4 ประเภท ที่แตกต่างกัน ดังนี้
-
- บริการ Data Fetching: เพื่อ อ่าน/เขียน ข้อมูล
- บริการ Business Logic เพื่อรวมข้อมูลมาจากหลายแหล่ง
- Workflow สำหรับจัดการและประสานงานบริการต่าง ๆ
กลยุทธ์สำคัญในการเปลี่ยนแปลงครั้งนี้ คือ การมีเจ้าของดูบริการแต่ละบริการอย่างชัดเจน โดยมีทีมเฉพาะที่จะรับผิดชอบบริการแต่ละอย่าง การปรับโครงสร้างใหม่ครุ้งนี้นำไปสู่การจัดตั้งทีมที่เชี่ยวชาญมากขึ้น โดยย้ายจากแนวทางแบบ Full-stack ไปเป็นทีมที่โฟกัสในส่วนของ Backend และบริการข้อมูลเฉพาะ
ซึ่งแม้จะได้ประโยชน์จากความสามารถในการปรับขนาด และ Development ที่เร็วมากขึ้น แต่ Airbnb ก็ยังเผชิญกับความท้าทายใหม่ ๆ ในการจัดการความซับซ้อน และการพึ่งพาบริการต่าง ๆ มากมายหลังจากผ่านไปไม่กี่ปี และปัญหาหลักคือ การสร้าง End-to-end Feature ซึ่งพวกเขาจำเป็นต้องรู้จักบริการที่แตกต่างกัน ดังนั้น แต่ละทีมจึงต้องมีส่วนร่วม และทีมเหล่านั้นต้องมีลำดับความสำคัญที่เท่ากัน ซึ่งต้องใช้เวลาในการจัดการ
3. Micro + Macroservices (2020 จนถึงปัจจุบัน)
เพื่อตอบสนองต่อความท้าทายที่เกิดขึ้นเหล่านี้ ประมาณปี 2020 Airbnb จึงได้พัฒนากลยุทธ์เป็น Hybrid Model ที่ผสมผสาน Micro และ Macroservices เข้าด้วยกัน แนวทางนี้มีศูนย์กลางอยู่ที่การรวม API ผ่าน GraphQL Interface โดยมี Data Aggregator เป็นแกนหลัก (Macroservice) ส่วน Backend Services ได้รับการปรับโครงสร้างใหม่ เพื่อให้ Interact ผ่าน GraphQL Interface นี้ ปรับปรุง Data Flow และ Service Interactions ซึ่งหมายความว่า Backend Services จะได้รับข้อมูลจาก Aggregator Service (เรียกว่า Service Block) ซึ่งจะสื่อสารกับ Microservices อื่น ๆ นั้นเอง
Architecture ของ Airbnb ในปัจจุบัน
และทั้งหมดนี้ก็คือ กว่าจะมาเป็น Microservice Architecture ที่ลงตัว ของ Airbnb
เมื่อ หางาน IT ให้ ISM Technology Recruitment เป็นอีกหนึ่งตัวช่วย เพื่อให้คุณได้ “ชีวิตการทำงานในแบบที่คุณต้องการ” เพียงส่ง Resume มาที่นี่
ISM เชี่ยวชาญในธุรกิจ IT Recruitment & IT Outsourcing โดยเฉพาะ ได้เปิดทำการมาแล้วกว่า 30 ปี มีพนักงานทุกสายและทุกระดับทางด้าน IT ที่ได้ร่วมงานกับลูกค้าองค์กรใหญ่ที่มีชื่อเสียงและบริษัทข้ามชาติมากมาย