เหตุใดเราจึงเปลี่ยนไปใช้คอมพิวเตอร์แบบไร้เซิร์ฟเวอร์เพื่อปรับใช้ Custom Builds

เผยแพร่แล้ว: 2018-11-22
การตั้งค่าเซิร์ฟเวอร์สำหรับคลาวด์คอมพิวติ้งแบบไร้เซิร์ฟเวอร์

ภาพถ่ายโดย panumas nikhomkhai จาก Pexels

ในฐานะส่วนหนึ่งของความมุ่งมั่นของเราที่จะส่งเสริมนักการตลาดด้านประสิทธิภาพในการ ทำสิ่งต่างๆ ได้มากขึ้น ด้วย 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

    1. ขั้นแรก ให้สร้างฟังก์ชัน Lambda ใหม่และเลือก " Blueprints " จากนั้นพิมพ์ “ http ” ในช่องคีย์เวิร์ด และเลือก Python หรือ Node microservice-http-endpoint (พิมพ์เขียวเป็นบล็อกโค้ดที่สร้างไว้ล่วงหน้าเพื่อให้การพัฒนาเร็วขึ้น มันยอดเยี่ยมขนาดไหน) เมื่อคุณเลือกได้แล้ว ให้คลิก " กำหนดค่า "
      วิธีกำหนดค่าฟังก์ชันบน AWS Lambda

      วิธีกำหนดค่าฟังก์ชันบน AWS Lambda

    2. เพิ่มชื่อฟังก์ชันและบทบาท จากนั้นเลือก ทริกเกอร์ API Gateway พร้อมตัวเลือกความปลอดภัย “ Open with API Key เกตเวย์ API นี้จะจัดเตรียม URL สาธารณะที่จะเรียกใช้ฟังก์ชัน Lambda ของคุณ การเพิ่มคีย์ API ให้วิธีการรับรองความถูกต้อง ซึ่งแนะนำเป็นอย่างยิ่ง
      การตั้งค่าคีย์เกตเวย์ API แบบเปิดใน AWS Lambda

      การตั้งค่าคีย์เกตเวย์ API แบบเปิดใน AWS Lambda

    3. เมื่อคุณสร้างฟังก์ชันแล้ว คุณสามารถกำหนดค่าโค้ดของคุณได้ อย่างที่คุณเห็น พิมพ์เขียวได้ให้จุดเชื่อมต่อที่ยอดเยี่ยมแก่คุณแล้ว ซึ่งช่วยให้คุณโต้ตอบกับ ตารางไดนาโม ได้ (หากคุณต้องการเพิ่มฐานข้อมูล) สิ่งที่อยู่ภายใต้ lambda_handler จะถูกดำเนินการเมื่อโหลด URL สาธารณะ เนื่องจากเรากำลังเพิ่มฐานข้อมูลด้วย ให้ไปที่ไดนาโมและสร้างฐานข้อมูล
      การสร้างตารางฐานข้อมูล Dynamo ใน AWS Lambda

      การสร้างตารางฐานข้อมูล Dynamo ใน AWS Lambda

    4. เมื่อสร้างตารางไดนาโมแล้ว ให้เรียกใช้ฟังก์ชัน Lambda นี้จาก URL สาธารณะ กลับไปที่ฟังก์ชันของคุณแล้วคลิกไอคอน " API Gateway " ที่ด้านบน คุณควรเห็นว่ามีการสร้างปลายทางและคีย์ API สำหรับคุณแล้ว
      จะหาไอคอน API Gateway ในฟังก์ชัน AWS Lambda ได้ที่ไหน

      จะหาไอคอน API Gateway ในฟังก์ชัน AWS Lambda ได้ที่ไหน

    5. ตอนนี้เปิดเทอร์มินัลแล้วเพิ่มคีย์ API ใต้ส่วนหัว " x-api-key" จากนั้นเพิ่มชื่อตารางที่คุณสร้างขึ้นภายใต้พารามิเตอร์สตริงข้อความค้นหา TableName
      ป้อนคีย์และชื่อฐานข้อมูลของคุณในเทอร์มินัลเพื่อตั้งค่าบิลด์แบบไร้เซิร์ฟเวอร์ใน AWS Lambda ให้เสร็จสิ้น

      ป้อนรหัสและชื่อฐานข้อมูลของคุณในเทอร์มินัลเพื่อสิ้นสุด

แค่นั้นแหละ! ตอนนี้คุณมีระบบแบ็คเอนด์ที่ใช้งานได้และปลอดภัยซึ่งเชื่อมต่อกับฐานข้อมูล ทั้งหมดใช้เวลาเพียงห้าขั้นตอนง่ายๆ

คอมพิวเตอร์ไร้เซิร์ฟเวอร์จัดการกับความท้าทายของเราอย่างไร

ตอนนี้เราได้แสดงให้คุณเห็นถึงวิธีตั้งค่าบิลด์แบบไร้เซิร์ฟเวอร์แล้ว มาดูกันว่าโมเดลบนคลาวด์นี้มีผลอย่างไรกับรายการตรวจสอบปัญหาของเรา

  • เซิร์ฟเวอร์มากเกินไป! 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 และบริการพัฒนาแบบกำหนดเองที่เรามีให้ ไปที่ หน้าบริการระดับมืออาชีพ ของ เรา