เราเคยประสบปัญหาที่น่าสนใจเมื่อไม่กี่ปีที่ผ่านมา เราเป็นบริษัทที่ทำงานจากระยะไกลอย่างเต็มรูปแบบ โดยใช้ซอฟต์แวร์ทั้งหมดบนระบบคลาวด์ และเรามีชุดแอปพลิเคชัน Spring Boot ที่ทำงานบนคอนเทนเนอร์โดยใช้ Infrastructure as Code แต่เราต้องการความคล่องตัวทางธุรกิจ ตลาดแรงงานทั่วโลกเปลี่ยนแปลงอย่างรวดเร็ว และมีความต้องการผลิตภัณฑ์ใหม่ๆ อยู่เสมอ เราต้องหาวิธีรักษาความเป็นผู้นำในอุตสาหกรรมนี้ไว้ให้ได้​​ 

เราเป็นบริษัทเทคโนโลยีที่มีกลยุทธ์ที่กล้าหาญ​​ 

ใน 2022 เราได้สร้าง ADR (Architecture Decision Record) ที่ระบุว่า "serverless-first และ containers-as-needed" และจุดประกายการถกเถียงในทีมวิศวกรรมเกือบ 40 ทีม​​ 

ก่อนอื่นเรามาอธิบายคำศัพท์บางคำกันก่อน​​ 

Serverless-first ไม่ได้หมายถึงแค่ฟังก์ชันในรูปแบบบริการ (functions-as-a-service) เท่านั้น แต่ยังหมายถึงกลุ่มบริการจัดการจากผู้ให้บริการคลาวด์ที่:​​  

  • ลดต้นทุนการดำเนินงานโดยไม่ต้องบริหารจัดการโครงสร้างพื้นฐาน​​ 
  • ปรับขนาดได้ตามต้องการ รวมถึงการปรับขนาดให้เป็นศูนย์เพื่อให้มีความยืดหยุ่นอย่างเต็มที่​​ 
  • ใช้ระบบราคาแบบยืดหยุ่น (จ่ายเฉพาะส่วนที่คุณใช้จริง)​​  

ที่ G-P แนวคิด serverless-first หมายถึงการที่เราใช้ AWS Lambda, EventBridge, Step Functions, Fargate, SQS, SNS, ส่วนต่อประสานโปรแกรมประยุกต์ Gateway, S3, DynamoDB และอื่นๆ​​ 

แนวคิด Serverless-first หมายความว่า เมื่อเราเลือกโซลูชันสำหรับการประมวลผล การจัดเก็บข้อมูล การส่งข้อความ หรืออื่นๆ ที่คล้ายกัน เราต้องการให้ทีมเริ่มต้นด้วยตัวเลือกแบบ Serverless ข้อสำคัญ: หากบริการแบบไร้เซิร์ฟเวอร์ไม่ตรงตามความต้องการ ทีมควรเปลี่ยนไปใช้บริการที่มีประสิทธิภาพสูงกว่า ซึ่งต้องใช้การลงทุนด้านการดำเนินงานมากกว่า​​ 

“คอนเทนเนอร์ตามความจำเป็น” ชี้แจงว่า เซิร์ฟเวอร์เลสเบิร์ฟเวอร์ก่อน ไม่ได้หมายถึงแบบไร้เซิร์ฟเวอร์เท่านั้น มีบางครั้งที่เราต้องการคอนเทนเนอร์ (เช่น การติดตั้ง ผลิตภัณฑ์ซอฟต์แวร์ COTS) - และไม่เป็นไร​​ 

กลยุทธ์ด้านเทคโนโลยีที่ให้ความสำคัญกับลูกค้าเป็นอันดับแรก​​ 

เราดำเนินการอย่างรวดเร็วและคล่องตัวเพื่อตอบสนองความต้องการของลูกค้าและผู้ใช้งานของเรา บริการต่างๆ เช่น Lambda, S3 และ DynamoBD มีความยืดหยุ่นและรวดเร็วอย่างเหลือเชื่อ ด้วยการถ่ายโอนงานที่ซ้ำซ้อนและไม่แตกต่างกันออกไป เราจึงสามารถใช้เวลามากขึ้นในการสร้างฟีเจอร์สำหรับผู้ใช้ แทนที่จะเสียเวลาไปกับการกำหนดค่าโครงสร้างพื้นฐานทั่วไป​​ 

