NỘI DUNG BÀI HỌC

✅ Kiến trúc tổng quát hệ thống hiện nay
✅ Ví dụ hệ thống Backend với Java Spring Boot
✅ Các yếu tố ảnh hưởng đến hiệu năng API
✅ Thảo luận nhóm
✅ Giới thiệu công cụ Monitoring

✅ Kiến trúc tổng quát hệ thống hiện nay

 

1. Tổng quan

Trong các hệ thống hiện đại, đặc biệt là kiến trúc Microservices, luồng xử lý request điển hình thường bao gồm các thành phần:
Frontend (UI), API Call, API Gateway, Load Balancer, Microservices, Database.

2. FE




  • Chức năng: Người dùng tương tác với ứng dụng web hoặc mobile → tạo ra request gửi tới backend.
  • Triển khai:
    • Web: ReactJS, Angular, VueJS.
    • Mobile: Android (Kotlin/Java), iOS (Swift).
  • Ví dụ: Người dùng nhấn nút “Thanh toán” trên app → tạo request POST /api/orders.

3.  API Gateway

  • Chức năng:
    • Cổng vào tập trung, nhận tất cả request từ client.
    • Định tuyến request đến service thích hợp.
    • Xử lý authentication, rate limiting, logging.
    • Midle auth

Tính năng điển hình:

  • Authentication: JWT, OAuth2.
  • Rate Limiting: Bucket4j + Redis.
  • Logging: Spring Cloud Sleuth + Zipkin.


4. Load Balancer

Phân loại: Có nhiều cách phân loại LB nhưng hiện tại hay dùng cách phân loại dưới đây

 a. Load Balancer phần cứng (Hardware LB)

  • Thiết bị chuyên dụng đặt trong datacenter.
  • Ưu điểm: Hiệu năng cao, bảo mật tốt.
  • Nhược điểm: Chi phí đắt, khó mở rộng linh hoạt.
  • Ví dụ: F5 BIG-IP, Citrix ADC.

 b. Load Balancer phần mềm (Software LB)

  • Cài đặt trên máy chủ hoặc container.
  • Ưu điểm: Linh hoạt, chi phí thấp, dễ tích hợp DevOps/Cloud.
  • Ví dụ: Nginx, HAProxy, Traefik, Envoy.

 c. Load Balancer trên Cloud (Managed LB)

  • Dịch vụ cân bằng tải do nhà cung cấp Cloud quản lý.
  • Ưu điểm: Không cần quản trị, tự động scale, tích hợp bảo mật.
  • Nhược điểm: Phụ thuộc vào nhà cung cấp.
  • Ví dụ: AWS ELB (ALB, NLB, CLB), Azure Load Balancer, GCP Load Balancer.
  • Chức năng: Phân phối request đến nhiều instance backend để cân bằng tải và tăng khả năng chịu lỗi.
  • Triển khai:
    • Phần cứng: Nginx, HAProxy.
    • Cloud: AWS ALB, GCP Load Balancer.
    • Spring Boot client-side load balancing: Netflix Ribbon hoặc Spring Cloud LoadBalancer.


5. Service Api

Chức năng:

  • Thực hiện logic nghiệp vụ cốt lõi của hệ thống.
  • Xử lý dữ liệu nhận từ API Gateway và giao tiếp với Database, Cache, hoặc các hệ thống bên ngoài.
  • Tách biệt thành nhiều microservice để dễ mở rộng, quản lý và triển khai độc lập.
  • Đảm bảo scalability (khả năng mở rộng) và fault tolerance (khả năng chịu lỗi).

Tính năng điển hình:

  • Business Logic: Hiện thực hóa các chức năng nghiệp vụ (ví dụ: đăng ký tài khoản, xử lý thanh toán, quản lý sản phẩm...).
  • Data Access Layer: Giao tiếp với cơ sở dữ liệu (MySQL, PostgreSQL, MongoDB...).
  • Caching: Tích hợp Redis/Memcached để tăng tốc truy xuất dữ liệu.
  • Communication: Hỗ trợ REST API, gRPC, hoặc messaging (Kafka, RabbitMQ) cho giao tiếp bất đồng bộ.
  • Observability: Kết hợp monitoring, logging, tracing (Micrometer + Prometheus/Grafana, Zipkin).
  • Security: Áp dụng các cơ chế xác thực/ủy quyền, mã hóa dữ liệu, input validation.

👉 Nói ngắn gọn, Service API chính là “trái tim” của hệ thống, nơi toàn bộ nghiệp vụ và xử lý dữ liệu được thực hiện, thường triển khai theo mô hình microservices để dễ dàng mở rộng, bảo trì và tích hợp. Và các vấn đề về Performacne sẽ thường hay gặp ở tầng này


