18.1 Cân nhắc các tùy chọn triển khai
Bạn có thể xây dựng và chạy các ứng dụng Spring Boot theo nhiều cách khác nhau, bao gồm những cách sau:
- Chạy ứng dụng trực tiếp trong IDE bằng Spring Tool Suite hoặc IntelliJ IDEA
- Chạy ứng dụng từ dòng lệnh bằng mục tiêu Maven
springboot:runhoặc tác vụ GradlebootRun - Sử dụng Maven hoặc Gradle để tạo một tệp JAR thực thi có thể được chạy từ dòng lệnh hoặc triển khai lên đám mây
- Sử dụng Maven hoặc Gradle để tạo một tệp WAR có thể được triển khai lên máy chủ ứng dụng Java truyền thống
- Sử dụng Maven hoặc Gradle để tạo một image container có thể triển khai ở bất cứ đâu hỗ trợ container, bao gồm cả môi trường Kubernetes
Bất kỳ lựa chọn nào trong số này cũng phù hợp để chạy ứng dụng trong quá trình bạn đang phát triển. Nhưng còn khi bạn sẵn sàng triển khai ứng dụng vào môi trường sản xuất hoặc môi trường ngoài phát triển thì sao?
Mặc dù việc chạy ứng dụng từ IDE hoặc thông qua Maven hay Gradle không được xem là phương án sẵn sàng cho sản xuất, các tệp JAR thực thi và tệp WAR truyền thống của Java chắc chắn là những tùy chọn hợp lệ để triển khai ứng dụng vào môi trường sản xuất. Với các tùy chọn triển khai là tệp WAR, tệp JAR hoặc image container, làm sao để bạn chọn được phương án phù hợp? Nói chung, lựa chọn phụ thuộc vào việc bạn dự định triển khai ứng dụng lên máy chủ ứng dụng Java truyền thống hay một nền tảng đám mây, như được mô tả dưới đây:
- Triển khai lên nền tảng đám mây dạng PaaS (Platform as a Service) — Nếu bạn dự định triển khai ứng dụng lên nền tảng đám mây PaaS như Cloud Foundry https://www.cloudfoundry.org/, thì một tệp JAR thực thi là một lựa chọn tốt. Ngay cả khi nền tảng đám mây hỗ trợ triển khai WAR, thì định dạng JAR vẫn đơn giản hơn nhiều so với WAR, vốn được thiết kế dành cho triển khai trên máy chủ ứng dụng.
- Triển khai lên máy chủ ứng dụng Java — Nếu bạn bắt buộc phải triển khai ứng dụng lên Tomcat, WebSphere, WebLogic hoặc bất kỳ máy chủ ứng dụng Java truyền thống nào, thì bạn không có lựa chọn nào khác ngoài việc xây dựng ứng dụng dưới dạng tệp WAR.
- Triển khai lên Kubernetes — Các nền tảng đám mây hiện đại ngày càng dựa trên Kubernetes https://kubernetes.io/. Khi triển khai lên Kubernetes – vốn là một hệ thống điều phối container – lựa chọn hiển nhiên là xây dựng ứng dụng thành image container.
Trong chương này, chúng ta sẽ tập trung vào ba kịch bản triển khai sau:
- Xây dựng ứng dụng Spring Boot dưới dạng tệp JAR thực thi, có thể được đẩy lên nền tảng PaaS
- Triển khai ứng dụng Spring Boot dưới dạng tệp WAR lên máy chủ ứng dụng Java như Tomcat
- Đóng gói ứng dụng Spring Boot dưới dạng image Docker để triển khai lên bất kỳ nền tảng nào hỗ trợ Docker
Để bắt đầu, hãy cùng tìm hiểu phương pháp có lẽ phổ biến nhất để xây dựng một ứng dụng Spring Boot: dưới dạng tệp JAR thực thi.