หลักการสำคัญของ G-P คือ "คุณสร้างมันขึ้นมา คุณก็ต้องบริหารมัน" ทีมของเราเป็นเจ้าของซอฟต์แวร์ของตนเอง ดังนั้น เราไม่ได้แค่โยนซอฟต์แวร์ข้ามกำแพงไปให้ทีม DevOps เท่านั้น​​  

ข้อดีของ “การออกแบบโดยใช้เซิร์ฟเวอร์less เป็นหลัก”​​ 

สถาปัตยกรรมแบบ Serverless นั้นขับเคลื่อนด้วยเหตุการณ์โดยเนื้อแท้​​ 

สถาปัตยกรรมของเราทำงานโดยอาศัยเหตุการณ์เป็นตัวขับเคลื่อนอย่างสมบูรณ์ ด้วยการใช้ EDA (Event-Driven Architecture) เราสามารถขยายขนาดทั้งองค์กรและซอฟต์แวร์ของเราได้ Serverless บังคับให้เราต้องจำกัดขอบเขตผลกระทบให้แคบลง และสื่อสารกันในรูปแบบคลาวด์เนทีฟอย่างเต็มรูปแบบผ่านทางเหตุการณ์ต่างๆ​​ 

ข้อจำกัดที่เอื้ออำนวย​​ 

ในฐานะแพลตฟอร์มการจ้างงานทั่วโลก เราให้ ความสำคัญกับกฎระเบียบ อย่างจริงจัง โครงสร้างพื้นฐานระบบคลาวด์ของเราได้รับการออกแบบอย่างดี และเราใช้กลยุทธ์แบบหลายบัญชีที่แยกปริมาณงานและทำให้ระบบคลาวด์เป็นแบบอัตโนมัติตามกฎหมาย Serverless ช่วยให้เราบังคับใช้มาตรฐานสูงโดยควบคุมวิธีที่เราจัดหาทรัพยากรคลาวด์​​ 

มอบหมายงานให้ผู้อื่น​​ 

ผู้ให้บริการคลาวด์ของเราเป็นผู้ดูแลจัดการบริการเซิร์ฟเวอร์เลสของเรา ชุดส่วนประกอบพื้นฐานเพียงชุดเดียว — ที่ผสานรวม รักษาความปลอดภัย ปรับแต่ง เปิดใช้งาน และบำรุงรักษาโดย AWS — ช่วยให้เราสามารถมุ่งเน้นไปที่การสร้างมูลค่าเพิ่มให้กับลูกค้าได้มากขึ้น​​ 

เวิร์กโหลดที่มีโครงสร้างที่ดี​​ 

ทุกเวิร์กโหลดที่เราสร้างขึ้นจะได้รับการตรวจสอบโดยใช้กรอบการทำงาน AWS Well-Architected Framework เราให้ความสำคัญกับขนาด ความปลอดภัย ความน่าเชื่อถือ และการเพิ่มประสิทธิภาพด้านต้นทุน เพื่อให้มั่นใจว่าเราไม่เพียงแต่จะปฏิบัติตาม แต่ยังเหนือกว่าข้อตกลงระดับบริการ (SLA) ของเราด้วย สิ่งนี้ช่วยเสริมศักยภาพให้กับทีมวิศวกรรมของเรา ในขณะที่เราพัฒนาอย่างต่อเนื่องไปพร้อมกับสภาพแวดล้อมคลาวด์​​  

เกี่ยวกับทีมงานของเรา​​ 

กลยุทธ์ด้านเทคโนโลยีของเรามีความทะเยอทะยาน และนั่นทำให้มันมีความท้าทาย วิศวกรหลายคนยังไม่เคยทำงานในสถาปัตยกรรมแบบไร้เซิร์ฟเวอร์ (หรือสถาปัตยกรรมแบบกระจายศูนย์) มาก่อน การเปลี่ยนไปใช้สถาปัตยกรรมแบบไร้เซิร์ฟเวอร์นั้นไม่ใช่เรื่องง่าย และเรามองหาวิศวกรที่พร้อมเรียนรู้ คิดการณ์ไกล และปรับตัวได้อย่างรวดเร็ว​​ 

