5 điểm bởi GN⁺ 2023-10-31 | Chưa có bình luận nào. | Chia sẻ qua WhatsApp
  • Bài viết về chi phí và lợi ích của việc chuyển từ một backend đơn khối sang kiến trúc microservices
  • Khi số lượng nhóm cùng đóng góp vào một codebase duy nhất tăng lên, các thành phần ngày càng gắn chặt với nhau, làm giảm năng suất và tăng độ phức tạp
  • Một cách để giảm nhẹ vấn đề này là chia backend đơn khối thành một tập các dịch vụ có thể triển khai độc lập, giao tiếp qua API, tức microservices
  • Thuật ngữ 'micro' dễ gây hiểu nhầm vì các dịch vụ không nhất thiết phải 'micro'. Thuật ngữ phù hợp hơn là kiến trúc hướng dịch vụ
  • Khi phân rã backend thành một tập dịch vụ với ranh giới được xác định rõ ràng, chỉ cần một nhóm nhỏ là đủ để phát triển và vận hành từng dịch vụ, nhờ đó tăng tốc độ phát triển ứng dụng
  • Mỗi microservice có thể mở rộng độc lập và áp dụng tech stack khác nhau theo nhu cầu riêng, giúp việc thử nghiệm và đánh giá công nghệ mới trở nên dễ dàng
  • Tuy nhiên, kiến trúc microservices làm tăng độ phức tạp do bổ sung thêm nhiều thành phần vận hành trong toàn hệ thống và đòi hỏi một mức độ chuẩn hóa nhất định
  • Nếu mỗi microservice dùng ngôn ngữ, thư viện và datastore khác nhau, ứng dụng có thể trở nên hỗn loạn và khó bảo trì, đồng thời khiến việc luân chuyển lập trình viên giữa các nhóm trở nên khó khăn
  • Để hỗ trợ quy mô lớn các dịch vụ độc lập, cần có khả năng dễ dàng tạo mới server, datastore và các tài nguyên khác, điều này đòi hỏi mức độ tự động hóa đáng kể
  • Các lời gọi từ xa có chi phí cao và tạo ra những cách mới khiến hệ thống có thể thất bại, vì vậy cần các cơ chế phòng vệ như timeout, retry và circuit breaker
  • Tích hợp liên tục đảm bảo rằng các thay đổi mã nguồn được tự động build và test trước khi được hợp nhất vào nhánh chính
  • Kiểm thử tích hợp cho toàn bộ microservices khó hơn nhiều so với kiểm thử monolith; khi các dịch vụ riêng lẻ tương tác với nhau, có thể xuất hiện những hành vi rất tinh vi và không lường trước
  • Các nhóm phát triển dịch vụ thường cũng là bên phụ trách xử lý các lời gọi liên quan đến nó, tạo ra ma sát giữa công việc phát triển và chi phí vận hành
  • Việc debug lỗi hệ thống trở nên khó hơn với microservices; logging và monitoring tốt ở mọi cấp độ là rất quan trọng
  • Khi tách ứng dụng thành các dịch vụ riêng biệt, mô hình dữ liệu không còn nằm trong một datastore duy nhất nữa, nên thường phải chấp nhận eventual consistency
  • Nói chung, tốt nhất là bắt đầu với monolith và chỉ tách ra khi thật khó xác định chính xác ranh giới giữa các dịch vụ
  • Chỉ nên bắt đầu với cách tiếp cận microservices-first khi đã có kinh nghiệm với nó và đã xây dựng sẵn nền tảng cho nó, hoặc đã tính đến thời gian cần thiết để xây dựng nền tảng đó

Chưa có bình luận nào.

Chưa có bình luận nào.