2025/02/18

Share

  • Share on Facebook
  • Share on Twitter

Cải tạo hệ thống quản lý khách hàng Symphonizer Cải tạo hệ thống quản lý khách hàng Symphonizer

Tổng quan dự án

Chúng tôi đã thực hiện dự án nâng cấp hệ thống cũ đang vận hành bằng Java 1.4.2_07 lên Java 21, đồng thời chuyển đổi từ cấu trúc Monolithic sang kiến trúc hiện đại, phân tách rõ ràng vai trò giữa client và server. Việc làm mới này giúp giải quyết các vấn đề về công nghệ đã hết hỗ trợ, cải thiện khả năng bảo trì và hiện thực hóa nền tảng hệ thống có khả năng mở rộng cao, hướng đến việc công khai API trong tương lai.

Stack công nghệ và công cụ phát triển đã sử dụng

  • Ngôn ngữ lập trình:Java 21
  • Front end framework:JavaFX
  • Back end framework:Spring Boot
  • Database:Oracle
  • Tool quản lý task:Backlog
  • Communication tool:Slack
  • AI tool:GitHub Copilot
  • Tool khác:JasperReports v7.x

Vấn đề của khách hàng

  • Rủi ro bảo trì do phiên bản Java cũ (1.4.2_07) đã hết hỗ trợ
    Hệ thống hiện tại của khách hàng đang hoạt động trên phiên bản Java 1.4.2_07 đã hết hỗ trợ. Điều này gây ra các rủi ro bảo mật và khó khăn trong việc sửa lỗi, khiến việc vận hành và bảo trì ổn định trở nên khó khăn.
  • Cấu trúc Monolithic làm phức tạp hóa việc phát triển và mở rộng
    Toàn bộ hệ thống được xây dựng theo cấu trúc Monolithic, khiến việc thêm hoặc sửa đổi tính năng dễ ảnh hưởng đến các phần khác, làm tăng độ phức tạp trong phát triển. Đây cũng là một thách thức lớn vì tính linh hoạt của hệ thống cho các thay đổi hoặc mở rộng trong tương lai bị hạn chế nghiêm trọng.
  • Sự trì trệ trong phát triển tính năng do framework lỗi thời
    Hệ thống sử dụng Struts làm framework và SWT cho giao diện người dùng, tuy nhiên chúng đã trở nên lỗi thời và không còn đáp ứng được tiêu chuẩn kỹ thuật cũng như nhu cầu kinh doanh hiện tại. Đặc biệt, việc phát triển các giao diện và tính năng mới gặp nhiều khó khăn, gây chậm trễ trong việc đáp ứng các thay đổi của thị trường.
  • Vấn đề với công cụ báo cáo không tương thích môi trường 64bit
    Công cụ CoReports v8.5 được sử dụng để tạo báo cáo có một hạn chế nghiêm trọng là không thể hoạt động trên môi trường Java 64bit. Điều này không chỉ giới hạn môi trường thực thi của hệ thống mà còn đòi hỏi cấp thiết phải chuyển sang một giải pháp báo cáo hiện đại, dễ sử dụng và tiết kiệm chi phí hơn.

Yêu cầu của khách hàng

  • Hiện đại hóa lên Java 21 để đảm bảo tính tương thích và hiệu suất
    Yêu cầu lớn nhất là nâng cấp toàn bộ hệ thống từ phiên bản Java 1.4.2_07 đã hết hỗ trợ lên phiên bản LTS (Hỗ trợ dài hạn) mới nhất là Java 21. Điều này được kỳ vọng sẽ giải quyết các lỗ hổng bảo mật, đồng thời đảm bảo hiệu suất và tính tương thích lâu dài bằng công nghệ mới nhất.
  • Phân tách client-server làm tiền đề cho việc công khai API trong tương lai
    Khách hàng yêu cầu xem xét lại toàn bộ kiến trúc hệ thống, loại bỏ cấu trúc Monolithic và phân tách rõ ràng vai trò của client và server. Điều này không chỉ nhằm mục đích cải thiện khả năng bảo trì mà còn dự định chuyển đổi sang một cấu trúc có khả năng mở rộng cao, sẵn sàng cho việc công khai API máy chủ để liên kết với các hệ thống bên ngoài trong tương lai.
  • Chuyển đổi sang stack công nghệ hiện đại với Spring Boot và JavaFX
    Khách hàng yêu cầu loại bỏ framework Struts lỗi thời và chuyển sang Spring Boot, một framework phổ biến trong phát triển Java hiện đại. Giao diện người dùng (UI) cũng được yêu cầu làm mới từ SWT sang JavaFX để nâng cao trải nghiệm người dùng và hiệu quả phát triển GUI. Kèm theo đó, phương thức giao tiếp cũng được chuyển từ việc sử dụng Servlet trực tiếp sang Spring Web, và tăng cường bảo mật bằng Spring Security.
  • Chuyển đổi sang JasperReports đã có uy tín và lịch trình phát triển nhanh chóng
    Khách hàng chỉ định chuyển đổi từ CoReports v8.5 (không hoạt động trên môi trường 64bit) sang JasperReports v7.x, một công cụ tạo báo cáo hiệu quả và đã được chứng minh trong môi trường Java. Để giảm thiểu tác động đến hoạt động kinh doanh, khách hàng yêu cầu tất cả các công việc chuyển đổi này phải được tiến hành nhanh chóng và hệ thống mới phải đi vào hoạt động đúng theo lịch trình đã định.

