Docker [101] : Tám nhảm trước đã.

Cái blog này sinh ra để mình note chặng đường chạy iot với operation của mình là chính.. Thế mà tới giờ vô tình bất thình lình toàn up doc chả liên quan. Hôm nay viết bài Docker đầu tiên. Seri này sẽ khá dài và đều, vì mình thích nó hơn.

Nếu các bạn đã đọc cái bài về ảo hóa với container của mình thì có thể đã thấy cơ bản về vấn đề hệ thống, đại khái là không hoàn thiện đâu chỉ là có cái khung xương thôi. Nên là giờ chúng ta sẽ nói về docker.Đầu tiên chúng ta phải hiểu rõ Docker là gì trước đã.

Trong quy trình phát triển phần mềm trước đây chúng ta, base job có thể chia ra các theo bảng sau.

Image for post

Thứ ở bảng trên là I-Shape Dev trong Web-base dev. Ừ thì thật ra cũng không quan trọng, các bạn có thể dọc về I-Shape, T-Shape, M-Shape ở khắp mọi nơi mà ở đây mình chỉ nói về nút thắt cổ chai ở trong bộ phận này ở đâu, và nó nặng nề thế nào.

Tất cả bị ảnh hưởng bởi phần cứng, triển khai môi trường phần cứng là nút thắt trong quy trình. Ở trên ta có thể nhìn thấy ngoại trừ Analyst thì cả Programmer, Test và Designer ( ở đây là web frontend) đều là phần ảo, có nghĩa công việc không thể hoàn thành nếu phần cứng của mỗi máy cá nhân hay môi trường deploy có vấn đề. Trong thực tế với quy trình triển khai phát triển phần mềm cũ luôn bị chững lại lâu nhất ở phần liên quan tới Operation bởi sự rời rạc của bộ phận phòng ban này với bộ phận phát triển phần mềm.

  • Không có môi trường phần cứng thì không thể triển khai UAT, PRODUCTION.
  • Không có môi trường phần cứng thì việc Code cũng như đồng bộ đều gặp vấn đề.
  • Trong môi trường manual deploy cũ việc khác biệt về phần cứng cũng như sự khác biệt về OS khiến việc lỗi triển khai giai đoạn thiết lập môi trường trở lên cực kì lớn. Điều này tiếp diễn tới hết vòng đời phát triển sản phẩm khi sự bất đồng bộ vẫn ở đó tới khi demo.
  • À thì các bạn dev chân yếu tay mềm thường không phải ai cũng biết đi dây mạng, thiết lập hardware, subnet, loadbalance, proxy etc.

Vậy thì giải pháp của vấn trên đó là chúng ta làm cách nào đấy để các dev mỏng manh yếu đuối không còn phải bận tâm về phần cứng vật lý nữa và cho họ control ở tầng IaaS, Paas. Điều này dẫn tới bài về Virtualization và Containerization của mình ở trước.

Mình sẽ mặc định là các bạn đọc qua bài đó rồi


Vậy thì cái bàn đến ở đây là container hóa tồn tại ở tầng IaaS. Về cơ bản là việc đóng gói các khối OS+Module+Code, mở các cổng tương tác cho khối đó để nó có thể dễ dàng nhân rộng, điều tiết dựa trên yêu cầu thực tế của hệ thống. Docker là một nền tảng Container và là nền tảng Container đang được ưa chuộng nhất trên thị trường, tất yếu dẫn đến việc chúng ta học nó thôi.

Tổng hợp lại chút tác dụng với container mà ai cũng nghe quá nhiều rồi:

  • Đóng gói, nguyên gói sẵn ống hút.
  • Ứng dụng khởi chạy môi trường, nhanh hơn hẳn ảo hóa về tốc độ do dùng chung nhân nên giảm tải hoàn toàn khâu khởi động.
  • Áp dụng mạnh trong môi trường scale cao dưới dạng các hệ thống microservices.
  • Áp dụng trong tạo ra môi trường đồng nhất trong devlop.
  • Là core của ý tưởng hệ thống CI/CD đồng nhất hiện hành.

Tuy nhiên Docker không phải là người chơi duy nhất trong mảng container. Dưới đây là các nền tảng tương tự tất nhiên là không đồng nhất.

Sự thay đổi từ những vấn đề thực tế từ hơn chục năm trước sản sinh ra microservices. Sự xuất hiện của các hệ thống siêu lớn khiến microservices là lựa chọn toàn diện nhất dẫn tới container mạnh lên từng ngày và những ứng dụng của nó trở lên không thể bàn cãi.

Nên là chúng ta học nó thôi.

Ừ thế nên là mấy hôm nữa vào bài chính.

Leave a Reply

Your email address will not be published. Required fields are marked *