Dạo này lướt mấy diễn đàn công nghệ, tôi thấy có một chuyện khá là buồn cười. Tôi thấy nhiều team bé tí, chỉ có vài ba người, khách hàng thì lèo tèo, lượng truy cập mỗi tuần đếm trên đầu ngón tay. Ấy thế mà không hiểu sao, cái hạ tầng của họ lại phức tạp kinh khủng, dùng cả Kubernetes cứ như thể đang chạy cho một tập đoàn lớn vậy.

Tôi không có ý chê bai gì, nhưng đôi khi chúng ta nên tự hỏi lại chính mình một cách thật lòng. Liệu có phải lượng file cấu hình YAML của bạn đang nhiều hơn cả code xử lý nghiệp vụ không? Khi ứng dụng có lỗi, câu đầu tiên bạn thốt ra là: để check log của pod thay vì xem lại stack trace? Nếu câu trả lời là có, thì có lẽ thứ bạn đang thật sự cần không phải là một hệ thống có thể mở rộng đến vô tận đâu. Thứ bạn cần là một giấc ngủ ngon, và một kiến trúc hệ thống đơn giản hơn.
Nhiều người bị cuốn vào cái vòng xoáy hào nhoáng của Kubernetes. Người ta nói về nó như một cây đũa thần: tự động sửa lỗi, tự động mở rộng, làm cho hồ sơ của bạn trông hoành tráng hơn trong mắt nhà tuyển dụng. Nhưng đó là câu chuyện của những công ty khổng lồ.
Còn với một đội nhóm nhỏ, thực tế thường rất phũ phàng. Bạn tự rước vào hệ thống của mình cả đống thứ phức tạp, đến mức việc bảo trì nó cũng đủ mệt. Gỡ lỗi thì như mò kim đáy bể vì log bị giấu ở đâu đâu. Mỗi lần có người mới vào làm, việc hướng dẫn họ về hệ thống cũng gian nan như một nhiệm vụ trong game khó. Bất giác, bạn có thêm một công việc mới không lương là: trông trẻ cho K8s. Từ một lệnh docker run
đơn giản, giờ đây bạn phải ngồi cầu nguyện cho các pod chạy đúng ý trước mỗi buổi demo.
Thực tế thì có khi anh em chỉ cần một vài thứ rất cơ bản để bắt đầu thôi:
- Cái Docker Compose cũ kỹ mà hiệu quả.
- Một con server đơn giản, có thể thêm một cái cron job.
- Một quy trình CI/CD ổn áp.
- Dùng các dịch vụ được quản lý sẵn cho database hay lưu trữ.
- Và quan trọng nhất là được ăn ngủ đầy đủ.
Cái ham muốn tỏ ra chuyên nghiệp đôi khi làm chúng ta mệt mỏi. Miệng thì nói về những thứ cao siêu như microservice, gRPC, Istio này nọ, nhưng khi bóc tách ra thì phần code lõi lại đơn giản đến không ngờ, có khi chỉ là vài cái if-else
lồng nhau mà cả tháng chẳng ai đụng đến.
Nên nhớ rằng, startup không chết vì không dùng Kubernetes. Startup chết vì không có sản phẩm hoạt động được và không có khách hàng trả tiền. Việc lao đầu vào những thứ phức tạp quá sớm chỉ khiến tốc độ phát triển chậm lại, anh em trong team hoang mang, và gánh thêm một đống nợ về hạ tầng sau này.
Cuối cùng, không phải là tôi ghét bỏ gì Kubernetes. Nó là một công cụ cực kỳ mạnh mẽ. Vấn đề là phải dùng đúng công cụ, đúng thời điểm. Hãy tập trung xây dựng một sản phẩm vững chắc trước đã. Đến khi nào sản phẩm của bạn thật sự lớn mạnh, lượng truy cập tăng đột biến khiến hệ thống cũ không chịu nổi, đó mới là lúc nghĩ đến những giải pháp lớn lao hơn.
Nghe nói dạo này mấy tay code giỏi lại quay về dùng Heroku rồi đấy, cũng đáng để suy ngẫm.