Upgrade CMS là một hoạt động cần thiết phải làm mỗi khi nhà cung cấp nền tảng chúng ta đang dùng cho website hoặc ứng dụng có những cập nhật mới. Tuy nhiên, với mỗi lần cập nhật tính năng hoặc hệ thống mới như thế này, không phải chỉ cần một “click chuột” cho update là có thể nâng cấp phiên bản CMS hiện tại, mà quy trình có thể sẽ phức tạp hơn nhiều. Vì vậy, trong sự kiện lần này, Drupal Team tại Kyanon Digital muốn chia sẻ để các bạn hệ thống lại được quy trình khi upgrade CMS, đặc biệt mọi người sẽ hiểu rõ hơn qua case study thực tế cho việc Upgrade từ Drupal 8 lên Drupal 9.
Cùng lắng nghe những chia sẻ đến từ Drupal Team tại Kyanon Digital, anh Hai Vo – Head of Devrel và bạn Nghia Nguyen – Drupal Engineer để cùng tìm hiểu về:
Một số trường hợp đặc biệt:
- Cách upgrade CMS
- Cách upgrade CMS từ Drupal 8 lên Drupal 9
Table of contents
show
1. Hướng dẫn cách upgrade CMS
1.1. Nhu cầu upgrade CMS
Khi bắt đầu, mọi người thường đặt ra một số câu hỏi:- Quá trình upgrade CMS có quá phức tạp và tốn nhiều thời gian và nguồn lực để upgrade hay không?
- Khi nào nên upgrade? Tần suất upgrade như thế nào là hợp lý?
- Khi upgrade, chúng ta có đủ khả năng kiểm soát được process hay không?
- Liệu có cách nào khiến cho việc upgrade CMS dễ dàng hơn không?
- Thứ nhất, việc upgrade đảm bảo hệ thống của bạn luôn luôn được cập nhật, tất cả những bug phát sinh đều được vá.
- Thứ hai, việc upgrade đảm bảo tính an toàn của hệ thống.
Update (cập nhật) |
Upgrade (nâng cấp) |
Cập nhật những phiên bản nhỏ, có thể hiểu là những bản vá, những bản fix bug security, update những tính năng nhỏ. | Có thể hiểu là một bản nâng cấp lớn, có thể thay đổi hầu hết kiến trúc phần mềm phiên bản cũ, như là thay đổi cấu trúc của code hoặc cơ sở dữ liệu. Việc Upgrade sẽ khó hơn và mất nhiều thời gian hơn so với Update. Khi Update thường xuyên sẽ giúp Upgrade dễ hơn. Thông thường, việc nâng cấp sẽ tùy theo chu kỳ vòng đời sản phẩm và framework, do đó cần phải đưa kế hoạch này vào trong dự án ở giai đoạn vận hành và bảo trì. Ví dụ như Drupal xem tại đây. |
1.2. Các giai đoạn upgrade CMS
1.2.1. Giai đoạn chuẩn bị (Preparation) Giai đoạn chuẩn bị rất quan trọng và chiếm rất nhiều thời gian. Các bạn developer thường có sự nhầm lẫn về giai đoạn này khi nghĩ rằng chỉ cần chuẩn bị các bước để triển khai trong giai đoạn 2 (giai đoạn Upgrade). Trong giai đoạn 1 còn bao gồm việc chuẩn bị cho hoạt động của system trong khi upgrade sẽ như thế nào, cần phải thống nhất với khách hàng, sắp xếp thời gian phù hợp với những team khác. Vì đây không chỉ là upgrade của riêng một CMS đó mà còn có thể liên quan đến hệ thống mạng, hệ thống server, OS license, database version, third-party integration v.v…- Lên kế hoạch chuẩn bị: Dựa trên quy mô dự án, mức độ “customize”, tự động hóa, cách chuẩn hoá lại source code, test các tính năng,…và nhớ là lên kịch bản theo theo sát “best practice guideline” của CMS tương ứng.
- Xem xét những lưu ý giữa version hiện tại và target version: Sự thay đổi của API và cấu trúc dữ liệu.
- Kiểm tra toàn bộ môi trường hiện hành đang vận hành CMS: Cần có mindset chuyên nghiệp và kết hợp của nhiều bộ phận development, sysadmin…để nhìn thấy các rủi ro. Ví dụ như việc xác định rõ OS server, database server đang ở phiên bản nào sẽ không phải là việc của team development CMS. Kiểm tra phiên bản của các phần mềm tích hợp từ third-party: search system, composer, npm, shell quản lý… Nên triển khai một version chạy thử để xác định thời gian thực tế chạy, chuẩn bị cho các rủi ro có thể xảy ra.
- Tạo bản backup và bản restore: Kiểm tra trước môi trường nâng cấp (upgraded environment) có chạy được trên server của khách hàng hay không. Có thể dùng 2 phiên bản này để so sánh với các bản upgrade trong tương lai.
- Cơ chế upgrade: Xác định cơ chế upgrade là manual hay sử dụng tool.
- Đồng bộ hệ thống: Cần đồng bộ hệ thống trong giai đoạn chạy thử và giai đoạn thực hiện upgrade vì sẽ có những thay đổi về các log files,…
- CORE
- API
- Database
- Automation Script
- Deployment Environment
Phương pháp nguội (Freeze content) |
Phương pháp nóng (Hot content) |
Dừng server đang chạy (đóng băng server một thời gian), backup database, restore vào môi trường mới, sau đó mới upgrade database lên cùng với upgrade code. Sau cùng là restore database đó lên production. | Upgrade source code và file trực tiếp trên live production, sau đó chạy upgrade live database. Lúc này, cần một team sẵn sàng vá lỗi ngay lúc đó nếu có lỗi phát sinh. |
1.3. Một số lời khuyên dành cho các bạn Developer
- Bạn phải luôn luôn update hệ thống thường xuyên, các bản vá lỗi cần được cập nhật ngay và cần có một kế hoạch làm việc cụ thể theo vòng đời sản phẩm. Việc này sẽ giúp hệ thống và bảo mật luôn được cập nhật mới, giúp cho việc upgrade sau này dễ dàng hơn.
- Bạn cần chuẩn bị cho tình huống xấu nhất khi những lỗi không mong muốn có thể xảy ra.
- Bạn cần có một checklist features đầy đủ cho từng phiên bản upgrade.
2. Hướng dẫn upgrade CMS từ Drupal 8 lên Drupal 9
2.1. Thị trường upgrade Drupal
Sau đây là một ví dụ về số lượng website sử dụng Drupal từ phiên bản 6.x trở lên có sử dụng module “Update status” sẽ được Drupal cập nhật trong bảng thống kê này. Đối với mỗi tuần bắt đầu vào ngày nhất định, số liệu sẽ hiển thị số lượng các website đang sử dụng các phiên bản cụ thể của Drupal. Theo thống kê của Drupal.org, vào tháng 12 năm 2021 có khoảng 830,000 websites đang cần được upgrade lên Drupal 9 – phiên bản mới nhất của Drupal.Thống kê số lượng Drupal website theo tuần (Nguồn: drupal.org)
2.2. Quy trình upgrade CMS từ Drupal 8 lên Drupal 9 (tổng hợp từ các case tại Kyanon Digital)
Quy trình upgrade Drupal website từ Drupal 8 lên Drupal 9 tại Kyanon Digital
Giai đoạn 1: Review (1-2 ngày) B1: Nhận yêu cầu từ khách hàng: database, demo. B2: Triển khai site trên local của mình, sẽ có site hoạt động tương tự như site product. B3: Dùng tool hỗ trợ để tạo report dùng để check module, những API thay đổi khi từ Drupal 8 lên Drupal 9. Giai đoạn 2: Upgrade (1 tuần) Trong giai đoạn chuẩn bị, Kyanon Digital team dựng môi trường để thực hiện upgrade dùng docker container tương ứng. Ưu điểm của việc dùng docker là sẽ tạo ra được các môi trường có cấu hình gần giống nhất với môi trường của khách hàng. 2.2.1. Upgrade modules- Upgrade tự động:
- Upgrade thủ công:
Contribution |
Custom |
1. Kiểm tra các bản vá và áp dụng chúng. | 1. Sửa những lỗi phát sinh sau khi upgrade. |
2. Tạo ra bản vá lỗi nếu phiên bản mới nhất chưa có. | 2. Sửa lỗi tương thích về theme cho phù hợp với phiên bản upgrade. |
3. Chuyển module developer sang môi trường require-dev. |
- Phiên bản mới nhất của module không hỗ trợ Drupal 9.
- Không thể nâng cấp module lên phiên bản mới nhất vì có module khác yêu cầu phiên bản thấp hơn.
5/5 - (1 vote)