Hi em, cám ơn em đã đặt câu hỏi nhé, anh xin trả lời nhé.
- Ở các công ty khác thì anh không rõ, nhưng các công ty anh đã làm qua thì có 2 kiểu deploy:
a. Deploy không qua docker image:
- cách này phù hợp với mọi loại dự án
- Ưu điểm:
+ Đơn giản, không cần học nhiều kiến thức, ném file jar lên server rồi chạy java -jar
là được
+ Không cần cài cắm thêm gì, có thể deploy ở đâu cũng được, miễn là có java
+ Lúc cần có thể ssh
vào server tương đối dễ dàng để xem log
+ Đặc biết là khi deploy có thể giữ được các file cấu hình mà không cần thiết phải xoá đi tạo lại
+ Có thể sử dụng chung được các thư viện nên deploy rất nhẹ nhàng. Ví dụ bọn anh có 10 module, module nào cũng dùng các thư viện tương tự, nên khi deploy bọn anh chỉ cần deploy file jar của module của bọn anh thôi
+ Lúc đầu khởi tạo môi trường cho server khá vất, cài cắm java các thứ
+ Khó nâng cấp phiên bản: Giả sử mà server đang cài java8 rồi mà muốn nâng cấp lên java 11 là tương đối rủi ro
+ Khó có khả năng chạy nhiều phiên bản trên cùng 1 server vật lý
b. Deploy thông quan image
- Cách này cũng phù hợp với mọi dự án
- Ưu điểm:
+ Đóng gói tốt và nâng cấp dễ: Nó sẽ đóng gói mọi thứ vào image, từ java cho đến mọi thứ liên quan nên khi đã đóng được thành image rồi thì triển khai rất dễ, đúng 1 dòng lệnh là xong
+ Có thể chạy nhiều phiên bản trên cùng 1 server vật lý từ đó tận dụng được khá tốt tài nguyên.
+ Đối với người mới tiếp cận tương đối khó khăn, phải học nhiều thứ
+ Phải cài cắm rất nhiều, và nên dựng thành CD/CI thì đóng image mới dễ
- Anh có viết 1 bài ở mức basic em có thể tham khảo nhé: https://tvd12.com/continuous-deployment-cd/