19 คะแนน โดย xguru 2022-04-11 | 5 ความคิดเห็น | แชร์ทาง WhatsApp

คำถามและคำตอบบน HN ที่ถามถึงเหตุผลและประสบการณ์ในการย้ายระหว่างคลาวด์อย่าง AWS, Azure, Google เป็นต้น

  • ผมเคยย้ายระบบของลูกค้าจาก AWS → Google และจาก Google → Hetzner แบบ zero downtime
    • เหตุผลหลักคือเรื่องราคา หลังใช้เครดิตฟรีของ AWS/Google หมดแล้วก็ย้ายไป Hetzner
    • เงินที่ประหยัดได้จากการใช้เครดิตคุ้มกว่าค่า migration ถึง 20 เท่า
    • วิธีทำ migration คือใช้ reverse proxy เชื่อมกับ backend ในแต่ละฝั่ง จากนั้นตั้งค่า VPN ระหว่างบริการ แล้วค่อยเปลี่ยน DNS
    • ส่วนที่ยากที่สุดคือ database failover และทำให้หลังสลับ master แล้วการอัปเดตสามารถ retry ได้
    • ผลลัพธ์คือทำให้ลูกค้ามีการตั้งค่าที่ไม่ผูกติดกับผู้ให้บริการคลาวด์ และใช้เครดิตฟรีที่มีได้อย่างคุ้มค่า
    • รายละเอียดทางเทคนิค
      • reverse proxy อย่าง haproxy, nginx + Hashicorp Consul + ngx_mruby
      • ตั้งค่า VPN ระหว่างคลาวด์เพื่อให้ reverse proxy เข้าถึง backend ได้ทั้งสองฝั่ง
      • ทำ replication ของฐานข้อมูลไปยังคลาวด์ใหม่
      • ทำให้แอปสามารถเลือกได้ว่าจะใช้ฐานข้อมูลตัวไหนเป็น master (Consul)
      • ทำให้แอปรับมือกับ database error ได้อย่าง graceful จุดนี้ยากที่สุด
      • ตั้งค่า DNS TTL ให้ต่ำ
      • เชื่อม backend ใหม่เข้ากับ reverse proxy และตรวจว่าไม่มี error
      • อัปเดต DNS เพื่อเพิ่ม reverse proxy ใหม่เข้าไปในระบบ
      • promote replica ที่อยู่บนคลาวด์ใหม่ให้เป็น master
      • ค่อย ๆ ลด connection ที่วิ่งไปยัง backend เดิม
      • สุดท้ายลบ reverse proxy เดิมออกจาก DNS
      • เมื่อตรวจสอบทุกอย่างแล้วจึงลบสภาพแวดล้อมเดิมและคืนค่า DNS TTL
  • GitLab เคยย้ายจาก AWS ไป Azure แล้วค่อยย้ายกลับไป Google Cloud (เมื่อหลายปีก่อน)
    • ตอนแรกก็เริ่มที่ AWS แบบที่หลายบริษัททำกัน แต่ค่าใช้จ่ายสูงมาก (ถึงขั้นเรียกได้ว่าเผาเงิน)
    • พอรู้ว่า YC ให้ Azure credits กับสมาชิก ก็ลองคำนวณดูแล้วพบว่าน่าจะครอบคลุมการใช้งานประมาณ 1 ปี เลยย้าย
    • แต่การย้ายเป็นเรื่องเจ็บปวด และช่วงที่ใช้ Azure ก็ไม่มีใครพอใจ แถมเครดิตฟรีก็หมดค่อนข้างเร็ว
    • จำเหตุผลที่ย้ายไป GCP ไม่ได้แน่ชัด แต่เป็นกระบวนการที่ยากมากและใช้เวลานานพอสมควร
    • ประสบการณ์กับ GCP ดีกว่ามาก แต่ก็ยังเรียกว่าสมบูรณ์แบบไม่ได้
    • โดยเฉพาะ GCP มีแนวโน้มจะปิด VM แบบสุ่มโดยไม่มีเหตุผลชัดเจน
    • บางครั้งปิดได้เรียบร้อย แต่บางครั้งกลับจบในสถานะกึ่งกลาง ทำให้ระบบอื่นยังพยายามเชื่อมต่อ และแทนที่จะ error ทันที กลับกลายเป็น connection timeout
    • เท่าที่จำได้มันดีขึ้นเมื่อเวลาผ่านไป แต่ก็ให้ความรู้สึกแบบ Google มาก ๆ ว่า "มีบางอย่างพัง แต่เราอธิบายเหตุผลให้คุณไม่ได้"
    • มองย้อนกลับไป ถ้าจะเริ่มบริษัทใหม่อีกครั้ง ก็น่าจะเลือกใช้ Hetzner หรือผู้ให้บริการ bare metal ราคาประหยัดรายอื่นตั้งแต่แรก
    • บริการคลาวด์นั้นยอดเยี่ยมหากใช้ความสามารถของมันได้เต็มที่ แต่ใน 90% ของกรณี คนมักใช้มันโดยไม่ได้ประโยชน์มากนักและแค่จ่ายแพงขึ้น
  • Google Cloud → Digital Ocean → OVH
    • การรันระบบของเราเองบนเซิร์ฟเวอร์ประสิทธิภาพสูงนั้นมีปัญหาน้อยและง่ายกว่าที่คิด
    • deploy ด้วย git push และ build container ได้ในระดับ "Set it and forget it"
    • เรามีข้อมูล PostgreSQL ระดับเทราไบต์ ซึ่งแพงมหาศาลบนคลาวด์ส่วนใหญ่
    • บางคนอาจมองว่าคลาวด์เหมือนขนมปังที่ถูกหั่นมาให้พร้อมกิน แต่ในความเป็นจริงมันไม่ได้ช่วยลดเวลาของนักพัฒนา
    • คลาวด์แพงกว่าและช้ากว่าการดูแลเซิร์ฟเวอร์เองมาก สำหรับ workload ระดับกลาง การใช้คลาวด์แทบไม่มีข้อดี

