Buổi Ăn Bún Bò Cùng Anh Em và Câu Chuyện Microservices
Tuần vừa rồi, cả nhóm kéo nhau ra quán bún bò đối diện chùa Pháp Hoa. Quán cũ kỹ, bàn ghế nhựa, nước trà đầy ly. Đơn giản, nhưng tụi tôi thích vì đồ ăn ngon, nói chuyện thoải mái, và chẳng ai phải diễn.
Vừa húp nước lèo vừa quất miếng chả cua, tôi nhận ra cách vận hành quán bún bò này rất giống concept về Microservice.
Mọi người im vài giây. Không phải vì không biết gì, mà vì ai cũng đang nhai. Nhưng rồi từng câu chuyện bắt đầu bật ra, giống như sa tế được thả vô tô bún – nóng, thơm, và có chút cay.
Monolith: Một Người Vừa Giữ Xe, Ghi Món, Vừa Nấu Bếp
Tôi bảo: “Cái hệ thống Monolith mà đa số dự án bên mình đang xài giống như quán bún bò mà chỉ có một người vận hành. Vừa giữ xe, vừa ghi món, vừa chạy ra nấu bếp, lại còn dọn dẹp, rửa chén. Làm gì cũng phải tự lo. Khách đông là bắt đầu rối, một lỗi nhỏ cũng kéo theo cả quán tắc nghẽn.”
Anh T97 gật gù: “Ờ, mà đúng. Mỗi lần deploy là như dọn nguyên quán, chỉ cần quên một cái là sập hết, có hôm anh phải thức đến 4 5h sáng hôm sau để khắc phục”
Chậm chạp không phải vì người kém, mà vì ôm đồm quá nhiều. Một thay đổi nhỏ cũng phải kiểm tra toàn bộ, tốn sức, dễ lỗi. Mở rộng hay cải tiến gì cũng khó như mở thêm quán mà vẫn chỉ có một người làm hết mọi việc.
Microservices: Người nào việc nấy
“Còn microservices á,” tôi tiếp, “giống như mở quán bún bò có tổ chức rõ ràng. Người giữ xe – lo đầu vào. Người gọi món – giống API Gateway. Người ghi món chuyển qua quầy bếp qua một hàng đợi – Message Broker. Ông bếp nào lo món nào thì cứ đúng phần mà làm – services chuyên trách. Phía trước còn có người điều phối dòng khách, xếp vào hàng đợi ngồi chờ – như HAProxy phân luồng request vậy.”
Anh P97 chen vô: “Ờ, như vậy ai lo phần nấy. Món trễ là do ông phụ trách món đó, dễ tìm nguyên nhân, dễ scale nếu khách đông. Nhưng ngược lại, phải tổ chức cực kỳ bài bản, không thì loạn như chợ.
Tụi tôi cười. Nhiều khi nói chuyện kỹ thuật mà ví dụ kiểu này lại dễ hiểu hơn cả sơ đồ hệ thống.
Vậy rốt cuộc khi nào nên microservices?
Nếu chỉ là quán nhỏ, khách vừa đủ, một người lo từ bếp tới bàn thì hệ thống monolith là ổn. Nhưng nếu muốn mở rộng, mở chi nhánh, cần tự động hoá, giám sát real-time… lúc đó mới nên tách từng khâu ra. Microservices không phải để cho sang, mà để giải quyết bài toán vận hành.
Kết
Tô bún bò hôm đó hết sạch. Tụi tôi đã rõ được góc nhìn: Microservices là công cụ, không phải đích đến. Cũng như một quán bún ngon – quan trọng là phù hợp nhu cầu, không phải vì nó phức tạp hay đơn giản.
All rights reserved