Banking Demo — Full DevOps với Microservices, Introduction
Bài 1/11: Giới thiệu về Project
Mở đầu
Nếu bạn đang học DevOps, Kubernetes, hay muốn có một dự án thực tế để demo, thì đây là 1 Project phù hợp.
Trong series này, tôi sẽ chia sẻ hành trình xây dựng Banking Demo Application — một ứng dụng banking mini chạy từ Docker Compose, dần nâng cấp lên Kubernetes với Helm, ArgoCD, CI/CD, monitoring, và các chiến lược deploy mà tôi đã từng làm khi còn công tác trong các Bank.

Bài đầu tiên sẽ giới thiệu tổng quan dự án, kiến trúc, tech stack, và lộ trình 6 phase mà chúng ta sẽ đi qua.
Tại sao lại là Banking?
Banking là domain quen thuộc với tất cả mọi người, là sản phẩm chúng ta dùng hàng ngày :
| Đặc điểm | Ý nghĩa |
|---|---|
| Nhiều service | Auth, Account, Transfer, Notification — phù hợp để học microservices |
| State & transaction | PostgreSQL, Redis — học cách quản lý state trên K8s |
| Real-time | WebSocket thông báo chuyển khoản — gần với bài toán thực tế |
| Phức tạp vừa phải | Đủ để demo, không quá nặng để học |
| Dễ trình bày | Phù hợp cho system design, technical interview |
Ứng dụng tập trung vào các tính năng core banking (đăng ký, đăng nhập, số dư, chuyển khoản, thông báo) thay vì giao diện phức tạp — giúp chúng ta tập trung vào phần DevOps và kiến trúc.
Kiến trúc tổng quan
Ứng dụng được thiết kế theo microservices với Kong làm API Gateway. Luồng request đi qua Kong và được route đến từng service tương ứng.

Luồng xử lý chính
- User truy cập frontend (React) qua port 3000
- Frontend gọi API qua Kong (port 8000):
/api/auth/*,/api/account/*,/api/transfer/*,/api/notifications/* - WebSocket
/wsdùng cho thông báo real-time khi có chuyển khoản mới - Kong route request đến đúng service backend
- PostgreSQL lưu users, balances, transfers, notifications
- Redis lưu session (đăng nhập), presence (online), và Pub/Sub cho thông báo real-time
Tech Stack
| Thành phần | Công nghệ | Ghi chú |
|---|---|---|
| Frontend | React, Tailwind CSS | SPA, serve qua Nginx |
| Backend | FastAPI (Python) | 4 microservices |
| API Gateway | Kong | Route, CORS, metrics |
| Database | PostgreSQL 16 | Stateful data |
| Cache / Session | Redis 7 | Session, presence, Pub/Sub |
| Container | Docker | Build & run locally |
| Orchestration | Kubernetes | Deploy production |
| Package Manager | Helm | Template, values |
| GitOps | ArgoCD | Sync từ Git |
| CI/CD | GitHub Actions | Build & push images |
| Monitoring | Prometheus, Grafana | Metrics, dashboards |
| Logging | Loki, Promtail | Centralized logs |
| Tracing | Tempo, OpenTelemetry | Distributed tracing |
Tính năng chính
- Đăng ký / Đăng nhập: Session-based auth, session lưu trong Redis
- Quản lý số dư: Xem balance, profile qua Account Service
- Chuyển khoản: Chuyển tiền giữa users, ghi nhận transaction
- Thông báo real-time: WebSocket push khi có chuyển khoản mới
- Stateless backend: Mọi service có thể scale ngang, state nằm ở DB và Redis
Lộ trình 6 Phase
Project được tổ chức theo 6 phase tăng dần độ phức tạp:
| Phase | Nội dung | Bài trong series |
|---|---|---|
| — | Hướng dẫn triển khai Docker Compose | Bài 2 |
| Phase 1 | Docker Compose → Kubernetes (manifest thuần) | Bài 3 |
| Phase 2 | Helm Chart + ArgoCD GitOps | Bài 4, 5 |
| Phase 3 | Monitoring (Prometheus, Grafana, Loki, Tempo, KEDA) | Bài 6, 7 |
| Phase 4 | CI/CD phục vụ cho việc nâng cấp ứng dụng (GitHub Actions, DB migration) | Bài 8 |
| Phase 5 | Security & Reliability (SRE) | Bài 9 |
| Phase 6 | Deployment strategies (Blue-Green, Canary) | Bài 10 |
Mỗi phase có folder riêng trong repo, tài liệu rõ ràng, và có thể chạy độc lập hoặc kết hợp.
Test nhanh (Docker Compose)
Để trải nghiệm ứng dụng ngay trên máy local:
git clone https://github.com/<your-username>/banking-demo.git
cd banking-demo
docker compose up -d --build
Sau khi chạy:
- Frontend: http://localhost:3000
- API (qua Kong): http://localhost:8000
- Kong Admin: http://localhost:8001
Chi tiết từng bước, cấu trúc file và xử lý lỗi — xem Bài 2.
Cấu trúc repository
banking-demo/
├── backend/ # Backend monolith (phiên bản đầu)
├── frontend/ # React SPA
├── services/ # Microservices (auth, account, transfer, notification)
├── common/ # Shared library (DB, Redis, models, auth)
├── kong/ # Kong declarative config
├── docker-compose.yml
├── phase1-docker-to-k8s/ # K8s manifests (StatefulSet, Deployment, Ingress)
├── phase2-helm-chart/ # Helm chart + ArgoCD
├── phase3-monitoring-keda/
├── phase4-application-v2/
├── phase5-security-reliability/
└── phase6-deployment-strategies/
Bài tiếp theo trong series
Bài 2: Hướng dẫn triển khai bằng Docker Compose
- Điều kiện cần, cấu trúc 8 services
- Thứ tự khởi động và dependency
- Chi tiết cấu hình Kong, build context, proxy
- Kiểm tra Redis, PostgreSQL
- Xử lý lỗi thường gặp
Kết luận
Banking Demo là một dự án học tập và demo phù hợp cho ai muốn nắm vững hành trình từ Docker đến Kubernetes. Series này sẽ đi từng bước qua 6 phase, với code và tài liệu có sẵn trong repository.
Nếu bạn thấy hữu ích, hãy lab và theo dõi các bài tiếp theo. Tôi mong đợi mọi đóng góp và thắc mắc, để hoàn thiện project này và chính bản thân mình!
Repo: https://github.com/kevinram164/banking-demo.git
Tags: #kubernetes #devops #microservices #docker #helm #argocd #banking
All rights reserved