Đề xuất và phương pháp tiếp cận của chúng tôi

  • Phát triển hệ thống mới dựa trên phân tích source code cũ và Wiki
    Chúng tôi bắt đầu bằng việc phân tích kỹ lưỡng source code của hệ thống cũ và tài liệu Wiki mô tả thông số kỹ thuật do khách hàng cung cấp. Dựa trên sự hiểu biết chính xác về logic và luồng nghiệp vụ của hệ thống cũ, chúng tôi đã phát triển source code cho hệ thống mới dựa trên Java 21 và Spring Boot. Phương pháp này đảm bảo tái hiện trung thực các chức năng của hệ thống cũ đồng thời chuyển đổi thành công sang kiến trúc mới nhất.
  • Phát triển công cụ tự động hóa nội bộ để tối ưu hóa quá trình chuyển đổi
    Do khối lượng source code cần chuyển đổi là rất lớn, việc chuyển đổi thủ công sẽ tiềm ẩn rủi ro về thời gian, chi phí và lỗi do con người. Vì vậy, chúng tôi đã chủ động phát triển và áp dụng một công cụ hỗ trợ chuyển đổi code dành riêng cho dự án này. Công cụ này đã tự động hóa phần lớn quy trình chuyển đổi từ code cũ sang code mới, giúp đảm bảo tính chính xác, nâng cao đáng kể hiệu quả phát triển và rút ngắn thời gian dự án.
  • Đảm bảo chất lượng và rút ngắn thời gian giao hàng bằng cách tận dụng AI và tối ưu hóa quy trình Test
    Để nâng cao hơn nữa hiệu quả phát triển, chúng tôi đã tích cực sử dụng các công cụ AI như GitHub Copilot. Đồng thời, nhận thấy khách hàng sẽ có một đội ngũ kiểm thử chuyên biệt sau khi quá trình phát triển hoàn tất, chúng tôi đã tập trung vào việc xây dựng các đặc tả kiểm tra (check specifications) và Unit Test. Bằng cách đề xuất và thực hiện một quy trình kiểm thử hiệu quả, loại bỏ sự trùng lặp công việc giữa người phát triển, người review và người kiểm thử, chúng tôi đã góp phần đẩy nhanh tốc độ phát triển mà vẫn đảm bảo chất lượng.
  • Tái hiện hoàn toàn logic nghiệp vụ bằng cách thực thi hệ thống cũ
    Để hiểu rõ các logic nghiệp vụ chi tiết và các đặc tả ngầm định mà tài liệu hay source code không thể hiện hết, chúng tôi đã trực tiếp chạy và xác minh hệ thống cũ. Điều này đảm bảo rằng hệ thống mới tái hiện đầy đủ và chính xác tất cả các chức năng và hoạt động của hệ thống cũ, đảm bảo tính liên tục trong kinh doanh sau khi chuyển đổi. Ngoài ra, đối với các vấnS đề bất ngờ phát sinh trong quá trình phát triển, chúng tôi đã nhanh chóng điều tra, nghiên cứu và chủ động đề xuất các phương án khắc phục cho khách hàng, giúp dự án diễn ra suôn sẻ.