Lịch sử hình thành Docker

Traditional Deployment

Xưa thật là xưa, mô hình máy chủ thường là máy chủ vật lý + hệ điều hành(OS) + application

Vấn đề gặp phải ở đây là lãng phí tài nguyên, một máy chủ chỉ cài được một OS, cho dù có ổ cứng khủng, ram khủng thì cũng không tận dụng hết lợi thế. Nếu để nhiều ứng dụng lên để tận dụng tài nguyên thì lúc đó lại phát sinh vấn đề về tương thích version library, runtime, version của OS…Không lẽ mỗi ứng dụng mua một server? chưa nói đến tiền, chỗ đâu để đặt server…? Vậy là cái khó ló cái khôn, thế giới công nghệ tiến hoá qua một thời kỳ mới “ảo hoá” (vitualization)

Virtualized Deployment

Cũng là xưa nhưng chưa xưa lắm, công nghệ ảo hoá ra đời, với công nghệ này, trên một máy chủ vật lý mình có thể tạo được nhiều máy ảo, các máy ảo này chạy độc lập, có thể cài đặt nhiều hệ điều hành khác nhau trên cùng một máy vật lý, tận dụng tài nguyên đã tốt hơn, giải quyết được những vấn đề nan giải của mô hình Traditional Deployment nhưng lúc này lại nảy sinh những yêu cầu mới để kịp với thời đại mới: tận dụng tài nguyên tốt hơn nữa, triển khai nhanh hơn…

  • Khi chạy máy ảo, bạn phải cung cấp “cứng” ổ cứng cũng như ram cho máy ảo đó, bật máy ảo lên để đó không làm gì thì máy thật cũng phải phân phát tài nguyên.
  • Việc khởi động, shutdown khá lâu, có thể lên tới hàng phút.

Những tên tuổi đại diện cho mô hình này: Vitualbox, VMware, Virtual Server. Nổi bật nhất là VMware trong lĩnh vực này.

  • Nếu ai đã từng khi triển khai một dự án run dưới local chạy demo thì ngon vãi nhưng khi deploy lên server thì sập vỡ mặt thì đã đến lúc nghỉ đến một bước tiến hoá mới containerization.
  • Nếu ai đã từng phải mất hàng ngày trời để setup môi trường DEV, SIT, UAT, PRD thì cũng đã đến lúc nghỉ đến một bước tiến hoá mới containerization.

Container Deployment

Ngày nảy ngày nay, người ta sinh ra công nghệ containerlization. Ở bước tiến hóa này, trên một máy chủ vật lý, ta sẽ sinh ra được nhiều “máy con” (giống với công nghệ ảo hóa vitualization), nhưng tốt hơn ở chỗ là các “máy con” này đều dùng chung phần nhân (OS kernel) của máy mẹ (host OS) và chia sẻ với nhau tài nguyên máy mẹ. Bên cạnh đó, nó giúp:

  • Tạo ra một môi trường chứa “mọi thứ” mà application cần để có thể chạy được.
  • Không bị các yếu tố liên quan đến môi trường hệ thống làm ảnh hưởng tới.
  • Cũng như không làm ảnh hưởng tới các phần còn lại của hệ thống.

Những tên tuổi đại diện cho mô hình này: Docker, rkt, RXD,… Nổi bật nhất là Docker trong lĩnh vực này.

Quá trình tiến hoá

Leave a Reply

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