Asked Aug 17th, 2020 10:21 a.m. 156 3 2
  • 156 3 2
+1

Hỏi về Docker

Share
  • 156 3 2

Mình đang tập tành tìm hiểu về server, muốn tự setup một webserver để chạy những project nho nhỏ...

Mọi người cho mình hỏi, ở môi trường production thì có nên sử dụng Docker không?

Cụ thể là mình cần sử dụng những service này:

  • mysql 5.7
  • php 7.4
  • apache 2.4

Việc cài trực tiếp từng service trên server so với sử dụng docker thì việc nào sẽ tốt hơn (performance, security,...).

Và nếu sử dụng Docker thì sẽ cần phải lưu ý điều gì cho môi trường production?

2 ANSWERS


Answered Aug 19th, 2020 1:09 a.m.
Accepted
+5

Mọi người cho mình hỏi, ở môi trường production thì có nên sử dụng Docker không?

Việc nên dùng hay không tùy thuộc vào quy mô, tính chất của sản phẩm, cũng như khả năng vận hành của bạn là chính thôi.

  • Ví dụ như bạn có một product nhỏ, tất cả các services chạy trên 1 server, thì có thể cài đặt thẳng mysql, php ... trên server đó luôn thôi, chẳng cần đến Docker làm gì cả. Ngược lại bạn có một services lớn, phải thiết kế để có thể scale dễ dàng khi cần thiết, thì lúc đó bạn có thể nghĩ đến Docker. Docker thật sự tỏa sáng khi bạn muốn chạy một hệ thống microservices trên production gồm nhiều server khác nhau, có thể auto deploy và auto scale theo từng service một, chẳng hạn.
  • Còn phụ thuộc vào khả năng vận hành tức là thiết kế hệ thống deploy bằng docker trên production sẽ khó khăn hơn, bạn cần đảm bảo có đủ effort, cũng như hiểu rõ về những gì mình sẽ làm, cũng như những bài toán mà mình có thể sẽ gặp phải ...

Việc cài trực tiếp từng service trên server so với sử dụng docker thì việc nào sẽ tốt hơn (performance, security,...).

Về cơ bản thì hệ thống deploy bằng Docker sẽ tốn nhiều resource phần cứng hơn so với hệ thống thông thường chạy thẳng các services trên máy host. Còn nói về performance tổng thể của product của bạn, thì cũng còn tùy thuộc vào product đó lớn đến thế nào, và cách bạn thiết kế server ra sao. Một hệ thống lớn deploy bằng Docker có khả năng scale tốt, vẫn có thể có performance tốt hơn so với hệ thống có giải pháp scale không phù hợp khi chạy các dịch vụ trên máy host.

Security thì mình không có ý kiến, nó phụ thuộc nhiều hơn vào bản thân ứng dụng của bạn, cũng như cách bạn config và sử dụng Docker hay php, nginx, mysql ... như thế nào, chứ bản thân Docker thì mình nghĩ không có vấn đề gì về bảo mật lớn cả (nếu có thì một sản phẩm Open Source lớn được cả thế giới sử dụng như Docker thì cũng sẽ được fix ngay thôi, chỉ cần update lên version mới hơn là được)

Và nếu sử dụng Docker thì sẽ cần phải lưu ý điều gì cho môi trường production?

Một số bài toán mà bạn sẽ gặp phải khi dùng Docker trên Production:

  • Bạn sẽ monitor các services bên trong từng Container như thế nào?
  • Code mới sẽ được deploy ra sao? Làm thế nào để auto deploy với zero-downtime? Làm thế nào để rollback khi quá trình deploy gặp lỗi?
  • Dữ liệu sẽ được backup như thế nào?
  • Các service như Cronjob, Queue Job sẽ được chạy ra sao?
  • Khi các service như PHP, Nginx ... hay bản thân Docker cần update version, thì cần phải xử lý như thế nào?
  • Các persistent data (database, users' upload data) sẽ được lưu trữ và quản lý như thế nào?
  • Lưu trữ và quản lý logs của containers ra sao?
  • Các kiến thức về Docker's orchestration khi cần scale trên multiple servers

Và có thể còn nhiều bài toán khác nữa ... (^^;) Tùy từng sản phẩm mà có thể sẽ phát sinh yêu cầu cần giải quyết các bài toán khác nhau ...

Share
Answered Aug 18th, 2020 9:35 a.m.
0
  1. Tất nhiên docker phải qua 1 layer nữa nên performance sẽ bị giảm, nhưng còn tuỳ vào nhu cầu của bạn nữa ( develop hay chạy prod).
  2. docker orchestration tools.
Share
Aug 18th, 2020 3:18 p.m.

Mình nghĩ nếu ứng dụng nhỏ, thì có thể cài docker cho mysql cũng được, nhiều container cùng chạy, tận dụng resource. Còn nếu ứng dụng lớn, chạy chuyên nghiệp, thì ko nên dùng docker, mà nên cài trực tiếp trên dedicated server. Và server đó chỉ có chạy mysql thôi.

0
| Reply
Share
Viblo
Let's register a Viblo Account to get more interesting posts.