Tại sao triển khai EzyPlatform lại không cần thông qua Docker?
Back To BlogsNgày nay Docker là một công cụ phổ biến đến mức nhiều bạn hiểu nhầm rằng cứ triển khai là sử dụng Docker, điều này không thực sự đúng. Việc sử Docker hay không còn tuỳ thuộc vào dự án, vào framework lập trình, vào mô hình triển khai. Với EzyPlatform chúng ta sẽ không cần dùng đến Docker, để hiểu lý do tại sao chúng ta sẽ cùng đi vào chi tiết nhé.
EzyPlatform và Docker có những khái niệm tương đồng
Cả EzyPlatform và Docker đều không phải máy ảo, nó đóng vai trò là container thì đúng hơn.
Khái niệm máy ảo

Máy ảo (Virtual Machine - VM) là một phần mềm giả lập một hệ thống máy tính, cho phép chạy một hệ điều hành và các ứng dụng trên một máy tính khác với hệ điều hành chủ. Nó hoạt động như một máy tính thật, nhưng tất cả đều được thực hiện trong một môi trường ảo hóa. Ví dụ bạn có thể sử dụng VMware để cài một máy ảo chạy hệ điều hành Ubuntu trên hệ điều hành Windows.
Máy ảo hoạt động độc lập với hệ điều hành chủ và các máy ảo khác, đảm bảo rằng các ứng dụng và dữ liệu trong máy ảo không ảnh hưởng đến hệ thống chủ.
Cả EzyPlatform và docker không cần chạy trên một hệ điều hành khác với hệ điều hành chủ, ví dụ bạn không phải cài đặt hệ điều hành Ubuntu trên Windows để có thể chạy được EzyPlatform và Docker, bạn có thể chạy chúng luôn trên Windows cũng được. Cả EzyPlatform và docker không hoàn toàn hoạt động độc lập với hệ điều hành, nó vẫn chia sẻ tài nguyên như RAM, CPU với hệ điều hành vì vậy chúng không phải là máy ảo.
Khái niệm container

Container là một công nghệ ảo hóa ở cấp độ hệ điều hành, cho phép bạn đóng gói một ứng dụng cùng với tất cả các phụ thuộc của nó (như thư viện, cấu hình, và các file cần thiết) vào một gói duy nhất. Điều này giúp đảm bảo rằng ứng dụng có thể chạy nhất quán trên bất kỳ môi trường nào, từ máy tính cá nhân đến các máy chủ.
Một số đặc điểm chính của container bao gồm:
- Cách ly: Container cung cấp một môi trường cách ly cho ứng dụng, giúp ngăn chặn xung đột giữa các ứng dụng khác nhau chạy trên cùng một hệ thống.
- Tính di động: Container có thể dễ dàng di chuyển giữa các môi trường khác nhau mà không cần thay đổi cấu hình.
- Hiệu quả tài nguyên: Container sử dụng tài nguyên hệ thống hiệu quả hơn so với máy ảo, vì chúng chia sẻ cùng một kernel của hệ điều hành.
Cả EzyPlatform và Docker đều có những đặc điểm này, với EzyPlatform nó cho phép đóng gói các plugin vào một container để triển khai độc lập, có thể dễ dàng di chuyển mà không cần thay đổi cấu hình gì và chia sẻ tài nguyên với hệ điều hành, bạn có thể cài nhiều EzyPlatform trên một máy hoặc các chương trình khác nhau cùng với EzyPlatform.
Chính vì những đặc điểm tương đồng này mà một khi bạn đã sử dụng EzyPlatform rồi thì không cần phải có thêm Docker nữa để tối ưu tài nguyên cũng như hiệu năng.
EzyPlatform có những đặc điểm khác biệt
Có thể nâng cấp mà không phải đóng gói lại
Với docker mỗi lần có phiên bản mới bạn sẽ cần đóng gói và triển khai lại, tuy nhiên với EzyPlatform bạn chỉ đơn giản là nâng cấp chính nó hoặc các plugin và khởi động lại thông qua giao diện admin, nó thậm chí không cần đến đội ngũ DevOps cài đặt CI/CD phức tạp.

Có cấu trúc tập tin riêng
EzyPlatform có cách tổ chức tập tin riêng biệt đặc biệt liên quan đến các tập tin cấu hình và các được tải lên bởi người dùng, nếu bạn muốn sử Docker, bạn sẽ phải mount thư mục ra ngoài, để khi khởi động lại thì những tập tin này không bị mất hoặc trở lại mặc định, như vậy tự nhiên lại thêm công thêm việc.

Tổng kết
Nhìn chung sử dụng Docker để triển khai EzyPlatform không phải là ý tưởng tốt vì giữa EzyPlatform và Docker có những điểm tương đồng, ngoài ra nếu sử dụng Docker bạn sẽ phải thêm một số thao tác phức tạp trong khi EzyPlatform đã cung cấp sẵn những khả năng DevOps rất tiện rồi, ví dụ có thể nâng cấp mà không cần đóng gói lại.