5 bước để nâng cấp backend của trang web mà không làm gián đoạn dịch vụ

Nâng cấp backend cho một website không phải là việc làm khó nhưng nếu không biết các thủ thuật nho nhỏ thì cũng không thể tự thực hiện được. Sau đây là 5 bước để nâng cấp backend của trang web mà không làm gián đoạn dịch vụ.
5 bước để nâng cấp backend của trang web mà không làm gián đoạn dịch vụ

Nâng cấp backend giúp website hoạt động hiệu quả

Xem thêm : Nâng cấp website
                   5 lý do nên nâng cấp bảo trì website
Hãy theo dõi để có thêm kinh nghiệm cho mình nào!
Các hệ thống web thường có cấu trúc:
·         Tầng trên cùng là load balancer và/hoặc reverse proxy web server, để hứng kết nối từ client.
·         Tầng tiếp theo nhiều web app server để phân tải và chết server này thì còn server kia.
·         Tầng dưới cùng là DB.
Tất nhiên nếu đi sâu vào chi tiết thì mỗi tầng sẽ có nhiều chiêu thức phức tạp nữa. Ví dụ đối với trang web có lượng truy cập khổng lồ, thì sẽ dùng kết hợp cả load balancer và reverse proxy web server chứ không chỉ dùng một cái, DB thì cấu trúc theo kiểu master-slave, có hot standby, failover, lại còn dùng thêm server để cache v.v.
Để dễ hiểu chúng tôi sẽ dùng cấu trúc đơn giãn trên minh họa:
Chương trình (trang web) = code (app server) + data (DB)
Nâng cấp trang web thường là nâng cấp một trong 2 cái ( code hoặc data), hoặc cả 2.
Trường hợp dễ nhất là nâng cấp code, chỉ thay đổi mã chương trình, giải pháp thường là:
1.    Chỉnh load balancer hoặc reverse proxy web server để kết nối không chạy vào app server 1.
2.    Tắt chương trình trên app server 1, thực hiện nâng cấp chương trình.
3.    Bật nó lên lại.
4.    Chỉnh load balancer và/hoặc reverse proxy web server để kết nối chạy vào app server 1 như cũ.
5.    Lặp lại các bước trên cho các app server còn lại.
Trường hợp khó hơn là dính đến nâng cấp data, như thay đổi cấu trúc các bảng hoặc giá trị trong DB, có giải pháp 5 bước sau:
Bước
Thao tác nâng cấp
Code
Data
Chương trình
1
(Chương trình đang chạy bình thường với phiên bản cũ hiện tại)
Cũ, chỉ xử lí được data cũ
2
Nâng cấp các app server
Code mới, cần xử lí được cả data cũ và mới
3
Nâng cấp DB
Như trên
Mới

Đến đây, mặc dù cả code và data đã mới, nhưng ta vẫn giữ cho chương trình như cũ bằng cách cấu hình. Người dùng bình thường nhìn từ bên ngoài (giao diện v.v.) sẽ vẫn thấy các thứ chưa có gì thay đổi, nhưng thực ra bên trong chương trình đã sẵn sàng để bật sang trạng thái mới. Bí quyết ở đây là chương trình được tích hợp hệ thống gọi là feature flag, để người vận hành có thể bật tắt các tính năng.
·        Bước 4: Bật feature flag để ban đầu chỉ thử nghiệm tính năng mới cho một vài người dùng. Nếu thấy ổn thì sẽ bật cho tất cả mọi người.
·         Bước 5: Đến đây trang web đã ổn, có thể dọn dẹp để bỏ đi code và data cũ.
Mấu chốt của giải pháp trên là:
ü  Dùng load balancer  hoặc reverse proxy web server để người dùng vẫn truy cập được dịch vụ.
ü  Viết code mới sao cho nó xử lí được cả data cũ và mới.
Ở trên, ta thấy có chỗ cần tắt app server để nâng cấp. Nếu dùng một số công nghệ cao cấp như Erlang, thì còn có thể nâng cấp code mà không cần tắt app server (hot code reload)! Chiêu thức này rất hữu dụng cho những hệ thống cần realtime ,cần lưu trạng thái vào trong memory của app server để xử lí cho nhanh, khi nào thực sự cần lưu trạng thái lâu dài mới phải lưu vào DB.
Với những thủ tuật trong bài: 5 bước để nâng cấp backend của trang web mà không làm gián đoạn dịch vụ. Hy vọng bạn sẽ biết cách để nâng cấp backend tối ưu nhất. Chúc bạn thành công!

Nhận xét