CodeGym /Các khóa học /JAVA 25 SELF /Triển khai mã lên máy chủ

Triển khai mã lên máy chủ

JAVA 25 SELF
Mức độ , Bài học
Có sẵn

1. Thực hiện thay đổi trong mã

Như đã đề cập trước đó, phát triển phần mềm chủ yếu là thực hiện những thay đổi nhỏ trong mã. Hàng triệu lập trình viên đã làm việc này qua nhiều thập kỷ, dẫn đến việc quy trình được tinh chỉnh, tiêu chuẩn hóa và chính thức hóa theo mọi cách có thể.

Để lưu trữ mã có một công cụ chuyên dụng – Git. Git là hệ thống quản lý phiên bản phân tán. Nó không chỉ lưu trữ mã mà còn theo dõi mọi thay đổi trong đó và giúp lập trình viên cùng làm việc trên dự án mà không cản trở lẫn nhau 🤝.

Với Git, lập trình viên có thể tạo các phiên bản khác nhau của dự án (nhánh), lưu toàn bộ lịch sử thay đổi và thậm chí quay lại bất kỳ thời điểm nào trong quá khứ. Nó như một cỗ máy thời gian cho mã vậy! Git giúp gộp (merge) các thay đổi và giải quyết xung đột, vì thế nó đã trở thành công cụ chủ chốt cho làm việc nhóm trong phát triển hiện đại. 👩‍💻

2. Build dự án

Trước khi kiểm thử dự án hoặc tải lên máy chủ, bạn cần build nó.

🏗️ Build dự án là quá trình biên dịch mã nguồn của dự án thành các chương trình có thể thực thi hoặc các định dạng có thể chạy khác, thường kèm theo kiểm thử và triển khai. Đây là khía cạnh then chốt của phát triển phần mềm, đảm bảo chương trình sẵn sàng để sử dụng.

Build không chỉ là biên dịch, dù biên dịch thường là một phần của quá trình build. Sau khi build xong, bạn có thể có hàng chục, thậm chí hàng trăm tệp cần tải lên nhiều máy chủ khác nhau.

Có các công cụ build cấp thấp như:

  • MavenGradle – được dùng rộng rãi trong các dự án Java để quản lý phụ thuộc và build dự án.
  • 🐜 Apache Ant – một công cụ build khác cho các dự án Java, cung cấp độ linh hoạt cao khi viết kịch bản build.
  • 🖥️ MSBuild – dùng để build các dự án được tạo bằng Microsoft Visual Studio.
  • ⚙️ Make – công cụ build kinh điển dùng Makefile để định nghĩa quy tắc build, đặc biệt phổ biến trong các dự án C và C++.
  • 🌐 Webpack – thường dùng để build ứng dụng JavaScript, quản lý phụ thuộc và mô-đun.
  • 📜 GulpGrunt – các công cụ giúp tự động hóa các tác vụ thường làm trong phát triển web, như thu nhỏ (minify) tệp và biên dịch SCSS sang CSS.

Cũng có các công cụ build cấp cao. Về chúng – ở phần dưới.

3. CI/CD

🔄 CI/CD (Continuous Integration/Continuous Delivery) là một phương pháp luận giả định việc liên tục hợp nhất các thay đổi từ mọi nhánh phát triển vào nhánh chính, cũng như tự động kiểm thử và triển khai các thay đổi đó. Điều này cho phép phát hiện và sửa lỗi nhanh, nâng cao hiệu quả và tốc độ phát triển.

Một trong những hệ thống CI/CD phổ biến nhất, dù hơi lỗi thời, là Jenkins. Nếu bạn làm việc ở một công ty nhỏ, có khả năng 80% là họ sẽ dùng chính công cụ này.

🤖 Jenkins là hệ thống tự động hóa phổ biến, dùng cho tích hợp liên tục và phân phối liên tục (CI/CD). Jenkins cho phép tự động hóa các giai đoạn khác nhau của phát triển phần mềm, bao gồm build, kiểm thử và triển khai, giúp cải thiện chất lượng mã và tăng tốc quá trình phát triển.

