Infrastructure Diagram:
Components hệ thống:
- Front Load Balancer: Được triển khai trên một instance độc lộc sử dụng Nginx.d để làm reverse proxy cho hệ thống, mục đích chính của FLB là SSL Termination và setup proxy route đến Kong API Gateway, đồng thời sẽ đáp ứng firewall rule cơ bản ở phía đầu.
- Kong API Gateway: Platform API được phát triển dựa trên nginx và lua, mục đích là để cấu hình cho service route được linh hoạt và mở rộng hơn. Ngoài ra, Instance này còn được dùng để xử lý các luồng authen trước khi request đến service bên trong.
- Docker Swarm Instance (for Rest + gRPC): Đây là các instance dùng để triển khai các container cho mục đích giao tiếp với API Gateway.
- Docker Swarm Insatnce (for Worker): Đây là các instance dùng để triển khai các container được sử dụng dạng cronjob or process event từ RabbitMQ
- Database & Storage: gồm PostgresSQL và Minio Bucket for file store
- RabbitMQ for process event
- Notification: Gửi thông báo đến client thông qua email/sms
Ứng dụng của bên thứ 3
- Streaming (VOD): Phát trực tuyến video sử dụng của third party Vnetwork
- Elsa: đánh giá phát âm tiếng Anh
- Email service: Sendgrid
- SMS service: FPT & VNPAY
Lưu ý:
- Database của ICK có một số tables được lấy data xuống hệ thống Data Warehouse qua cơ chế CDC. Nên cần thay đổi lại chổ này nếu Data Warehouse và Database không cùng mạng hạ tầng
Requirement tối thiểu cho hệ thống ICK:
Code Block | ||
---|---|---|
| ||
System Requirements: Services: Infrastructure: ick Platform: docker-swarm OS: linux Architecture: amd64 RAM: 16GB CPU: 4 Number of Nodes: 3 Storage: 100GB Databases: PostgresSQL Master: Image: postgres:13-alpine Replicas: 1 RAM: 16GB CPU: 4 Storage: 500GB Backup: 1 PostgresSQL Slave: Image: postgres:13-alpine Replicas: 1 RAM: 16GB CPU: 4 Storage: 500GB Backup: 1 Object StorageObjectStorage: Image: minio/minio:RELEASE.2018-10-06T00-53-53Z Replicas: 1 RAM: 8GB CPU: 2 Storage: 500GB Backup: 1 Queue: Image: rabbitmq:3.7.7-management-alpine Replicas: 1 RAM: 4GB CPU: 2 Storage: 50GB Backup: 1 Caching: Image: redis:6-alpine Replicas: 1 RAM: 8GB CPU: 2 Storage: 50GB Backup: 1 LoadBalancer: Image: nginx:1.18.0-alpine Replicas: 1 RAM: 4GB CPU: 4 Storage: 50GB Backup: 1 Apigateway: Image: kong:2.3.3 Replicas: 1 RAM: 4GB CPU: 8 Storage: 50GB Backup: 1 |