6. Database


  • Chức năng: Lưu trữ và truy xuất dữ liệu, mỗi loại database phục vụ mục đích khác nhau:
  • Ví dụ:
    • MySQL: Lưu dữ liệu transactional chính.
    • Elasticsearch: Tìm kiếm nhanh, phân tích log.
    • Redis: Lưu cache in-memory, tăng tốc truy xuất.
    • Triển khai Spring Boot:
      spring:
        datasource:
          url: jdbc:mysql://localhost:3306/demo_db
          username: root
          password: rootpassword
        redis:
          host: localhost
          port: 6379​


🎯 Lưu ý trong khóa học

👉 Tập trung chủ yếu vào Service → Database, vì đây là nơi hiệu năng bị ảnh hưởng nhiều nhất.

7. Ví dụ thực tế hệ thống backend với Java Spring boot

a. Luồng xử lý trong Spring Boot

  • Controller: Tiếp nhận request từ client.
  • Service: Xử lý logic nghiệp vụ.
  • Repository: Truy vấn dữ liệu từ DB.
  • Entity (Model): Ánh xạ dữ liệu DB.
  • DTO: Truyền dữ liệu giữa các tầng.
  • Response: Trả kết quả về client.


b. Ví dụ thực tế

@GetMapping("/{id}")
public ResponseEntity<ProductDto> getById(@PathVariable Long id) {
logger.info("REQUEST: GET /v1/api/products/{}", id);
ProductDto response = productService.getById(id);
logger.info("RESPONSE: status=200 body={}", response.toString());
return ResponseEntity.ok(response);
}
  • Controller: nhận request /orders/{id}.
  • Service: xử lý nghiệp vụ, gọi repository.
  • Repository: chạy query đến DB.
  • Entity/DTO: ánh xạ dữ liệu → trả về Response.

8. Các yếu tố ảnh hưởng đến hiệu năng Api

a. Cấu trúc mã nguồn

  • Code vòng lặp lồng nhau, logic dư thừa.
  • Không áp dụng asynchronous processing.
  • Thiếu batch processing.

b. Thiết kế truy vấn DB

  • Thiếu index → full table scan.
  • Không partition/sharding → dữ liệu lớn chậm.
  • Query nặng: nhiều join, subquery không tối ưu.

c. Cấu hình cache

  • Redis/Memcached giảm tải DB.
  • Lỗi thường gặp: invalidate sai, key thiết kế kém.

d. Data Volume

  • DB ít dữ liệu → test nhanh nhưng không phản ánh thực tế.
  • Ví dụ: test API “lịch sử đơn hàng” thì chúng ta phải chuẩn bị đủ dữ liệu với yêu cầu như sau
    1. Tổng số lượng bản ghi trong order_history
    2. Tổng số bản ghi trên từng customer

9. Giới thiệu công cụ Monitoring và Loging

a. Grafana

  • Dashboard trực quan: CPU, RAM, I/O, DB connection.
  • Kết hợp Prometheus để giám sát metric.

b. Kibana

  • Loging mạnh mẽ
  • Phân tích log dễ dàng

c. Thực hành

Chạy jmeter và xem monitor hệ thống trên Grafana và xem log trên Kibana


Sau buổi học, học viên sẽ:

  • Hiểu rõ kiến trúc hệ thống và luồng xử lý request.
  • Nắm được các yếu tố ảnh hưởng đến hiệu năng API.
  • Biết cách đặt câu hỏi hiệu quả với team BE.
  • Có kỹ năng cơ bản sử dụng công cụ monitoring.


📚
Tài liệu tham khảo:

  1. Repo code: Spring Boot + Grafana
  2. Spring Boot Docs

Teacher

Teacher

NGUYỄN TRÍ DIỆN

Fullstack QA

With over 4 years of experience in software testing — including manual, automation, and performance testing — I have built a strong foundation in delivering high-quality software.

I specialize in the E-commerce and Banking domains, with deep understanding of business flows, performance requirements, and testing standards.

Strong in critical thinking and problem-solving, I proactively identify issues and drive effective solutions.

With an engineering mindset, I continuously update my skills and contribute across functions to help teams achieve their goals.


Cộng đồng Automation Testing Việt Nam:

🌱 Telegram Automation Testing:   Cộng đồng Automation Testing
🌱 
Facebook Group Automation: Cộng đồng Automation Testing Việt Nam
🌱 
Facebook Fanpage: Cộng đồng Automation Testing Việt Nam - Selenium
🌱 Telegram
Manual Testing:   Cộng đồng Manual Testing
🌱 
Facebook Group Manual: Cộng đồng Manual Testing Việt Nam

Chia sẻ khóa học lên trang

Bạn có thể đăng khóa học của chính bạn lên trang Anh Tester để kiếm tiền

Danh sách bài học