เหตุใดเราจึงเปลี่ยนไปใช้คอมพิวเตอร์แบบไร้เซิร์ฟเวอร์เพื่อปรับใช้ Custom Builds
เผยแพร่แล้ว: 2018-11-22ในฐานะส่วนหนึ่งของความมุ่งมั่นของเราที่จะส่งเสริมนักการตลาดด้านประสิทธิภาพในการ ทำสิ่งต่างๆ ได้มากขึ้น ด้วย Less, Worry Free ทีมงานที่ TUNE มักจะค้นหาวิธีใหม่ๆ ในการให้บริการลูกค้าของเราอยู่เสมอ ในกรณีนี้ ทีมวิศวกรรมโซลูชันของเราได้ค้นพบเทคโนโลยีที่ช่วยลดความยุ่งยากในการปรับใช้และสนับสนุนบิลด์แบบกำหนดเองบนแพลตฟอร์มของเรา ด้วยเหตุนี้ พวกเขาจึงสามารถใช้เวลามากขึ้น (และใช้เงินน้อยลง) ในการทำงานกับลูกค้าจำนวนมากขึ้นเพื่อสร้างโซลูชันที่พวกเขาต้องการ
ที่ TUNE เราภาคภูมิใจในการนำเสนอแพลตฟอร์มการตลาดที่มีประสิทธิภาพและยืดหยุ่น ซึ่งช่วยให้เครือข่ายและผู้โฆษณาสามารถจัดการแคมเปญการตลาดดิจิทัล ความสัมพันธ์กับผู้เผยแพร่โฆษณา การจ่ายเงิน และอื่นๆ ได้ทันทีโดยไม่ต้องเขียนโค้ดแม้แต่บรรทัดเดียว . แต่ในบางครั้ง เช่นเดียวกับระบบ SaaS ที่มีการจัดการเต็มรูปแบบอื่นๆ ลูกค้าของเราต้องการการกำหนดค่า ฟังก์ชันการทำงาน หรือการผสานการทำงานแบบกำหนดเองที่สามารถทำได้โดยการพับแขนเสื้อของเราและเริ่มต้นโปรแกรมแก้ไขโค้ดเก่า เมื่อเร็วๆ นี้ เราเปลี่ยนไปใช้เทคโนโลยีใหม่ที่เปลี่ยนวิธีที่เราสร้างโซลูชันเหล่านี้: การประมวลผลแบบไร้เซิร์ฟเวอร์
ในโพสต์นี้ ฉันจะพูดถึงปัญหาที่เราพบเกี่ยวกับการพัฒนาแบบกำหนดเอง ขั้นตอนที่เราใช้เพื่อตั้งค่ากระบวนการสร้างแบบไร้เซิร์ฟเวอร์ และวิธีการใหม่นี้แก้ปัญหาความท้าทายด้านต้นทุนและขนาด
ความท้าทาย: ให้ทันกับความต้องการโซลูชันแบบกำหนดเอง
เมื่อเราเริ่มต้นทีม Solutions Engineering ที่ TUNE เราถือว่าแต่ละบิลด์ของลูกค้าเป็นบิลด์ที่แยกจากกัน บิลด์เหล่านี้ส่วนใหญ่มีองค์ประกอบส่วนหน้า ซึ่งโดยปกติแล้วจะถูกปรับใช้เป็นเพจที่กำหนดเองบนแพลตฟอร์มของเรา และส่วนประกอบส่วนหลังที่ประกอบด้วยเซิร์ฟเวอร์ ฐานข้อมูล และโครงสร้างพื้นฐานอื่นๆ ที่จำเป็นในการทำให้เซิร์ฟเวอร์ทันสมัยอยู่เสมอ - วันที่และการดำเนินงาน
ในตอนแรก วิธีการนี้ได้ผลสำหรับเรา การมีทีมเล็กๆ น้อยๆ ที่มีโครงสร้างแบบกำหนดเองที่ซับซ้อนไม่กี่ขั้นตอน วิธีการของเราในการจัดเตรียมและกำหนดค่าเซิร์ฟเวอร์ที่แตกต่างกันสำหรับแต่ละบิลด์จึงได้ผลสำหรับเรา ทำให้เราสามารถสร้างสรรค์ประสบการณ์อันน่าทึ่งให้กับลูกค้าของเรา
แต่เมื่อจำนวนบิลด์เพิ่มขึ้น เราก็เริ่มพบปัญหา:
- เซิร์ฟเวอร์มากเกินไป! อย่างที่คุณจินตนาการได้ การจัดเตรียมอย่างน้อยสองกล่องต่อบิลด์ทำให้เรามีเซิร์ฟเวอร์มากเกินไป จำนวนเซิร์ฟเวอร์และความยุ่งยากทั้งหมดที่เกิดขึ้น (เช่น การอัปเดตความปลอดภัยและการสำรองข้อมูล) ทำให้เราเสียเวลามากกว่าที่เราต้องการยอมรับ
- เก็บเซิร์ฟเวอร์เหล่านั้นไว้ เนื่องจากแต่ละเซิร์ฟเวอร์เป็นเอนทิตีของตนเอง เรามีหน้าที่รับผิดชอบในการตรวจสอบให้แน่ใจว่าแต่ละเซิร์ฟเวอร์พร้อมใช้งานและทำงานได้เสมอ
- PHP ไม่ใช่สำหรับฉัน งานสร้างของเราส่วนใหญ่หมุนจากอิมเมจ Docker PHP พื้นฐาน แต่เมื่อทีมของเราเติบโตขึ้น เรารู้ว่าการบังคับให้ผู้คนเขียนบิลด์ของลูกค้าใน PHP 5.0 เมื่อพวกเขาเป็นวิซาร์ด Python นั้นไม่สมเหตุสมผลเลย
- นี่ก็แพงขึ้นเรื่อยๆ เมื่อเซิร์ฟเวอร์ทั้งหมดของเราปรับใช้บน ec2/RDS เราเริ่มเห็นค่าใช้จ่ายรายเดือนจำนวนมาก
- ปลอดภัยไว้ก่อน. เนื่องจากบริการเหล่านี้จัดการข้อมูลลูกค้าที่มีความละเอียดอ่อน เราจึงต้องจัดเตรียมวิธีการตรวจสอบสิทธิ์สำหรับ URL สาธารณะของเราเพื่อให้มั่นใจในความปลอดภัยของข้อมูลนั้น
- Crons นั้นแข็งแกร่ง บริการแบ็คเอนด์จำนวนมากประกอบด้วยสคริปต์ cron และเราไม่มีทางจัดการสิ่งเหล่านี้ได้อย่างมีประสิทธิภาพ
เมื่อเผชิญกับความท้าทายเหล่านี้ เราทราบดีว่าเราต้องหาวิธีที่ง่ายกว่าและคุ้มค่ากว่าในการจัดหาฟังก์ชันแบ็คเอนด์ให้กับลูกค้าของเรา แต่หลังจากการถกเถียงกันอย่างหนักและยังไม่มีผู้นำที่ชัดเจนในการแก้ปัญหา เราก็เริ่มไม่มีความคิด (นอกจากนี้ ด้วยความต้องการบิลด์คัสตอมใหม่ๆ ที่เพิ่มขึ้นอย่างบ้าคลั่ง เวลาไม่ได้เข้าข้างเราแน่นอน)
วิธีแก้ไข: การประมวลผลแบบไร้เซิร์ฟเวอร์สู่หน่วยกู้ภัย
หากคุณไม่เคยได้ยินเกี่ยวกับการ ประมวลผลแบบไร้เซิร์ฟเวอร์ คุณ อาจสงสัยในสิ่งเดียวกับที่เราเคยได้ยินเกี่ยวกับมันเป็นครั้งแรก คุณจะรันโค้ดโดยไม่มีเซิร์ฟเวอร์ได้อย่างไร? (อย่ากังวลไป ความเข้าใจพื้นฐานเกี่ยวกับการเขียนโปรแกรมของคุณยังคงถูกต้อง และเราไม่ได้ใช้ Happy Hour พิเศษก่อนที่จะเขียนสิ่งนี้)
“ไร้เซิร์ฟเวอร์” เป็นคำศัพท์ที่สับสนมากสำหรับเทคโนโลยีใหม่ เพราะว่า — อย่าเพิ่งงี่เง่า — ยังมีเซิร์ฟเวอร์ที่รันโค้ดอยู่อย่างแน่นอน แล้ว เซิร์ฟเวอร์ไร้เซิร์ฟเวอร์ คือ อะไรกันแน่ ?
การประมวลผลแบบไร้เซิร์ฟเวอร์เป็น รูปแบบการดำเนินการ คอมพิวเตอร์ บนคลาวด์ซึ่งผู้ให้บริการคลาวด์ทำหน้าที่เป็นเซิร์ฟเวอร์ ซึ่งจัดการการจัดสรรทรัพยากรเครื่องแบบไดนามิก – วิกิพีเดีย
โซลูชันระบบคลาวด์แบบไร้เซิร์ฟเวอร์ช่วยให้คุณสร้างและเรียกใช้แอปพลิเคชันและบริการโดยไม่ต้องคำนึงถึงความยุ่งยากที่เกี่ยวข้องกับเซิร์ฟเวอร์ โดยพื้นฐานแล้ว การประมวลผลแบบไร้เซิร์ฟเวอร์ช่วยให้คุณทำสิ่งที่คุณทำได้ดีที่สุด นั่นคือ เขียนโค้ด
กระบวนการตั้งค่าแบบไร้เซิร์ฟเวอร์
เพื่อแสดงส่วนสำคัญว่าเทคโนโลยีไร้เซิร์ฟเวอร์ทำงานอย่างไร เราจะอธิบายขั้นตอนต่างๆ ที่เราใช้ในการตั้งค่าฟังก์ชันนี้
หมายเหตุ: มีผู้ให้บริการระบบคลาวด์หลายรายที่มีฟังก์ชันแบบไร้เซิร์ฟเวอร์ ในตัวอย่างนี้ เราใช้ AWS Lambda
- ขั้นแรก ให้สร้างฟังก์ชัน Lambda ใหม่และเลือก " Blueprints " จากนั้นพิมพ์ “ http ” ในช่องคีย์เวิร์ด และเลือก Python หรือ Node microservice-http-endpoint (พิมพ์เขียวเป็นบล็อกโค้ดที่สร้างไว้ล่วงหน้าเพื่อให้การพัฒนาเร็วขึ้น มันยอดเยี่ยมขนาดไหน) เมื่อคุณเลือกได้แล้ว ให้คลิก " กำหนดค่า "
- เพิ่มชื่อฟังก์ชันและบทบาท จากนั้นเลือก ทริกเกอร์ API Gateway พร้อมตัวเลือกความปลอดภัย “ Open with API Key ” เกตเวย์ API นี้จะจัดเตรียม URL สาธารณะที่จะเรียกใช้ฟังก์ชัน Lambda ของคุณ การเพิ่มคีย์ API ให้วิธีการรับรองความถูกต้อง ซึ่งแนะนำเป็นอย่างยิ่ง
- เมื่อคุณสร้างฟังก์ชันแล้ว คุณสามารถกำหนดค่าโค้ดของคุณได้ อย่างที่คุณเห็น พิมพ์เขียวได้ให้จุดเชื่อมต่อที่ยอดเยี่ยมแก่คุณแล้ว ซึ่งช่วยให้คุณโต้ตอบกับ ตารางไดนาโม ได้ (หากคุณต้องการเพิ่มฐานข้อมูล) สิ่งที่อยู่ภายใต้ lambda_handler จะถูกดำเนินการเมื่อโหลด URL สาธารณะ เนื่องจากเรากำลังเพิ่มฐานข้อมูลด้วย ให้ไปที่ไดนาโมและสร้างฐานข้อมูล
- เมื่อสร้างตารางไดนาโมแล้ว ให้เรียกใช้ฟังก์ชัน Lambda นี้จาก URL สาธารณะ กลับไปที่ฟังก์ชันของคุณแล้วคลิกไอคอน " API Gateway " ที่ด้านบน คุณควรเห็นว่ามีการสร้างปลายทางและคีย์ API สำหรับคุณแล้ว
- ตอนนี้เปิดเทอร์มินัลแล้วเพิ่มคีย์ API ใต้ส่วนหัว " x-api-key" จากนั้นเพิ่มชื่อตารางที่คุณสร้างขึ้นภายใต้พารามิเตอร์สตริงข้อความค้นหา TableName
แค่นั้นแหละ! ตอนนี้คุณมีระบบแบ็คเอนด์ที่ใช้งานได้และปลอดภัยซึ่งเชื่อมต่อกับฐานข้อมูล ทั้งหมดใช้เวลาเพียงห้าขั้นตอนง่ายๆ
คอมพิวเตอร์ไร้เซิร์ฟเวอร์จัดการกับความท้าทายของเราอย่างไร
ตอนนี้เราได้แสดงให้คุณเห็นถึงวิธีตั้งค่าบิลด์แบบไร้เซิร์ฟเวอร์แล้ว มาดูกันว่าโมเดลบนคลาวด์นี้มีผลอย่างไรกับรายการตรวจสอบปัญหาของเรา
- เซิร์ฟเวอร์มากเกินไป! Serverless … หมายถึงไม่มีเซิร์ฟเวอร์อีกต่อไปใช่ไหม
- เก็บเซิร์ฟเวอร์เหล่านั้นไว้ เนื่องจากการประมวลผลแบบไร้เซิร์ฟเวอร์ได้รับการจัดการโดยผู้ให้บริการระบบคลาวด์ คุณจึงได้รับประโยชน์จากการมีผู้ให้บริการเหล่านี้ (พร้อมกับวิธีการที่ได้รับการพิสูจน์แล้วว่าแข็งแกร่งในการต่อสู้) เพื่อตรวจสอบเซิร์ฟเวอร์ของคุณ สำหรับบรรดาผู้ที่ต้องการเล่น Sherlock Holmes คุณยังสามารถดูบันทึกเซิร์ฟเวอร์ทั้งหมดที่ส่งออกโดยฟังก์ชันของคุณ บน Cloudwatch
- PHP ไม่ใช่สำหรับฉัน โมเดลไร้เซิร์ฟเวอร์ช่วยให้คุณเขียนในภาษา C#, Python, NodeJS, Go และแม้แต่ Java
- นี่ก็แพงขึ้นเรื่อยๆ ด้วยโซลูชันแบบไร้เซิร์ฟเวอร์ ค่าใช้จ่ายจะถูกวัดตามเวลาดำเนินการ (ต่อ 100 มิลลิวินาที) และจำนวนข้อมูลที่ถ่ายโอน ต่างจากการจ่ายต่อเดือน ซึ่งรวมถึงเวลาที่เซิร์ฟเวอร์ของคุณไม่ได้ใช้งาน คุณจะจ่ายเฉพาะสิ่งที่คุณใช้เท่านั้น ด้วยต้นทุนที่ต่ำเพียง $0.000000208 ต่อการดำเนินการ 100ms การประมวลผลแบบไร้เซิร์ฟเวอร์สามารถช่วยให้คุณประหยัดเงินก้อนใหญ่ได้
- ปลอดภัยไว้ก่อน. Serverless ปลอดภัยหรือไม่? ด้วยระบบการพิสูจน์ตัวตนด้วยคีย์ API ในตัว คุณจึงมั่นใจได้
- Crons นั้นแข็งแกร่ง ด้วยระบบการจัดการ cron ที่สร้างขึ้นบน Cloudwatch เพียงแค่ตั้งค่ากรอบเวลาและลืมมันไป Cloudwatch จัดการการบันทึกและการดำเนินการทั้งหมด
ความคิดสุดท้าย
สำหรับทีม Solutions Engineering ที่ TUNE การเปลี่ยนไปใช้การประมวลผลแบบไร้เซิร์ฟเวอร์ถือเป็นตัวเปลี่ยนเกม ใช้งานง่าย ประหยัดต้นทุน และฟีเจอร์ที่เป็นมิตรต่อความคล่องตัว ได้เปลี่ยนวิธีที่เราจัดการกับการสร้างลูกค้าใหม่ทั้งหมด โซลูชันบนคลาวด์แบบไร้เซิร์ฟเวอร์ถูกกำหนดให้เปลี่ยนโลกของการประมวลผลทางฝั่งเซิร์ฟเวอร์ ฉันไม่รู้เกี่ยวกับคุณ แต่มีสิ่งหนึ่งที่แน่นอน: ทีม TUNE Solutions Engineering พร้อมแล้ว
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ แพลตฟอร์ม TUNE และบริการพัฒนาแบบกำหนดเองที่เรามีให้ ไปที่ หน้าบริการระดับมืออาชีพ ของ เรา