
Loading

Loading

Loading
Chuyển đổi sang microservices thường được coi là giải pháp tối ưu cho các vấn đề mở rộng. Nhưng như nhiều đội ngũ kỹ thuật khám phá ra, nó giới thiệu một loạt các phức tạp mới: giao dịch phân tán, tính nhất quán cuối cùng và chi phí vận hành.
Sai lầm đầu tiên của điện toán phân tán là cho rằng mạng là đáng tin cậy. Trong một khối nguyên khối (monolith), một cuộc gọi hàm là tức thì và được đảm bảo. Trong microservices, một cuộc gọi mạng có thể thất bại, treo hoặc trả về rác. Triển khai logic thử lại mạnh mẽ, ngắt mạch (circuit breakers) và thời gian chờ là bắt buộc.
Hãy quên các giao dịch ACID giữa các dịch vụ. Bạn đang ở trong thế giới của BASE (Basically Available, Soft state, Eventual consistency). Chúng tôi thấy rằng việc sử dụng kiến trúc hướng sự kiện với Kafka là rất quan trọng. Các dịch vụ xuất bản sự kiện ("OrderCreated"), và các dịch vụ khác phản ứng ("ReserveInventory"). Điều này tách rời các hệ thống nhưng đòi hỏi sự thay đổi tư duy trong cách chúng ta xử lý dữ liệu.
Bạn không thể sửa những gì bạn không thấy. Truy vết phân tán (sử dụng các công cụ như Jaeger hoặc OpenTelemetry) là điều cần thiết. Bạn cần có khả năng theo dõi một ID yêu cầu khi nó nhảy qua mười dịch vụ khác nhau để xác định chính xác nơi xảy ra độ trễ hoặc lỗi.
Microservices cho phép bạn mở rộng đội ngũ và công nghệ một cách độc lập, nhưng chúng đòi hỏi mức độ trưởng thành vận hành cao. Đừng áp dụng chúng chỉ vì nó là xu hướng; hãy áp dụng chúng vì quy mô tổ chức của bạn đòi hỏi điều đó.