Multiple container services and call internal/external endpoints¶
Bài viết sau sẽ hướng dẫn cấu hình các Container Service kết nối với nhau thông qua cả internal endpoint và public endpoint.
Mô hình hệ thống cơ bản bao gồm:
Một client web, hai backend application.
Hệ thống có một backend đã được expose ra ngoài internet (public domain), còn một backend không yêu cầu public (internal service).
Flow dữ liệu: client web => backend 1 => backend 2.
Cụ thể:
Client-app: Sử dụng công nghệ front-end NextJs để render ra HTML.
User-app: Sử dụng công nghệ back-end Java Spring boot lưu trữ thông tin của các user (name, location…).
Weather-app: Sử dụng công nghệ backend Nodejs Express cung cấp ra thông tin thời tiết của khu vực theo location.
Pre-condition
Java app Image (Backend 1)
NodeJs app Image (Backend 2)
NextJs app Image (Client Web)
Expose internal endpoint
Expose public domain
Các bước thực hiện¶
Bước 1. Deploy Nodejs App¶
Deploy một nodejs application và lưu lại internal link của service. Ở đây chúng ta có internal link là nodejsapp-4729-service.sunteco-oahi.svc:3000.
Bước 2. Deploy Java app và cấu hình environment¶
Deploy một java app, ở bước này quan trọng nhất là config đúng đường dẫn url của nodejs app để 2 services có thể liên lạc với nhau.
Thêm biến môi trường cho cho java app. SERVICE_NODEJS = nodejsapp-4729-service.sunteco-oahi.svc:3000
Note
Biến môi trường này được tạo ra và đặt tên theo mỗi developer. Chúng ta cần điền chính xác key/value của nodejs service endpoint.
Tạo một public endpoint cho java service để client có thể kết nối được.
Sau khi lưu lại thay đổi, hệ thống sẽ redeploy lại container services để apply biến môi trường mới (Trường hợp edit).
Test public endpoint cho java-app bằng trình duyệt hoặc postman.
Bước 3. Deploy Nextjs app¶
Vì ứng dụng client web chạy trên trình duyệt của người dùng nên nếu framwork của client web thuộc dạng client side rendering thì cần sửa backend public endpoint trong code của client web trước khi build. Sau khi publish backend service người dùng mới có public endpoint này.
Deploy nextjs app để render client page.
Config BE public link để gọi về server (Incase server-side rendering).
Tạo một link public cho client web để truy cập.
Result:
Đã public được một website và 2 microservices bằng các ngôn ngữ khác nhau, kết nối thông qua internal link và public link.