Dịch vụ nhúng
Dịch vụ nhúng (Embedded Service) đề cập đến một thành phần hoặc chức năng phần mềm được tích hợp trực tiếp vào một ứng dụng hoặc hệ thống lớn hơn, thay vì được truy cập như một microservice riêng biệt bên ngoài thông qua cuộc gọi mạng. Thay vì thực hiện yêu cầu API từ xa, logic dịch vụ hoặc một lớp bao bọc nhẹ được triển khai cùng với hoặc trực tiếp trong môi trường thời gian chạy của ứng dụng chủ.
Việc nhúng các dịch vụ làm thay đổi đáng kể hồ sơ hoạt động của một ứng dụng. Bằng cách đặt các chức năng gần nhau, các nhà phát triển có thể giảm độ trễ mạng, giảm thiểu chi phí giao tiếp giữa các tiến trình và đơn giản hóa sự phức tạp khi triển khai đối với một số tính năng liên kết chặt chẽ. Cách tiếp cận này thường được chọn khi lợi ích về hiệu suất từ việc loại bỏ các bước nhảy mạng lớn hơn lợi ích của việc tách rời dịch vụ hoàn toàn.
Việc triển khai khác nhau tùy thuộc vào ngăn xếp công nghệ. Trong một số trường hợp, logic dịch vụ được biên dịch trực tiếp vào tệp nhị phân chính của ứng dụng. Trong các trường hợp khác, nó có thể chạy như một tiến trình phụ trợ (sidecar process) trong cùng một container hoặc không gian tiến trình, giao tiếp thông qua các cơ chế trong bộ nhớ (như bộ nhớ chia sẻ hoặc các lời gọi hàm trực tiếp) thay vì HTTP/RPC qua mạng.
Các dịch vụ nhúng thường được sử dụng cho các hoạt động tần suất cao, độ trễ thấp. Ví dụ bao gồm xác thực dữ liệu theo thời gian thực, kiểm tra xác thực nhẹ được thực hiện ngay lập tức khi người dùng nhập liệu, hoặc logic biến đổi dữ liệu chuyên biệt phải được thực thi trong quy trình yêu cầu chính.
Những lợi thế chính bao gồm giảm độ trễ, gỡ lỗi cục bộ đơn giản hơn và tiềm năng giảm chi phí vận hành liên quan đến việc quản lý nhiều điểm cuối mạng độc lập. Đối với các hoạt động trên đường dẫn quan trọng, việc nhúng đảm bảo hiệu suất có thể dự đoán được.
Nhược điểm chính là giảm tính mô-đun. Việc liên kết chặt chẽ các dịch vụ làm cho việc mở rộng và cập nhật độc lập trở nên phức tạp hơn. Một lỗi trong dịch vụ nhúng có khả năng làm sập toàn bộ ứng dụng chủ, làm tăng phạm vi ảnh hưởng (blast radius).
Khái niệm này trái ngược với kiến trúc Microservices truyền thống, nơi các dịch vụ được cố ý tách rời. Nó có những điểm tương đồng với các Mẫu Sidecar (Sidecar Patterns), mặc dù mức độ tích hợp (trong tiến trình so với đặt gần) khác biệt đáng kể.