คัดมาเฉพาะ 3 คำตอบที่ได้คะแนนโหวตสูงสุด โปรดดูคำถาม ความเห็น และข้อโต้แย้งเพิ่มเติมในคอมเมนต์ของคำตอบเหล่านี้ด้วย

5 ความคิดเห็น

 
kunggom 2022-04-15

มีบทความใน ITWorld ที่วิจารณ์โดยเจาะจงเธรดนี้ว่า แสดงให้เห็นว่ายังมีความเข้าใจเกี่ยวกับคลาวด์ที่ไม่เพียงพอแพร่หลายอยู่
'ถูกล่อด้วยเครดิต' จนย้ายขึ้นคลาวด์… "ความเข้าใจผิดครั้งใหญ่ที่สุด"

 
xguru 2022-04-15

ควรอ่านโดยคำนึงถึงข้อเท็จจริงที่ว่า Matt Asay ผู้เขียนบทความของ ITWorld เคยดำรงตำแหน่งหัวหน้าฝ่ายการตลาดสำหรับนักพัฒนาของ AWS จนถึงเมื่อไม่นานมานี้
https://www.linkedin.com/in/mjasay/details/experience/

 
kunggom 2022-04-19

โอ้โห ขอบคุณสำหรับข้อมูลดีๆ ครับ

 
superwoou 2022-04-11

คลาวด์ไม่ใช่คำตอบ万能สำหรับทุกอย่างอยู่แล้ว ประโยคสุดท้ายของคำตอบที่ 3 นี่ค่อนข้างน่าสงสัยนะ สุดท้ายก็น่าจะขึ้นอยู่กับว่าจะนำไปใช้อย่างไรมากกว่าหรือเปล่า..

 
xguru 2022-04-11

เป็นคำถามเกี่ยวกับการย้ายระหว่างคลาวด์ แต่ดูเหมือนว่าหลายคนจะแนะนำบริการโฮสติ้งอย่าง Hetzner มากกว่าคลาวด์
แน่นอนว่าต้นทุนคงเป็นเหตุผลที่ใหญ่ที่สุด แต่ผมก็ยังคิดว่าการใช้คลาวด์ให้เป็นก็มีข้อดีอยู่มากพอสมควร
ถ้าบริษัทเล็กพูดว่าเราไม่ใช้คลาวด์นะ ใช้โฮสติ้ง! ความจริงก็คือการหานักพัฒนาก็ยากขึ้นด้วย (แต่ถ้าพัฒนากันเองโดยตรงก็อาจไม่มีปัญหาอะไร)

ผมเห็นด้วยเต็มที่กับประเด็นที่ว่า Google Cloud มีแนวโน้มจะปิด VM แบบสุ่มโดยไม่มีเหตุผลชัดเจนในบางครั้ง
เมื่อหลายปีก่อนผมเคยรันเซิร์ฟเวอร์เล็ก ๆ บน Google แล้วก็ย้ายไป AWS LightSail ด้วยเหตุผลนั้นแหละ
บางวันเซิร์ฟเวอร์ก็ดับไปเฉย ๆ โดยไม่มีสาเหตุ หรือเกิดอาการเข้าใช้งานไม่ได้อยู่บ่อย ๆ ตอนนี้อาจจะดีขึ้นแล้วก็ได้ แต่ก็ไม่ใช่ประสบการณ์ที่ดีเลย