On this page
General architecture
The system consists four components:
- Web application (front-end)
- Mobile application
- Server-side application (back-end)
- Database.
Except for the mobile application, all components are containerized with Docker and orchestrated by Kubernetes.
graph TB
user1(User \n fa:fa-mobile)
user2(User \n fa:fa-mobile)
user3(User \n fa:fa-mobile)
subgraph Cluster
class Cluster cluster;
ingress-backend(Ingress back-end)
subgraph "Service back-end"
service-backend(Back-end \n fa:fa-server)
end
subgraph "Pod back-end 1"
pod-backend1(Flask-Gunicorn \n fa:fa-server)
end
subgraph "Pod back-.end 2"
pod-backend2(Flask-Gunicorn \n fa:fa-server)
end
dns(DNS server \n fa:fa-server)
ingress-frontend(Ingress front-end)
subgraph "Service front-end"
service-frontend(Front-end \n fa:fa-desktop)
end
subgraph "Pod front-end 1"
pod-frontend1(Vite+React-Nginx \n fa:fa-desktop)
end
subgraph "Pod front-end 2"
pod-frontend2(Vite+React-Nginx \n fa:fa-desktop)
end
subgraph "Service database"
service-database(MongoDB \n fa:fa-database)
end
subgraph "Pod database"
pod-database[(MongoDB \n fa:fa-database)]
end
%% subgraph Volumes
%% fingerprint-data(fingerprint Data)
%% mongo(mongoDB)
%% end
end
user1 -.-> ingress-backend
user2 -.-> ingress-backend
user3 -.-> ingress-backend
user1 -.-> ingress-frontend
user2 -.-> ingress-frontend
user3 -.-> ingress-frontend
ingress-backend --> service-backend;
service-backend -- 8888/TCP --> pod-backend1
service-backend -- 8888/TCP --> pod-backend2
ingress-frontend --> service-frontend;
service-frontend -- 80/TCP --> pod-frontend1
service-frontend -- 80/TCP --> pod-frontend2
pod-frontend1 -. nslookup .-> service-backend
pod-frontend2 -. nslookup .-> service-backend
pod-backend1 -. nslookup .-> service-database
pod-backend2 -. nslookup .-> service-database
service-database -- 27017/TCP --> pod-database
pod-frontend1 -- 53/TCP --> dns
pod-frontend2-- 53/TCP --> dns
pod-backend1 -- 53/TCP --> dns
pod-backend2 -- 53/TCP --> dns
classDef plain fill:#ddd,stroke:#fff,stroke-width:4px,color:#000;
classDef k8s fill:#326ce5,stroke:#fff,stroke-width:4px,color:#fff;
classDef cluster fill:#fff,stroke:#bbb,stroke-width:2px,color:#326ce5;
class service-backend,service-frontend,service-database,pod-backend1,pod-backend2,pod-frontend1,pod-frontend2,pod-database,dns k8s;
class Cluster cluster;
class user1,user2,user3 plain