Nếu bạn vào một công ty lớn, ở đó có thể có thêm 5 lựa chọn sau:

  • 🚦 TeamCity – hệ thống thương mại mạnh mẽ của JetBrains. Cung cấp tích hợp sâu với nhiều môi trường phát triển và kiểm thử.
  • 📝 GitLab CI – một phần tích hợp sẵn trong GitLab, cung cấp tích hợp và phân phối liên tục với khả năng cấu hình qua tệp YAML.
  • ☁️ CircleCI – dịch vụ CI/CD trên đám mây, hỗ trợ tự động hóa kiểm thử và triển khai cho nhiều loại dự án.
  • 🦑 Travis CI – một trong những dịch vụ CI đám mây đầu tiên, được dùng trong rất nhiều dự án mã nguồn mở. Tích hợp tốt với GitHub.
  • 🎍 Bamboo – sản phẩm của Atlassian, tích hợp chặt chẽ với các công cụ khác của hãng, như Jira và Bitbucket.

Bạn không cần phải biết và thành thạo làm việc với chúng — thường trong công ty đã có các chuyên gia DevOps thiết lập tất cả các quy trình này. Bạn chỉ cần biết chúng tồn tại và hiểu đang nói về điều gì nếu trong cuộc trò chuyện có nhắc tới Jenkins, CI/CD hoặc “continuous integration”.

4. Đưa dự án lên máy chủ

Viết xong dự án là chưa đủ — nó còn phải xuất hiện trên máy chủ của bạn. Nói chung, triển khai (deploy) dự án lên máy chủ là quá trình đặt và kích hoạt ứng dụng web trên máy chủ theo cách để người dùng có thể truy cập qua Internet 🚚.

Quá trình này bao gồm chuyển các tệp của dự án lên máy chủ, cấu hình môi trường máy chủ, cơ sở dữ liệu, các phụ thuộc, cũng như cấu hình mạng và bảo mật 😅.

Bạn nghĩ mã của mình sẽ lên máy chủ như thế nào? Sẽ có ai đó tải nó lên chứ? Hay có lẽ bạn sẽ kết nối SSH tới máy chủ từ xa, tải lên vài tệp và tự cấu hình mọi thứ? Yên tâm: giờ không ai làm như vậy nữa. Giờ đã có Docker.

🐳 Docker là nền tảng để phát triển, phân phối và chạy ứng dụng bằng container. Docker đơn giản hóa việc tạo, triển khai và chạy ứng dụng bằng cách đóng gói chúng cùng tất cả phụ thuộc và môi trường vào một đối tượng gọn nhẹ duy nhất. Điều này đảm bảo tính nhất quán của môi trường ở mọi giai đoạn: từ phát triển đến kiểm thử và production.

Docker cho phép bạn đóng gói dự án (hoặc nhiều dự án) vào container Docker. Nó giống như một máy ảo.

Mặc dù ở bất kỳ diễn đàn Docker nào bạn cũng có thể bị ném đá nếu gọi nó là “máy ảo”, bạn có thể nghĩ về container Docker như một máy ảo — chỉ là nhẹ hơn rất nhiều.

Về bản chất, container Docker là một “máy ảo” ảo. Máy ảo bao gồm bản sao đầy đủ của hệ điều hành, kernel của hệ điều hành và phần cứng ảo, trong khi container Docker chia sẻ kernel của máy chủ và có thể nhẹ, nhanh hơn .

Triển khai dự án bằng Docker giúp đơn giản hóa quy trình đáng kể, đảm bảo tốc độ và độ tin cậy. Dự án được đóng gói vào các container Docker có thể dễ dàng di chuyển và chạy trên bất kỳ hệ thống nào hỗ trợ Docker 🚢.

Điều này loại bỏ các vấn đề liên quan đến khác biệt môi trường máy chủ và cho phép dễ dàng mở rộng ứng dụng bằng cách thêm hoặc bớt container theo tải. Mọi người đều đã chuyển sang Docker — rất tiện và rất đơn giản.

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION