Sai lầm của mình là học Docker đầu tiên phải học load balancing và DNS trước

Nhìn vào cậu em intern mới vào trong team. Thấy bóng dáng mình đâu đây phải viết ngay vài chữ không quên mà có thể giúp được anh em. Nói ra thì mất lòng, nhưng anh em mình phải nhìn thẳng một chuyện:

Đa số những người học Docker đầu tiên đều bắt đầu sai.

Mình cũng từng như thế. Hồi đó, cắm đầu vào containerize mọi thứ. App Go bé tí cũng phải build Dockerfile, Redis cũng phải chạy Docker Compose cho “ngầu”. Học Docker như học tiếng Anh: nhớ lệnh nhiều là thấy “pro”. Nhưng học riết rồi nhìn lại, hoá ra mình chỉ đang… bọc cái app lại rồi ship lung tung.

Nhưng rồi mọi thứ sụp đổ…

Lúc đụng vào Production thực tế, mọi thứ bung bét.

  • App scale lên 3 instance → gọi API không consistent.
  • Redis deploy container riêng → thỉnh thoảng tự mất kết nối.
  • Dùng Docker Compose cho staging → mỗi lần restart random service là phải đổi lại IP trong config.

Lúc ấy mình mới nhận ra:

“À, mình đang học ở tầng container mà không hiểu những thứ nằm dưới nó: load balancing, DNS, và network cơ bản (anh em nào từ Dev qua DevOps hiểu mình nói ngay).”

Container chỉ là lớp vỏ, bên dưới là network

Anh em cứ thử nghĩ mà xem:

Một con service được container hoá mà không thể kết nối ổn định tới Redis thì container có ích gì? Một app scale lên 5 replica mà gọi API mãi vẫn là instance cũ thì gọi là microservice sao?

Tất cả những vấn đề này đều liên quan đến:

  • DNS resolution
  • Service Discovery
  • Load balancing strategy (round robin, ip hash, consistent hash,…)
  • Health check, retry, circuit breaking (lớp logic đi kèm LB)

Docker mặc định sinh ra IP ngẫu nhiên cho container. Không có DNS hoặc static IP management → service không thể biết nhau. Compose thì có mạng bridge riêng, nhưng hễ container restart là IP đổi. Vậy mà mình cứ tưởng nó “auto hoạt động”.

Học đúng thứ tự mới sống sót “ổn” ở Production

Mình biết nhiều anh em đang vật lộn học DevOps qua các khóa Docker, Kubernetes… Nhưng hãy nhớ:

Docker không dạy bạn cách network hoạt động. Nó chỉ giúp bạn trốn tránh việc phải hiểu nó.

Học load balancing và DNS sớm sẽ giúp anh em:

  • Biết tại sao HAProxy, NGINX hay Envoy là cần thiết trước cả Docker
  • Hiểu khi nào dùng DNS SRV, khi nào nên dùng static IP hoặc Consul
  • Tránh chuyện “container chạy rồi mà service không truy cập được”
  • Tự xây được mô hình high availability bằng tay trước khi học đến orchestrator

Kết

Container là công cụ, không phải hệ thống. Muốn làm DevOps tử tế, học Docker sau network – không phải ngược lại.

Anh em đừng để mình học tool để “cảm thấy pro”, mà hãy học để giải được bài toán thật.

Article Thumbnail
Datadog Webinar: Modernize AWS Logs at Scale
Chia sẻ bài viết:
Theo dõi
Thông báo của
1 Bình luận
Được bỏ phiếu nhiều nhất
Mới nhất Cũ nhất
Phản hồi nội tuyến
Xem tất cả bình luận