Reactive và proactive thường bị nói như hai phe đối lập. Thực tế trong production, chúng thường là hai lớp bổ sung cho nhau: một lớp giúp hệ phản ứng đúng khi sự cố xảy ra, lớp còn lại giúp hệ chuẩn bị trước để giảm xác suất sự cố hoặc giảm blast radius.
Table of contents
Open Table of contents
Reactive là gì
Reactive nghĩa là hệ phản ứng theo event, input, failure, hoặc pressure thật sự đang xảy ra.
Ở mức hệ thống, reactive design thường ưu tiên:
- responsiveness,
- resilience,
- elasticity,
- message-driven communication.
Proactive là gì
Proactive nghĩa là hệ đi trước một bước.
Ví dụ:
- prefetch dữ liệu,
- warm cache,
- dự báo traffic để scale sớm,
- phát hiện bất thường rồi hành động trước khi người dùng kêu.
Reactive ở mức kiến trúc
Trong distributed systems, reactive approach rất hợp khi:
- workload biến động mạnh,
- nhiều I/O,
- cần async,
- cần cô lập failure.
Case điển hình là event-driven systems dùng Kafka, RabbitMQ, SNS hoặc SQS.
Đây là reactive theo nghĩa kiến trúc: event đã xảy ra, các consumer phản ứng độc lập, và một consumer lỗi không nhất thiết kéo sập toàn bộ request path.
Proactive ở mức vận hành
Proactive approach phát huy ở:
- predictive scaling,
- capacity planning,
- precompute,
- cache warming,
- self-healing workflows,
- anomaly detection.
Nó đặc biệt hữu ích khi chi phí đợi lỗi rồi chữa quá cao.
Ví dụ 1: Microservices resilience
Reactive patterns như circuit breaker, bulkhead, fallback giúp một service lỗi không kéo sập cả chuỗi gọi.
Đây là kiểu reactive rất đáng tiền vì nó giảm blast radius ngay lúc sự cố xảy ra.
Ví dụ 2: Event-driven systems
Khi Order Service publish event và Payment, Inventory, Shipping tiêu thụ độc lập, một consumer chết không nhất thiết làm API chết theo dây chuyền.
Đây là reactive theo nghĩa kiến trúc bất đồng bộ và message-driven.
Ví dụ 3: Autoscaling
HPA kiểu truyền thống là reactive: thấy CPU hoặc RPS vượt ngưỡng rồi mới scale.
Predictive scaling là proactive: dự báo trước giờ cao điểm để scale baseline từ sớm.
Hướng mạnh nhất thường là hybrid:
- proactive để chuẩn bị baseline,
- reactive để xử lý spike bất thường.
Trong production, đây thường là câu trả lời thực dụng nhất: proactive lo phần có thể đoán, reactive lo phần không thể đoán.
Khi nào chọn cái nào
Nghiêng về reactive khi:
- tải biến động khó đoán,
- hệ phụ thuộc event,
- cần failure isolation mạnh.
Nghiêng về proactive khi:
- traffic có pattern rõ,
- SLO nhạy,
- downtime hoặc tail latency rất đắt.
Chốt lại
Reactive giúp hệ không gãy khi biến cố xảy ra. Proactive giúp hệ bớt phải đi vào biến cố ngay từ đầu. Hệ production tốt thường không chọn một trong hai. Nó kết hợp cả hai, nhưng đặt rõ trách nhiệm cho từng lớp.