Bỏ qua đến nội dung
Quay lại

Tôi không thích microservices, và đây là lý do

Đã đăng:  at  01:52 CH

Chào mọi người! Tôi là Hưng Phạm, một lập trình viên backend đã từng nghĩ rằng microservices là tiêu chuẩn cho mọi hệ thống – cho đến khi chính tay mình triển khai và duy trì nó. Và bây giờ, sau nhiều đêm “vật lộn” với hàng tá logs của 4–5 service khác nhau, tôi nhận ra một điều: microservices không phải là giải pháp phù hợp cho mọi hệ thống. Tại sao ư? Hãy để tôi chia sẻ thật chi tiết câu chuyện của mình, hi vọng sẽ giúp các bạn có cái nhìn thực tế hơn về microservices.

1️. Hồi đầu – microservices là “chén thánh” công nghệ

Ngày đầu tiên tôi biết đến microservices, cảm giác thực sự rất “đã”. Những lời quảng cáo, những case study từ các ông lớn như Netflix, Amazon, Uber, Google… khiến tôi gần như mê mẩn:

Tôi lập tức lao vào học Docker, Kubernetes, Service Mesh, CI/CD pipeline tự động, API Gateway… danh sách các kiến thức phải học dài dằng dặc, đến mức deadline dự án còn không bằng độ dài kiến thức cần nắm. Tôi tưởng mình đang mở một chân trời mới cho sự nghiệp backend.

2️. Nhưng thực tế lại không như mơ

Khi chính thức “micro hoá” mấy dự án của team – một team nhỏ chỉ có 4–5 dev, tôi mới “ngấm” rằng microservices không đơn giản chỉ là chia nhỏ code. Đó là một mạng lưới phức tạp khiến tôi gần như phát điên:

3️. Những thứ microservices “cướp mất” của team nhỏ

Với một team nhỏ, tôi nhận ra microservices đang “cướp” đi của chúng tôi nhiều thứ quý giá:

  1. Tính tập trung:

    • Monolith: Một repo, một codebase, cả team cùng “nhào nặn” chung, dễ trao đổi, dễ hiểu tổng quan.
    • Microservices: Mỗi người “cắm trại” trong một service, giao tiếp qua API, mất đi sự gắn kết, dễ gây ra “silos” (chia phe) trong team.
  2. Tốc độ phát triển ban đầu:

    • Monolith: Deploy một lần, rollback một lần, thay đổi nhỏ được đưa lên nhanh chóng.
    • Microservices: Deploy rải rác, phải canh chỉnh config nhiều nơi, rollback cũng phức tạp, tốn thời gian hơn rất nhiều.
  3. Niềm vui khi release features:

    • Monolith: Cứ có feature là bung ra ngay, release nhanh, feedback người dùng gần như tức thì.
    • Microservices: Release từng service, phải đảm bảo không đụng chạm, không phá vỡ API, căng thẳng vì phải phối hợp nhiều service cùng lúc.

4️. Nhưng microservices không hẳn là “ác quỷ”

Tôi không phủ nhận microservices có những điểm mạnh rất đáng giá:

5️. Vậy khi nào nên dùng microservices?

Tôi nghĩ microservices chỉ thực sự phát huy hiệu quả khi:

6️. Và khi nào không nên “chơi sang”?

Nếu bạn thuộc những trường hợp sau, tôi khuyên bạn hãy suy nghĩ kỹ trước khi “nhảy” vào microservices:

7️. Kết luận: Tôi không ghét microservices, tôi chỉ không thích “đu trend” vô nghĩa

Microservices không phải là cái gì đó xấu xa, cũng không phải là “cứ có thì hay”. Tôi chỉ không thích việc các team nhỏ bị “bắt chước” xu hướng chỉ vì thấy kêu, rồi tự làm khổ mình bằng một hệ thống phức tạp không cần thiết.

Điều quan trọng nhất, theo tôi, vẫn là:

Tóm lại:

8️. Và bạn thì sao?

Bạn có câu chuyện microservices thành công rực rỡ? Hay thất bại đến “vỡ mặt”? Tôi rất muốn nghe câu chuyện của bạn, để có thể cùng nhau học hỏi, chia sẻ kinh nghiệm và không phải mất thời gian “đi đường vòng” như tôi từng trải qua.


Chia sẻ bài viết này trên:

Bài trước
AI không cướp việc của bạn – chính sự lạc hậu của bạn đang khiến bạn mất việc!