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ụ.
![]() |
Nâng cấp backend giúp website hoạt động hiệu quả |
Xem thêm : Nâng cấp 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ũ
|
Cũ, chỉ xử lí được data cũ
|
Cũ
|
2
|
Nâng cấp các app server
|
Code mới, cần xử lí được cả
data cũ và mới
|
Cũ
|
Cũ
|
3
|
Nâng cấp DB
|
Như
trên
|
Mới
|
Cũ
|
Đế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
Đăng nhận xét