kyanon-digital-archerstalk-upgrade-cms-from-drupal-8-to-drupal-9
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ề:
  • Cách upgrade CMS
  • Cách upgrade CMS từ Drupal 8 lên Drupal 9
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?
Tất nhiên, việc nâng cấp một hệ thống hay một phần mềm là một nhu cầu bắt buộc. Tất cả mọi hệ thống đều cần được nâng cấp. Lý do: tất cả những sản phẩm và các phiên bản của phần mềm đều được nâng cấp bởi các tổ chức quản trị nó, cho dù đó là open source hay enterprise license, đều luôn luôn có bản nâng cấp. Đối với các phần mềm dạng enterprise license, người bán phần mềm sẽ chịu trách nhiệm về phần nâng cấp này. Vì sao cần upgrade CMS? How To Upgrade A CMS: A Case Study Of Upgrading From Drupal 8 To Drupal 9 1
  • 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.
Phiên bản mới nhất của phần mềm thường sẽ có thêm những tính năng mới sau khi đã được vá lỗi. Một điều quan trọng là khi bạn thường xuyên upgrade phiên bản mới nhất sẽ giúp cho lần upgrade tiếp theo dễ dàng hơn. Phân biệt 2 thuật ngữ Update và Upgrade:

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
How To Upgrade A CMS: A Case Study Of Upgrading From Drupal 8 To Drupal 9 21.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.
How To Upgrade A CMS: A Case Study Of Upgrading From Drupal 8 To Drupal 9 3
  • 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,…
1.2.2. Giai đoạn Upgrade (Upgrading) Thường bao gồm những việc chính:
  • CORE
  • API
  • Database
  • Automation Script
  • Deployment Environment
1.2.3. Giai đoạn xác nhận upgrade thành công và bắt đầu test (Confirmation & Testing) Xử lý các lỗi phát sinh: Test về Front-end, phân quyền, tất cả function và chức năng, các log và status… 1.2.4. Giai đoạn triển khai (Deployment) Cần xác định phương án triển khai, có 2 phương án như sau:

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
How To Upgrade A CMS: A Case Study Of Upgrading From Drupal 8 To Drupal 9 4
  • 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. How To Upgrade A CMS: A Case Study Of Upgrading From Drupal 8 To Drupal 9 5

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)
How To Upgrade A CMS: A Case Study Of Upgrading From Drupal 8 To Drupal 9 6

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:
How To Upgrade A CMS: A Case Study Of Upgrading From Drupal 8 To Drupal 9 7B1: Lần lượt kiểm tra phiên bản của từng modules được liệt kê trong file tổng hợp trên drupal.org, thay đổi phiên bản mới nhất tương thích và ổn định nhất cho từng module. B2: Sau khi hoàn thành, chạy “composer install” để nâng cấp modules.
  • 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.
How To Upgrade A CMS: A Case Study Of Upgrading From Drupal 8 To Drupal 9 8Một số trường hợp đặc biệt: 
  • 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.
2.2.2. Update database khi upgrade Một số lỗi thường xảy ra: Khi xóa những module khách hàng yêu cầu sẽ xảy ra lỗi nếu bạn xóa trước khi update, vì nó còn tồn tại những database của module đó. Cần làm đúng quy trình: xóa module sau khi đã update database. How To Upgrade A CMS: A Case Study Of Upgrading From Drupal 8 To Drupal 9 92.2.3. Import configuration khi upgrade How To Upgrade A CMS: A Case Study Of Upgrading From Drupal 8 To Drupal 9 10 Khi update database, cấu hình của các module sẽ thay đổi, vì vậy chúng phải được export và import lại. Tùy theo yêu cầu khách hàng mà sẽ biết có cần đồng bộ lại các config hay không. Có thể sử dụng một số tool của Drupal để check và so sánh những config được lưu trong database hiện tại khi update lên, giúp biết được những điểm khác nhau của bản trước và sau khi update. Chúng ta cần review lại những điểm khác nhau này để biết có những thay đổi gì trên trang web để có thể kiểm soát được những thay đổi trên web sau khi update. How To Upgrade A CMS: A Case Study Of Upgrading From Drupal 8 To Drupal 9 11Giai đoạn 3: Testing (1-2 tuần) B1: Test những thao tác cơ bản trên site. B2: Request Smoke test từ khách hàng để test. B3: Test những yêu cầu từ team developer đưa ra. Giai đoạn 4: Maintenance (2-3 tuần) Sau khi bản release đã chạy và QC đã test xong, trả về cho khách hàng deploy preview. Có thể họ sẽ test ra thêm lỗi nên giai đoạn này sẽ tốn nhiều thời gian để fix lỗi các lỗi phát sinh. Sau cùng, chúng ta bàn giao sản phẩm cho khách hàng deploy live production và giải đáp các thắc mắc liên quan nếu có.   Qua buổi ArchersTalk này, hy vọng các bạn tham gia đã có thêm cho mình khá nhiều kiến thức hữu ích khi tham gia vào các dự án upgrade Drupal nói chung và đặc biệt là khi upgrade CMS từ Drupal 8 lên Drupal 9. Cảm ơn các diễn giả đã chia sẻ những thông tin bổ ích cũng như kinh nghiệm cá nhân đến mọi người, góp phần phát triển văn hóa chia sẻ kiến thức tại Kyanon Digital. Nếu bạn nghĩ những chia sẻ này có thể giúp ích cho bạn bè hoặc đồng nghiệp, đừng quên nhấn nút Share bên dưới nhé! —————————- ArchersTalk là chuỗi sự kiện chia sẻ kiến thức liên quan đến lĩnh vực công nghệ và lập trình của Kyanon Digital, nơi các thành viên Kyanon Digital (Archers) sẽ chia sẻ những kiến thức thực tiễn trong quá trình làm việc cũng như những kinh nghiệm đúc kết được để giúp các bạn còn lại trong team, trong nội bộ công ty hoặc các bạn bên ngoài công ty có quan tâm sẽ có những góc nhìn và tư duy mới hơn để ứng dụng vào công việc hiện tại của mình.
5/5 - (1 vote)