Share
Với nhóm phát triển, việc deploy phần mềm (triển khai sử dụng phần mềm trong môi trường thực tế) là công việc hàng ngày. Để một phần mềm hoạt động được, lập trình viên cần phải cài đặt rất nhiều thư viện liên quan. Ví dụ, khi deploy dự án PHP, ta cần cài đặt server nginx hoặc apache, mysql, php, redis, composer, nodejs,…. Và khi deploy dự án tương tự, hoạt động cài đặt sẽ cần lặp lại. Vậy làm thế nào để cắt bớt phần công việc này?
Hơn nữa, cấu hình máy tính của mỗi developer là khác nhau, hệ điều hành khác nhau, làm sao để có môi trường chung mà ở đó tất cả lập trình viên đều cài đặt và chạy thành công được?
Sử dụng docker sẽ giúp ta giải quyết được những vấn đề này. Bài viết này tôi sẽ trình bày những lợi ích mà docker mang lại trong quá trình phát triển và deploy dự án. Nhưng trước tiên, hãy hiểu docker là gì và những hạn chế nếu dùng cách deploy thông thường.
Docker là một nền tảng mã nguồn mở. Nó cho phép các lập trình viên đóng gói các ứng dụng vào container — nơi có mọi thứ cần thiết phần mềm cần để chạy (thư viện, công cụ hệ thống, mã, thời gian chạy). Nhờ có Docker, phần mềm của bạn có thể chạy trong bất kỳ môi trường nào.
Docker cơ bản
Những hạn chế sau đây là lý do vì sao bạn nên sử dụng Docker khi deploy dự án.
Như đã nhắc đến trong phần đặt vấn đề, để chạy được dự án cần phải cài đặt rất nhiều thứ khiến chúng ta mất rất nhiều thời gian.
Trong một nhóm phát triển, các thành viên sử dụng các hệ điều hành khác nhau là chuyện rất thường gặp. Mỗi phần mềm trong dự án lại có các phiên bản khác nhau, tùy từng hệ điều hành và từng máy. Vậy nên việc máy này chạy được nhưng sang máy kia lại bị lỗi là chuyện rất thường gặp.
Việc phải cài đặt rất nhiều thành phần liên quan vốn đã làm chúng ta mất rất nhiều thời gian. Nếu mỗi môi trường chúng ta lại sử dụng hệ điều hành khác nhau thì thời gian lại tăng lên gấp bội. Đây là điểm hạn chế rất lớn nếu sử dụng cách deploy thông thường.
Chỉ cần vài dòng lệnh, lập trình viên đã tạo được môi trường ảo hóa chứa đầy đủ những thư viện cần thiết để chạy phần mềm. Các tài nguyên được chia sẻ linh hoạt giữa các container và không bị giới hạn tài nguyên vật lý cố định.
Docker rất dễ dàng cài đặt và sử dụng. Cho dù là developers, admin hệ thống hay architects cũng không mất quá nhiều thời gian để cài đặt. Hơn nữa, có thể đóng gói images trên laptop hoặc chạy trên server VPS hoặc cloud bất kỳ
Docker rất nhẹ và nhanh vì chạy trực tiếp trên cùng một nhân của hệ điều hành. Chúng ta có thể start các container chỉ trong vài giây, docker cũng có chế độ tự khởi động lại khi có một vấn đề nào đó xảy ra.
Khi ta cần chạy một dịch vụ nào đó, chỉ cần lên trên Docker Hub, tìm kiếm tên, và sử dụng tên đó trong Docker compose là chúng ta có thể dùng thư viện đó một cách dễ dàng. Hơn nữa ta cũng có thể tự tạo các image của riêng mình trên đó để phục vụ cho mục đích của cả nhân hay tập thể.
Kho thư viện Docker Hub
Mặc dù có nhiều ưu điểm nhưng docker cũng có một số hạn chế nhất định.
Mặc dù ưu điểm của Docker là không phải bàn cãi, nhưng sẽ vẫn có khuyết điểm. Nếu không quản lý Docker một cách hợp lý, một container chiếm dụng quá nhiều tài nguyên sẽ ảnh hưởng đến hiệu suất của các container khác trong cùng hệ thống. Điều này đương nhiên khiến hệ thống hoạt động kém ổn định.
Docker có rất nhiều khái niệm khác nhau và cũng khá trừu tượng. Để hiểu cụ thể về docker yêu cầu người sử dụng phải nắm vững các kiến thức cơ bản.
Như vậy, bài viết này tôi đã trình bày các vấn đề gặp phải khi sử dụng setup dự án kiểu thông thường, các ưu điểm cũng như nhược điểm khi sử dụng docker để setup dự án. Nhóm lập trình viên của Rabiloo đã thực hiện dự án có Docker và không có Docker. Với những kinh nghiệm đó, chúng tôi nhận định rằng Docker là công cụ có nhiều ưu điểm và mang lại nhiều giá trị.
Share