Infrastructure Diagram:
Components:
- 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
- Streaming: Phát trực tuyến video
- Notification: Gửi thông báo đến client thông qua email/sms
Requirement cho hệ thống gồm 4 node cho Swarm và 5 instance dùng để host các Service Database, Queue, LB, ...
System Requirements: Services: Infrastructure: ick Platform: docker-swarm OS: linux Architecture: amd64 RAM: 16GB CPU: 4 Number of Nodes: 4 Storage: 100GB Databases: PostgresSQL: Image: postgres:9.6.10-alpine Replicas: 1 RAM: 16GB CPU: 4 Storage: 500GB Backup: 1 ObjectStorage: Image: minio/minio:RELEASE.2018-10-06T00-53-53Z Replicas: 1 RAM: 4GB CPU: 2 Storage: 500GB Backup: 1 Queue: Image: rabbitmq:3.7.7-management-alpine Replicas: 1 RAM: 4GB CPU: 2 Storage: 50GB Backup: 1 LoadBalancer: Image: nginx:1.18.0-alpine Replicas: 1 RAM: 4GB CPU: 2 Storage: 50GB Backup: 1 Apigateway: Image: kong:2.3.3 Replicas: 1 RAM: 4GB CPU: 2 Storage: 50GB Backup: 1