CodeGym /Các khóa học /C# SELF /Triển khai mã lên server

Triển khai mã lên server

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

1. Thay đổi mã

Như đã nói trước đó, phát triển phần mềm chủ yếu là việc chỉnh sửa nhỏ trong mã nguồn. Hàng triệu lập trình viên đã làm việc với quá trình này trong nhiều thập kỷ, dẫn đến việc nó được chuẩn hóa, chuẩn hóa và chính quy hóa theo mọi cách có thể.

Để lưu trữ mã nguồn, có một chương trình đặc biệt gọi là Git. Git là hệ thống quản lý version phân tán. Nó không chỉ lưu trữ mã, mà còn theo dõi tất cả các thay đổi trong đó và giúp các lập trình viên làm việc cùng nhau trên dự án mà không gây cản trở nhau 🤝.

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

2. Build dự án

Trước khi test hoặc upload dự án lên server, 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 thực thi hoặc các định dạng chạy khác, thường kèm theo test và deploy. Đây là bước quan trọng trong phát triển phần mềm, đảm bảo chương trình đã sẵn sàng để dùng.

Build không chỉ đơn thuần là compile, mặc dù compile 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 hoặc thậm chí hàng trăm file cần upload lên các server khác nhau.

Các build tools có thể là thấp cấp như:

  • ☕ Maven và Gradle – phổ biến trong các dự án Java để quản lý dependencies và build dự án.
  • 🐜 Apache Ant – một công cụ build khác cho Java, cung cấp nhiều linh hoạt trong viết script build.
  • 🖥️ MSBuild – dùng để build các dự án tạo bằng Microsoft Visual Studio.
  • ⚙️ Make – công cụ build cổ điển, dùng Makefile để định nghĩa quy tắc build, phổ biến trong các dự án C và C++.
  • 🌐 Webpack – thường dùng để build các ứng dụng JavaScript, quản lý dependencies và modules.
  • 📜 Gulp và Grunt – công cụ giúp tự động hóa các task thường gặp trong phát triển web, như minify files và compile SCSS thành CSS.

Ngoài ra còn có các build tools cao cấp hơn. Chi tiết về chúng – dưới đây.

3. CI/CD

🔄 CI/CD (Continuous Integration/Continuous Delivery) – phương pháp liên tục hợp nhất các thay đổi từ tất cả các branch vào branch chính, kèm theo tự động test và deploy. Giúp phát hiện và sửa lỗi nhanh hơn, 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, dù hơi cũ, là Jenkins. Nếu bạn làm trong công ty nhỏ, có 80% khả năng họ sẽ dùng chính nó.

🤖 Jenkins – hệ thống tự động phổ biến, dùng để CI/CD. Jenkins giúp tự động các bước phát triển phần mềm như build, test, deploy, giúp code chất lượng hơn và quá trình phát triển nhanh hơn.

Nếu bạn làm ở công ty lớn, có thể còn có 5 lựa chọn khác:

  • 🚦 TeamCity – hệ thống thương mại mạnh mẽ của JetBrains. Tích hợp sâu với nhiều môi trường phát triển và test.
  • 📝 GitLab CI – phần của GitLab, cung cấp CI/CD tích hợp sẵn, cấu hình qua YAML.
  • ☁️ CircleCI – dịch vụ CI/CD đám mây, tự động test và deploy nhiều dự án.
  • 🦑 Travis CI – một trong các dịch vụ CI đám mây đầu tiên, dùng nhiều trong các 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 Jira, Bitbucket.

Bạn không cần phải biết hết, vì thường trong công ty có DevOps chuyên lo các bước này. Bạn chỉ cần biết chúng tồn tại và hiểu ý nghĩa khi nghe đến Jenkins, CI/CD hay “continuous integration”.

4. Đưa dự án lên server

Viết xong dự án chưa đủ, nó còn phải lên server của bạn nữa. Thực chất, deploy (triển khai) dự án lên server là quá trình đặt và kích hoạt ứng dụng web trên server để nó có thể truy cập qua internet 🚚.

Quá trình này gồm chuyển các file dự án lên server, cấu hình môi trường server, database, dependencies, cùng với cấu hình mạng và bảo mật 😅.

Bạn nghĩ xem, mã của bạn có thể sẽ được upload lên server không? Ai đó sẽ làm điều đó giúp bạn? Hay bạn sẽ SSH vào server từ xa, upload vài file rồi tự cấu hình? Thoải mái đi: bây giờ không ai làm thế nữa. Giờ có Docker rồi.

🐳 Docker – nền tảng phát triển, phân phối và chạy ứng dụng qua container. Docker giúp dễ dàng tạo, deploy và chạy ứng dụng, đóng gói chúng cùng dependencies và môi trường trong một object nhỏ gọn. Điều này đảm bảo môi trường nhất quán từ phát triển đến test và production.

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

Dù trên các diễn đàn Docker có thể bị chửi là “máy ảo”, nhưng bạn có thể nghĩ về Docker container như một máy ảo nhỏ gọn. Chỉ là nhẹ hơn nhiều.

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

Việc deploy dự án qua Docker rất đơn giản, nhanh chóng và đáng tin cậy. Dự án đóng gói trong Docker container, dễ di chuyển và chạy trên bất kỳ hệ thống nào hỗ trợ Docker 🚢.

Điều này giúp tránh các vấn đề về khác biệt môi trường server, dễ 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 lợi và dễ làm.

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