12/08/2018, 18:15

Vài bước trước khi move ứng dụng sang docker

Có người khuyên chúng t nên build ứng dụng của mình với Docker. Chúng ta đã research và quyết định rằng sẽ chuyển từ build ứng dụng theo cách thông thường sang dùng docker. Dưới đây là một vài bước có thể có ích trước khi chuyển sang dùng docker. 1. Đặt câu hỏi là ngôn ngữ gì viết lên ứng dụng ...

Có người khuyên chúng t nên build ứng dụng của mình với Docker. Chúng ta đã research và quyết định rằng sẽ chuyển từ build ứng dụng theo cách thông thường sang dùng docker. Dưới đây là một vài bước có thể có ích trước khi chuyển sang dùng docker.

1. Đặt câu hỏi là ngôn ngữ gì viết lên ứng dụng của chúng t

Ví dụ là Ruby on Rails application thì ta có thể biết là nó được viết bởi ngôn ngữ ruby. Ngoài ra cũng cần tìm hiểu, cần biết rằng ứng dụng này có thể phụ thuộc vào các ngôn ngữ nào khác không, chẳng hạn nó có thể phụ thuộc vào NodeJs để biên dịch.

2. Ứng dụng của chúng ta có đang cần dịch vụ của bên thứ ba hay không

Điều này có nghĩa rằng ứng dụng hiện tại của chúng ta có đang cần dịch vụ bên ngoài để chạy được hay không. Ví dụ loại database chúng ta đang sử dụng là gì? Làm thế nào để cache phía back-ends, phía server?
Bên thứ ba đây không phải là dùng API của dịch vụ khác nhé. Mà đây là những gì cần thiết lập trong môi trường phát triển ứng dụng của chúng ta. Và liệu rằng chúng có thể được quản lý bởi Vagrant hay máy ảo không?
Hãy viết ra danh sách các dịch vụ mà ứng dụng của chúng ta phụ thuộc vào, sau đó nghiên cứu lựa chọn hướng đi đúng đắng nhất.
Ví dụ: Ứng dụng cũ của chúng ta đang dùng trên môi trường A, sử dụng loại database B thì phù hợp. Nhưng bây giờ chuyển sang build ứng dụng với docker dựa trên môi trường A1 thì nên sử dụng loại database B1 hoặc B2 thì thích hợp hơn.

3. Chú ý một số điều khác ứng dụng phụ thuộc vào

Ví dụ : máy chủ ứng dụng,...
Với ứng dụng Ruby on Rails thì bộ môi trường chuẩn bao gồm Puma (web server), Sideiq (background workder) và thậm chí là ActionCable (websocket server). Cái này là trên mạng nói thế chứ mình không phải dân RoR nên không biết chắc liệu có đúng không. =))
Theo mình nghĩ thì những yếu tố này khác với những dịch vụ bên thứ ba (như kiểu MySql, Redis, PostgreSQL...)
Điều mà làm cho chúng khác với PostgreSQL, Resdis hay MySql đó là PostgreSQL, Resdis hay MySql có thể được dùng với tất cả các ngôn ngữ lập trình. Trong khi đó Puma, Sideiq, ActionCable được gắn với Ruby.

4. Ứng dụng chạy Hệ điều hành nào?

Có vẻ như hầu hết nếu chúng ta không sử dụng docker thì sẽ thường bị lộn xộn ở bước quản lý môi trường vì chúng ta đã phụ thuộc vào việc có toàn bộ các thư viện, các tool được cài đặt trên máy trong nhiều năm nên chúng ta quên điều này.
Điều này càng trở nên rõ ràng khi chúng ta cố gắng triển khai ứng dụng của mình nên một môi trường khác, khi đó sẽ phải cài cắm lại nhiều thứ. Đó là lý do vì sao nên sử dụng docker.
Hãy dành một vài phút để xem lại các files, tệp trong ứng dụng (ví dụ: gemfile, requiments.txt, package.json,....). Từ tên, đuôi file có thể khiến chúng ta suy nghĩ lại những gì cần cài đặt trên hệ thống để làm cho ứng dụng hoạt động.
Bằng cách cẩn thận ở những bước này sẽ tiết kiện được nhiều thời gian trong tương lai.

5. Sử dụng Docker hub

Nó cũng tương tự như github. Đât là nơi chúng ta có thể tìm các images có sẵn và lưu các images của chúng ta tạo ra, sau này cần có thể lên đây lấy về dùng rất tiện.

0