- Serve traffic from multiple regions | Cloud Run Documentation | Google Cloud
- You can return faster responses to your users around the world by deploying services in multiple regions and routing your users to the nearest region. Deploying across multiple regions delivers low latency and higher availability in case of regional outages.
GCP เปิดตัวฟีเจอร์ใหม่เมื่อสัปดาห์ที่แล้วที่ช่วยให้ Cloud Run สามารถใช้งานได้ในหลายภูมิภาคด้วยการดำเนินการเพียงครั้งเดียว
สรุปบริการในหลายภูมิภาคอย่างง่ายๆ เช่น สมมติว่ามีภูมิภาคโซล ลอนดอน และลาสเวกัส
ในกรณีนั้น เดิมทีจำเป็นต้องใช้สคริปต์ในการปรับใช้แต่ละภูมิภาคแยกกัน แต่ฟีเจอร์ใหม่นี้ช่วยให้สามารถปรับใช้หลายภูมิภาคได้ด้วยสคริปต์เพียงตัวเดียว
จริงๆ แล้วก่อนที่จะเปิดตัวครั้งแรก ผมคาดหวังฟีเจอร์นี้มากหลังจากอ่านเอกสารเกี่ยวกับการเปิดตัวบริการ แต่ก็ค่อนข้างผิดหวัง
การปรับใช้ก็ทำได้โดยใช้สคริปต์อยู่แล้วแม้ว่าจะทำได้หลายอย่างพร้อมกันทีละอย่าง แต่ก็ทำงานแบบขนานอยู่แล้ว ดังนั้นจึงไม่มีความแตกต่างด้านเวลา จึงไม่คาดหวังอะไรมากในส่วนนั้น แต่เนื่องจากเป็นการปรับใช้ทั้งหมดพร้อมกัน จึงไม่สามารถตั้งค่าตัวแปรสภาพแวดล้อมที่แตกต่างกันสำหรับแต่ละภูมิภาคได้
ดังนั้น ฟังก์ชันที่ใช้ Cloud Run แต่ละตัวเชื่อมต่อกับฐานข้อมูลหรือ GCS ที่แตกต่างกันโดยใช้ค่าที่แตกต่างกันในแต่ละภูมิภาค แต่ฟังก์ชันนั้นมีปัญหา
ปัญหาที่สองคือ เมื่อทำการปรับใช้ซ้ำๆ อาจมีบางครั้งที่ต้องการลบประวัติเดิม แต่ก็ไม่สามารถควบคุมได้ทีละรายการ เนื่องจากถูกระงับไว้ในโหมดอ่านอย่างเดียว จึงไม่สามารถลบเวอร์ชันเก่าได้ทีละรายการ
มีข้อเสียหลายประการ แต่ข้อดีคือ... สามารถ "รวม" Cloud Run หลายตัวเข้าด้วยกันได้
ในกรณีของบริการของเรา เราใช้ Cloud Run มากและใช้หลายภูมิภาค ดังนั้นปัจจุบันมีประมาณ 50 รายการ และจะเพิ่มขึ้นเป็น 100 รายการเมื่องานทั้งหมดเสร็จสิ้น หากใช้บริการหลายภูมิภาค เราสามารถลดจำนวนลงเหลือ 10-20 รายการ (เพียงแค่ซ่อนไว้)
ก่อนอื่น สคริปต์มีดังนี้
เมื่อเรียกใช้สคริปต์ด้านบน จะทำการปรับใช้ดังนี้
Cloud Run
Cloud Run ที่มีชื่อเดียวกันจะถูกปรับใช้ในแต่ละภูมิภาค และจะมีโฟลเดอร์(?) ที่มีชื่อเดียวกันอยู่ด้านบนสุด
หน้าจอรวมมีดังนี้
Cloud Run - หน้าจอพับ
จริงๆ แล้วหากจำนวนน้อย ก็จะไม่ช่วยอะไรมากนัก แต่ถ้าสมมติว่าปรับใช้ใน 40 ภูมิภาค ก็จะช่วยได้มาก (ไม่จำเป็นต้องมากขนาดนั้นก็ได้)
แสดงว่าเป็นแบบอ่านอย่างเดียว
ส่วนใหญ่แล้ว ฟังก์ชันส่วนใหญ่จะแสดงเป็นโหมดอ่านอย่างเดียวเมื่อพยายามแก้ไข เอกสารระบุว่ามีฟังก์ชันนี้ แต่ API ยังมีปัญหาหรือไม่ทำงานอย่างถูกต้อง
เอกสารที่เกี่ยวข้องอยู่ที่นี่
เอกสารเกี่ยวกับ gcloud อยู่ที่นี่ ปัจจุบันรองรับเฉพาะเวอร์ชันอัลฟา/เบตาเท่านั้น และไม่รองรับเวอร์ชันอย่างเป็นทางการ นอกจากนี้ ตัวเลือก --regions ในเอกสารด้านบนยังไม่มีอยู่ในเอกสารด้วย (คงจะอัปเดตเร็วๆ นี้ใช่ไหม?)
สิ่งที่ต้องการจริงๆ คือ ไม่มีอะไรมากไปกว่าการให้ PORT เป็นค่าเริ่มต้นเหมือนกับตัวแปรสภาพแวดล้อมอื่นๆ แน่นอนว่าฉันรู้ว่ามีการให้ข้อมูลต่างๆ ผ่านเซิร์ฟเวอร์ meta data อยู่แล้ว แต่ก็ยังต้องดึงข้อมูลด้วย Fetch ซึ่งไม่สะดวก (และยังเป็นทรัพยากรด้วย)
เนื่องจากยังเป็นเวอร์ชันพรีวิวอยู่ จึงคาดว่าจะดีขึ้นเรื่อยๆ (การบ่นตั้งแต่เริ่มเปิดตัวนั้น...)
ความคิดเห็น0