DDD & Bounded Context — Tách Microservices (Building Microservices)
Tìm hiểu cách ứng dụng Domain-Driven Design và Bounded Context để phân định ranh giới microservices — từ lý thuyết đến thực hành.
THE ENGINEERING JOURNAL
Những điều mình xây, những vấn đề mình gặp, và những gì mình học được. Về phần mềm, từ bên trong.
Tìm hiểu cách ứng dụng Domain-Driven Design và Bounded Context để phân định ranh giới microservices — từ lý thuyết đến thực hành.
Unix pipes và MapReduce — từ sort/grep/awk trên một máy đến MapReduce chạy trên cả cluster. Tìm hiểu triết lý xử lý dữ liệu theo lô trong DDIA.
Chiến lược chia nhỏ monolith: Strangler Fig, bounded context, tách database, xử lý transaction trong hệ phân tán.
MapReduce ghi intermediate state ra disk giữa mỗi phase — đây là điểm yếu chí tử. Spark, Flink, Tez thay thế bằng DAG pipeline, xử lý trong memory, hỗ trợ cả batch lẫn streaming.
Domain-Driven Design là chìa khóa để xác định ranh giới microservices. Chapter 2 nói về bounded context, ubiquitous language và cách áp dụng DDD vào thực tế.
Unix pipes là nguồn cảm hứng cho MapReduce — cách các hệ thống batch processing xử lý dữ liệu quy mô lớn với triết lý đơn giản
Table-driven tests giúp Go tests gọn gàng, dễ thêm case mới. Học pattern này qua ví dụ thực tế và kinh nghiệm production.
Hiểu rõ Event Loop, Microtask và Macrotask trong JavaScript — cách Node.js và browser xử lý code bất đồng bộ.
Giới thiệu microservices: định nghĩa, key concepts, so sánh với monolith, pain points và khi nào nên dùng từ cuốn Building Microservices.
Khám phá các cơ chế ordering guarantees và consensus trong distributed systems: total order broadcast, 2PC, Raft consensus algorithm, và ZooKeeper.