ข้ามไปยังเนื้อหา
เอราวัณACADEMYEN

ดูแลแอป

เวอร์ชันใหม่มีปัญหา ถอยกลับตัวเดิมได้ในไม่กี่วินาที

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

ติดอยู่ตรงไหน ทีม Erawan ช่วยดูให้ฟรีสำหรับแผน Hobby ขึ้นไป

บอกเอไอให้ถอยกลับ

พิมพ์บอกเอไอที่ต่อกับ Erawan ไว้ แอปจะกลับไปเป็นเวอร์ชันก่อนหน้าภายในไม่กี่วินาที ลิงก์ก็ยังเป็นลิงก์เดิม ไม่ต้องส่งให้ใครใหม่

ถอย my-app กลับไปเวอร์ชันก่อนหน้า

ถ้ารันเองในเทอร์มินัล ใช้คำสั่งนี้

erawan rollback my-app

ทำไมถึงเร็ว

Erawan เก็บเวอร์ชันที่ build เสร็จแล้วไว้แอปละสองตัว คือตัวที่รันอยู่กับตัวก่อนหน้า การถอยกลับจึงไม่ต้อง build ใหม่ แค่สลับไปใช้ตัวที่เก็บไว้ ถ้าเวอร์ชันใหม่มีปัญหาก็ถอยก่อนได้เลย ไม่ต้องรอหาสาเหตุให้เจอ

ถอยได้แค่หนึ่งก้าว

เพราะเก็บไว้แค่สองตัว คำสั่งนี้จึงพากลับได้แค่เวอร์ชันก่อนหน้า ถ้าตัวที่อยากได้เก่ากว่านั้นก็ยังกลับไปได้ เพราะโค้ดของทุกเวอร์ชันเก็บไว้ครบ ให้เอไอดึงโค้ดเวอร์ชันนั้นลงมาแล้วเอาขึ้นใหม่ เลขเวอร์ชันดูได้จาก erawan status my-app

erawan pull my-app --version 3

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

ถ้าแอปพังตั้งแต่ครั้งแรกที่ขึ้น ข้างหลังก็ไม่มีอะไรให้ถอย ระบบจะตอบว่า No previous version to roll back to. ทางเดียวคือแก้แล้วเอาขึ้นใหม่

ข้อมูลไม่ถอยตาม

คำสั่งนี้เปลี่ยนแค่โค้ดที่แอปรัน ฐานข้อมูลกับไฟล์บนดิสก์ยังอยู่เหมือนเดิมทุกอย่าง ส่วนใหญ่ก็ตรงกับที่ต้องการ แต่มีสองกรณีที่ต้องระวัง

  • เวอร์ชันใหม่เขียนข้อมูลผิดลงไปแล้ว ถอยโค้ดกลับไป ข้อมูลผิดพวกนั้นก็ยังอยู่ที่เดิม ต้องแก้อีกทาง อ่านต่อในบทย้อนฐานข้อมูล
  • เวอร์ชันใหม่เปลี่ยนหน้าตาตาราง เช่น เพิ่มคอลัมน์หรือรัน migration ไปแล้ว โค้ดตัวเก่าอาจเปิดไม่ขึ้นกับตารางแบบใหม่ ถ้าถอยแล้วแอปยังพัง ให้บอกเอไอด้วยว่าเวอร์ชันที่เพิ่งถอยออกมาแก้ฐานข้อมูลไว้

ถอยแล้วค่อยแก้

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

บทเรียนเอราวัณคลาวด์ทั้งหมด

ย้อนกลับไปเวอร์ชันก่อนหน้า — Erawan