วิศวกรบางคนไม่แน่ใจเกี่ยวกับคำว่า "เซิร์ฟเวอร์เลส" (ใช่ เราทราบว่ามีเซิร์ฟเวอร์อยู่) เพราะแนวทางนี้ไม่ใช่แค่การเขียนโค้ดในรูปแบบฟังก์ชันเท่านั้น กลยุทธ์ของเราต้องการแนวทางแบบองค์รวมในการปฏิบัติตามหลักการพื้นฐานของคลาวด์เนทีฟ​​ 

ผลลัพธ์​​ 

เราได้ก้าวหน้าอย่างพิเศษในสองปี การปรับปรุงให้ทันสมัยมีประโยชน์มากมาย (ดูบทความของเราเกี่ยวกับ สกุลเงินโบนัสภาคบังคับ / มูลค่าทางธุรกิจที่ทราบของการปรับให้ทันสมัยบนคลาวด์) โดยเฉพาะเราได้สังเกตสิ่งต่อไปนี้:​​ 

1. ความเร็ ว: วิธีที่เราแบ่งระบบของเราทำให้ทีมและผลิตภัณฑ์สามารถสร้างสรรค์นวัตกรรมและพัฒนาได้อย่างอิสระ สิ่งนี้มีผลกระทบอย่างมากต่อความคล่องตัวของธุรกิจ​​ 

2. การปฏิบัติตามข้อกำหนด: เราใช้เงินโบนัสภาคบังคับ Well-Architected Framework เพื่อตรวจสอบปริมาณงานทั้งหมด เนื่องจากเราใช้โบนัสภาคบังคับ Managed Services จำนวนมาก เราจึงสามารถไว้วางใจในความเป็นเลิศในการปฏิบัติงานและเริ่มต้นจากสถานที่ที่มีคุณภาพสูง​​ 

3. การคิดระบ บ: เราต้องสร้างมาตรฐานกระบวนการหลายอย่างของเราเพื่อให้เราสามารถเหตุผลเกี่ยวกับระบบ ความน่าเชื่อถือ และมูลค่าทางธุรกิจ เราไม่ใช้เวลาทำงานกับส่วนประกอบที่มีมูลค่าต่ำ​​ 

4. นวัตกรรม: Serverless หมายถึงทุกสิ่งทุกอย่างเป็นส่วนต่อประสานของผู้คน ข้อจำกัดที่บังคับนี้ต้องใช้แนวทางการดำเนินการเป็นอันดับแรก เมื่อเรามองตัวเองในฐานะแพลตฟอร์ม เราจะสามารถก้าวไปสู่ระดับนวัตกรรมใหม่ได้โดยการเชื่อมต่อระบบต่างๆ ได้อย่างง่ายดายผ่าน API เช่น การเชื่อมต่อ G-P Gia™ เข้ากับฐานความรู้ใหม่​​ 

5. กรรมสิทธิ์: โบนัสภาคบังคับเป็นเจ้าของโครงสร้างพื้นฐานของเรา แต่เราเป็นเจ้าของโดเมนธุรกิจของเรา เซิร์ฟเวอร์เบิร์ฟเวอร์FIRST ด้วยการออกแบบที่ขับเคลื่อนด้วยโดเมนทำให้เราต้องมุ่งเน้นไปที่ปัญหาทางธุรกิจ สิ่งนี้ทำให้เจ้าของความสามารถชัดเจน​​ 

การออกแบบระบบแบบ Serverless-first ไม่ได้เร็วกว่าเสมอไป แต่มีประโยชน์มากกว่า เราให้ความสำคัญกับความเร็วของระบบมากกว่าความเร็วของนักพัฒนาแต่ละคน แนวคิด Serverless-first ไม่ได้เน้นการใช้ฟังก์ชันมากนัก แต่เน้นความคิดที่ว่า “โค้ดคือภาระ” ระบบนี้คือสินทรัพย์” ยิ่งเราเขียนโค้ดน้อยลงเท่าไหร่ เราก็ยิ่งมีเวลาพิจารณาและปรับแต่งระบบธุรกิจที่เรากำลังสร้างมากขึ้นเท่านั้น​​ 

เมื่อเราเล่าเรื่องราวของเราให้ฟัง คุณจะเห็นได้อย่างชัดเจนถึงความเร็วในการทำงานของเรา ซึ่งเป็นผลโดยตรงจากแนวคิด serverless-first โปรดติดตามต่อไป​​