มีใครเคยย้ายคลาวด์ที่ใช้งานอยู่บ้างไหม?
(news.ycombinator.com)คำถามและคำตอบบน 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 ความคิดเห็น
มีบทความใน ITWorld ที่วิจารณ์โดยเจาะจงเธรดนี้ว่า แสดงให้เห็นว่ายังมีความเข้าใจเกี่ยวกับคลาวด์ที่ไม่เพียงพอแพร่หลายอยู่
'ถูกล่อด้วยเครดิต' จนย้ายขึ้นคลาวด์… "ความเข้าใจผิดครั้งใหญ่ที่สุด"
ควรอ่านโดยคำนึงถึงข้อเท็จจริงที่ว่า Matt Asay ผู้เขียนบทความของ ITWorld เคยดำรงตำแหน่งหัวหน้าฝ่ายการตลาดสำหรับนักพัฒนาของ AWS จนถึงเมื่อไม่นานมานี้
https://www.linkedin.com/in/mjasay/details/experience/
โอ้โห ขอบคุณสำหรับข้อมูลดีๆ ครับ
คลาวด์ไม่ใช่คำตอบ万能สำหรับทุกอย่างอยู่แล้ว ประโยคสุดท้ายของคำตอบที่ 3 นี่ค่อนข้างน่าสงสัยนะ สุดท้ายก็น่าจะขึ้นอยู่กับว่าจะนำไปใช้อย่างไรมากกว่าหรือเปล่า..
เป็นคำถามเกี่ยวกับการย้ายระหว่างคลาวด์ แต่ดูเหมือนว่าหลายคนจะแนะนำบริการโฮสติ้งอย่าง Hetzner มากกว่าคลาวด์
แน่นอนว่าต้นทุนคงเป็นเหตุผลที่ใหญ่ที่สุด แต่ผมก็ยังคิดว่าการใช้คลาวด์ให้เป็นก็มีข้อดีอยู่มากพอสมควร
ถ้าบริษัทเล็กพูดว่าเราไม่ใช้คลาวด์นะ ใช้โฮสติ้ง! ความจริงก็คือการหานักพัฒนาก็ยากขึ้นด้วย (แต่ถ้าพัฒนากันเองโดยตรงก็อาจไม่มีปัญหาอะไร)
ผมเห็นด้วยเต็มที่กับประเด็นที่ว่า Google Cloud มีแนวโน้มจะปิด VM แบบสุ่มโดยไม่มีเหตุผลชัดเจนในบางครั้ง
เมื่อหลายปีก่อนผมเคยรันเซิร์ฟเวอร์เล็ก ๆ บน Google แล้วก็ย้ายไป AWS LightSail ด้วยเหตุผลนั้นแหละ
บางวันเซิร์ฟเวอร์ก็ดับไปเฉย ๆ โดยไม่มีสาเหตุ หรือเกิดอาการเข้าใช้งานไม่ได้อยู่บ่อย ๆ ตอนนี้อาจจะดีขึ้นแล้วก็ได้ แต่ก็ไม่ใช่ประสบการณ์ที่ดีเลย