System Design & Architecture
I. Giới thiệu khóa học:
Khóa học System Design & Architecture được thiết kế nhằm trang bị cho học viên tư duy thiết kế hệ thống quy mô lớn, kiến thức về các pattern và best practices trong kiến trúc phần mềm, đặc biệt trong ngữ cảnh ngành ngân hàng – tài chính. Chương trình giúp học viên nắm vững quy trình từ phân tích yêu cầu, lựa chọn kiến trúc, đánh giá trade-off đến thiết kế chi tiết các thành phần hệ thống như API, database, messaging, caching và observability.
Khóa học kết hợp 30% lý thuyết và 70% thực hành, với các bài tập và case study được thiết kế riêng cho môi trường ngân hàng Việt Nam. Nội dung bao gồm các chủ đề cốt lõi: API Design, Microservices, Data Storage, Event-Driven Architecture, Scalability, Security, Observability, Testing và UML Diagrams, kết thúc bằng Capstone Project thiết kế hệ thống Fraud Detection hoàn chỉnh.
II. Thời lượng: 56 giờ (8 ngày)
III. Hình thức đào tạo:
Đào tạo trực tiếp tại lớp học, đào tạo online tương tác với giảng viên, đào tạo kết hợp online và trực tiếp tại lớp học, đào tạo tại văn phòng khách hàng theo yêu cầu
IV. Mục tiêu khóa học:
Sau khi hoàn thành học viên có khả năng:
- Nắm vững quy trình tư duy thiết kế hệ thống: từ yêu cầu nghiệp vụ đến kiến trúc kỹ thuật.
- Hiểu và áp dụng được các design pattern, architectural pattern phổ biến trong kiến trúc hệ thống.
- Có tư duy và kỹ năng thiết kế hệ thống có tính mở rộng (scalable) và chịu lỗi (resilient).
- Biết đánh giá trade-off giữa các phương án kiến trúc và đưa ra quyết định có cơ sở.
- Xây dựng được các diagram chuyên nghiệp: Use Case UML, Class Diagram, Sequence Diagram, Architecture Diagram.
- Hiểu các đặc thù thiết kế hệ thống trong ngành ngân hàng: bảo mật, tuân thủ, tính sẵn sàng cao.
- Có khả năng đánh giá, review và cải tiến kiến trúc hệ thống hiện tại
V. Đối tượng tham gia:
- Developers (2+ năm kinh nghiệm) muốn nâng cao kỹ năng thiết kế hệ thống.
- DevOps Engineers phụ trách infrastructure và deployment cho hệ thống phân tán.
- Technical Leads cần ra quyết định kiến trúc và review thiết kế cho team.
- Solution Architects thiết kế kiến trúc cross-team, đánh giá compliance và vendor.
- Các kỹ sư phần mềm làm việc trong lĩnh vực ngân hàng – tài chính – thanh toán.
VI. Điều kiện tiên quyết:
- Tối thiểu 2+ năm kinh nghiệm phát triển phần mềm.
- Kiến thức cơ bản về lập trình (Java, .NET, Python, hoặc Go).
- Hiểu biết cơ bản về database (SQL), networking (HTTP, TCP/IP).
- Đã tham gia ít nhất 1 dự án phát triển phần mềm hoàn chỉnh.
- Khuyến khích: Đã đọc hoặc đang đọc sách "Designing Data-Intensive Applications" (Martin Kleppmann).
VII. Nội dung khóa học:
Phần I. Nền tảng System Design & Networking
1. Bài 1. System Design Thinking Framework
Nội dung:
- Quy trình tư duy System Design: Yêu cầu → Kiến trúc → Trade-off → Đánh giá.
- Framework giải quyết bài toán thiết kế: Clarify → High-level → Deep-dive → Scale → Trade-off summary.
- Functional Requirements vs Non-functional Requirements (NFR).
- Back-of-the-envelope estimation: QPS, storage, bandwidth, latency.
- Client-Server model và các mô hình kiến trúc cơ bản.
Thực hành / hoạt động:
- Xác định requirements cho internet/mobile banking: user đồng thời (100K+), SLA 99.99%.
- Thực hiện estimation cho hệ thống banking: tính QPS, storage, bandwidth.
- Phân tích trade-offs giữa các phương án kiến trúc.
2. Bài 2. API Design, Load Balancing & Networking
Nội dung:
- API Design: REST, GraphQL, gRPC, WebSockets – khi nào dùng gì?
- Load Balancing: L4 vs L7, thuật toán (round-robin, least connections, consistent hashing).
- Networking fundamentals: DNS, CDN, TCP/IP, HTTP/2, HTTP/3.
- Domain Name System (DNS) và CDN trong kiến trúc phân tán.
- Ngân hàng cần multi-layer load balancing: hardware LB (F5) + software LB (Nginx/HAProxy).
- WAF (Web Application Firewall) bắt buộc trước internet-facing applications.
- API Gateway cho rate limiting, throttling, authentication.
Thực hành / hoạt động:
- Thiết kế kiến trúc frontend application cho internet/mobile banking.
- Thiết kế API layer, load balancing strategy, CDN cho static assets.
- Vẽ architecture diagram trên Excalidraw.
- Nhóm trình bày và instructor review.
Phần II. Kiến trúc Hệ thống & Design Patterns
3. Bài 3. SOLID Principles & Design Patterns
Nội dung:
- SOLID Principles và ứng dụng trong thiết kế hệ thống.
- Design Patterns phổ biến: Strategy, Observer, Factory, Singleton, Adapter, Decorator.
- Anti-patterns trong thiết kế kiến trúc: Distributed Monolith, Big Ball of Mud.
Thực hành / hoạt động:
- Nhận diện và áp dụng Design Patterns vào bài toán banking thực tế.
- Phân tích anti-patterns trong hệ thống hiện có.
4. Bài 4. Architectural Patterns & Microservices
Nội dung:
- Architectural Patterns: Layered, Hexagonal (Ports & Adapters), CQRS, Event Sourcing.
- Monolithic Architecture: ưu/nhược điểm, khi nào nên chọn.
- Microservice Architecture: khi nào cần, trade-offs, challenges.
- Service-Oriented Architecture (SOA): chia tách service, business capability identification.
- Giao tiếp giữa các service: Sync (REST/gRPC) vs Async (Message Queue).
- Service Discovery, API Gateway, Backend for Frontend (BFF).
- Core Banking thường là monolith legacy (Temenos, Flexcube, Finacle).
- Migration strategy: Strangler Fig Pattern – từng bước thay thế.
- Bounded Context phải align với organizational structure (Conway's Law).
Thực hành / hoạt động:
- Cho một hệ thống Core Banking monolith, xác định bounded contexts.
- Chia tách theo business capability: Account, Payment, Loan, Card, Customer.
- Thiết kế giao tiếp giữa các service (sync vs async).
- Vẽ target state architecture diagram.
- Xác định risks và mitigation strategy cho migration.
Phần III. Data & Storage Design
5. Bài 5. Database Selection & Data Modeling
Nội dung:
- SQL vs NoSQL: khi nào chọn gì? (PostgreSQL, MySQL, MongoDB, Redis, Cassandra, Elasticsearch).
- Database Design: normalization, denormalization, indexing strategies.
- CAP Theorem và PACELC: Consistency vs Availability trade-offs.
- ACID transactions và ứng dụng trong ngân hàng.
- Data modeling cho các use case ngân hàng: Account balance, Transaction history, Customer profile.
- Banking thường chọn CP (Consistency + Partition tolerance) trong CAP theorem.
- Regulatory requirement: dữ liệu ngân hàng phải lưu trữ trong phạm vi Việt Nam.
Thực hành / hoạt động:
- Thiết kế database schema cho account management (25M+ accounts).
- Chọn DB engine và giải thích lý do (OLTP vs OLAP workloads).
6. Bài 6. Replication, Sharding & Caching
Nội dung:
- Replication: Master-Slave, Multi-Master, quorum-based replication.
- Sharding / Partitioning: horizontal vs vertical, sharding key selection.
- Consistent Hashing: phân phối dữ liệu minimizing redistribution.
- Caching Strategies: Cache-aside, Write-through, Write-behind, cache invalidation.
- Account balance KHÔNG thể dùng cache đơn thuần – cần strong consistency.
- Transaction history: append-only, immutable, cần audit trail.
- Cross-datacenter replication challenges: active-active vs active-passive.
- End-of-day batch processing: reconciliation, settlement, interest calculation.
Thực hành / hoạt động:
- Thiết kế replication strategy cho HA (RPO < 1s, RTO < 5 min).
- Thiết kế sharding strategy cho horizontal scaling.
- Thiết kế caching layer cho account balance (vấn đề stale data trong banking).
Phần IV. Messaging & Event-Driven Architecture
7. Bài 7. Message Queue & Event-Driven Architecture
Nội dung:
- Message Queue fundamentals: Point-to-point vs Pub/Sub.
- So sánh: Kafka, RabbitMQ, AWS SQS/SNS, Apache Pulsar.
- Apache Kafka deep-dive: Topics, Partitions, Consumer Groups, exactly-once semantics.
- Event-Driven Architecture: Event Notification vs Event-Carried State Transfer.
- Event Sourcing: lưu trữ events thay vì state – ứng dụng trong banking.
- CQRS (Command Query Responsibility Segregation): tách read và write models.
- Streaming Data Processing: Kafka Streams, Apache Flink, Spark Streaming.
Thực hành / hoạt động:
- Thiết kế event sourcing cho audit trail giao dịch ngân hàng.
- Vẽ sequence diagram cho happy path và failure scenarios.
8. Bài 8. Saga Pattern & Distributed Transactions
Nội dung:
- Saga Pattern: Choreography vs Orchestration – distributed transactions.
- Compensating Transactions và idempotency trong financial systems.
- Interbank transfer phải xử lý timeout, network failure, duplicate messages.
- Idempotency key: transaction reference phải unique và deterministic.
- Saga > 2PC vì: non-blocking, có thể span across organizations.
- Double-entry bookkeeping: mỗi transaction tạo equal debit và credit.
- Reconciliation: đối soát hàng ngày với NAPAS/SWIFT là bắt buộc.
Thực hành / hoạt động:
- Thiết kế flow chuyển tiền qua NAPAS/SWIFT với Saga orchestration.
- Định nghĩa từng step: Validate → Debit → NAPAS/SWIFT call → Credit → Notify.
- Thiết kế compensating transactions cho mỗi bước thất bại.
- Đảm bảo idempotency: mỗi giao dịch chỉ xử lý 1 lần duy nhất.
Phần V. Scalability, Availability & Fault Tolerance
9. Bài 9. Scalability & High Availability
Nội dung:
- Scalability fundamentals: Vertical vs Horizontal scaling.
- High Availability (HA): Active-Active, Active-Passive, Hot-Standby.
- Load Balancing strategies cho hệ thống phân tán.
- Replication và Failover mechanisms: automatic vs manual.
- Performance optimization: throughput vs latency trade-offs.
- Banking SLA: 99.999% uptime (tối đa ~5 phút downtime/năm).
- RPO < 1 giây, RTO < 5 phút cho payment systems.
Thực hành / hoạt động:
- Thiết kế payment gateway xử lý 10,000 TPS với SLA 99.999%.
- Active-active deployment across 2 data centers.
- Vẽ architecture diagram với tất cả failure scenarios.
10. Bài 10. Fault Tolerance & Resilience Patterns
Nội dung:
- Circuit Breaker Pattern: ngăn chặn cascade failure.
- Rate Limiting và Throttling: token bucket, leaky bucket, sliding window.
- Bulkhead Pattern: cô lập failure trong một compartment.
- Timeout và Retry strategies: exponential backoff, jitter.
- Chaos Engineering: chủ động kiểm tra resilience của hệ thống.
- Rate limiting theo PCI DSS requirements.
- Circuit breaker phải có manual override cho maintenance windows.
- End-of-day reconciliation là safety net cuối cùng.
Thực hành / hoạt động:
- Thiết kế circuit breaker cho downstream services (NAPAS, SWIFT, card networks).
- Thiết kế rate limiting per merchant, per card, per channel.
- Failover strategy: automatic health check, graceful degradation.
Phần VI. Security, Compliance & Observability
11. Bài 11. Authentication, Authorization & Encryption
Nội dung:
- Authentication & Authorization: OAuth2, OpenID Connect, JWT, SAML.
- Role-Based Access Control (RBAC) và Attribute-Based Access Control (ABAC).
- Encryption: At-rest, In-transit, Key management (HSM, KMS).
- Secure communication: mTLS, VPN, Private Network.
- OWASP Top 10 và bảo mật ứng dụng web.
- PCI DSS compliance cho payment card data.
- AML/KYC system design considerations.
- Smart OTP: 2FA implementation pattern.
- SBV (Ngân hàng Nhà nước) reporting requirements.
- Data residency: banking data phải nằm trong Việt Nam.
Thực hành / hoạt động:
- Thiết kế auth flow: User login → OTP/Smart OTP → Session → Token management.
- Thiết kế API security: API Gateway, rate limiting, request signing.
- Thiết kế data encryption: PII/PCI data at-rest và in-transit.
- Thiết kế audit logging: immutable, tamper-proof log cho mọi transaction.
12. Bài 12. Observability & Incident Response
Nội dung:
- Observability pillars: Logging (ELK/Loki), Metrics (Prometheus/Grafana), Tracing (Jaeger/Zipkin).
- SLA, SLO, SLI: định nghĩa và vận hành.
- Incident Response: Runbooks, Alerting, Post-mortem culture.
- Bảo mật nghiệp vụ ngân hàng: Rate limiting, Audit logging, Fraud prevention.
- Audit log phải immutable – có thể dùng append-only storage hoặc blockchain.
- Incident response cho banking: escalation matrix, communication plan.
Thực hành / hoạt động:
- Thiết kế observability stack: logging + metrics + tracing cho distributed system.
- Định nghĩa SLOs và alerting rules cho payment system.
Phần VII. Testing & Architecture Documentation
13. Bài 13. Testing Strategies
Nội dung:
- Testing strategies: Unit, Integration, E2E, Performance, Chaos testing.
- Testing trong kiến trúc microservice: Contract Testing, Consumer-Driven Testing.
- Test Pyramid vs Test Honeycomb: chọn chiến lược phù hợp.
- Performance testing: Load testing, Stress testing, Spike testing.
- Chaos Engineering: chủ động tạo failure để test resilience.
- Core Banking testing challenges: không thể test trên production data.
- Synthetic data generation cho testing environment.
Thực hành / hoạt động:
- Thiết kế testing strategy: unit + integration + contract + E2E.
- Performance testing phải simulate end-of-day batch processing load.
14. Bài 14. UML Diagrams & Architecture Documentation
Nội dung:
- UML Diagrams chuyên nghiệp cho System Design:
- Use Case Diagram: xác định actors và use cases.
- Class Diagram: thiết kế domain model.
- Sequence Diagram: flow giao tiếp giữa components.
- Component Diagram: deployment architecture.
- Activity Diagram: business workflow.
- State Machine Diagram: lifecycle của entities (Order, Transaction, Loan).
- Architecture Decision Records (ADR): documenting decisions.
- Architecture documentation: C4 Model (Context, Container, Component, Code).
- UML là ngôn ngữ chung giữa business và technical teams trong ngân hàng.
Thực hành / hoạt động:
- Vẽ Use Case Diagram cho Customer Journey: Open account → Transfer → Payment.
- Vẽ Class Diagram cho Account/Transaction domain model.
- Vẽ Sequence Diagram cho fund transfer flow (happy path + failure).
- Vẽ Component Diagram cho microservice deployment.
- Viết Architecture Decision Record (ADR) cho 1 quyết định kiến trúc.
Phần VIII. Capstone Project & Case Study
15. Bài 15. Fraud Detection System Design
Nội dung:
- Thiết kế hệ thống Fraud Detection hoàn chỉnh cho ngân hàng.
- Yêu cầu: real-time transaction scoring trong < 100ms.
- Rule-based scoring + ML model scoring kết hợp.
- Xử lý 50,000+ transactions per second (TPS).
- 99.99% availability, zero data loss.
- Compliance: AML monitoring, suspicious transaction reporting.
- Real-time dashboard cho fraud analysts.
- Integration với core banking, payment gateway, card systems.
Thực hành / hoạt động:
- Thiết kế high-level architecture (C4 Model: Context + Container levels).
- Deep-dive: data flow, component design, API design.
- Deep-dive: security, scalability, fault tolerance, observability.
- Hoàn thiện documentation: UML diagrams, ADR, SLO definition.
- Architecture Review Board: mỗi nhóm trình bày và peer review.
Deliverables:
- Architecture Diagram (C4 Model: Context + Container levels).
- Sequence Diagram cho real-time fraud scoring flow.
- Data model / Schema design.
- API specification cho key endpoints.
- Architecture Decision Record (ADR) cho 2+ decisions.
- SLO/SLA definition.
- 10-minute presentation.
16. Bài 16. Banking Case Studies tổng hợp
Nội dung:
- Tổng hợp 10 case study đặc thù ngành ngân hàng để thực hành xuyên suốt khóa học:
- Payment Gateway: Idempotency, ACID, async processing, retry, reconciliation.
- Core Banking Ledger: Double-entry bookkeeping, event sourcing, CQRS, strong consistency.
- Fund Transfer (NAPAS/SWIFT): Saga pattern, compensating transactions, compliance.
- Internet/Mobile Banking: API gateway, session management, rate limiting, caching, CDN.
- AML/Transaction Monitoring: Kafka streaming, Flink/Spark, pattern matching, regulatory reporting.
- Customer 360/KYC System: Microservices integration, data aggregation, workflow engine.
- Real-time Notification System: Pub/sub, push notifications, SMS gateway.
- Loan Origination System: Workflow/state machine, document management, credit scoring.
- Reconciliation System: Batch processing, exception handling, matching algorithms.
Thực hành / hoạt động:
- Problem Framing: giới thiệu bài toán với constraints thực tế.
- Requirements Gathering: nhóm clarify functional/non-functional requirements.
- Architecture Design: nhóm vẽ diagram trên Excalidraw.
- Presentation: mỗi nhóm trình bày, instructor challenge.
- Reference Solution: instructor walkthrough production-grade solution.
Học trực tuyến
Học tại Hồ Chí Minh
Học tại Hà Nội



