Awesome Architecture: Kho tài nguyên giúp bạn tư duy như một architect
26 tutorial, 25 template, 6 case study thực tế - tất cả để giúp bạn thiết kế hệ thống trước khi viết một dòng code.
Nguyễn Nhật Long
@nguyennhatlong1303
Mình hay nói đùa với mấy anh em trong team rằng: cái khó nhất của software engineering không phải là viết code, mà là quyết định không viết cái gì. Và càng làm lâu, mình càng thấy câu đó đúng hơn.
Gần đây mình tình cờ đào được một repo trên GitHub tên là awesome-architecture - hiện đang có hơn 1.2k star và đang tăng khá nhanh. Đọc qua lần đầu mình nghĩ "ừ thêm một awesome-list nữa", nhưng đọc kỹ hơn thì thấy nó khác hẳn so với kiểu repo liệt kê link bừa bãi mà mình hay thấy.
Vấn đề mà repo này đang giải quyết
Hãy thành thật với nhau một chút. Hầu hết chúng ta học system design theo kiểu: đọc "Designing Data-Intensive Applications", xem mấy video YouTube về Netflix architecture, rồi lên LeetCode luyện system design interview. Kết quả là mình biết buzzword - biết nói "dùng Kafka cho event streaming", "Redis cho caching", "sharding cho horizontal scale" - nhưng khi ngồi vào whiteboard thật sự và design một hệ thống từ đầu, thì lại loay hoay không biết bắt đầu từ đâu.
Cái gap đó chính xác là thứ mà awesome-architecture đang cố fill vào.
Repo này không dạy bạn syntax, không dạy bạn dùng framework X hay library Y. Nó dạy bạn một thứ khác hẳn: cách suy nghĩ trước khi code. Kiểu như, trước khi bạn mở IDE ra, bạn đã phải trả lời được những câu hỏi này:
- Data flow trong hệ thống này đi từ đâu đến đâu?
- Phần nào cần strong consistency, phần nào chấp nhận eventual consistency?
- Bottleneck đầu tiên sẽ xuất hiện ở đâu khi scale từ 10k lên 1M users?
- Trade-off nào mình đang chấp nhận và tại sao?
Nếu bạn chưa trả lời được những câu này, việc bắt đầu code chỉ là đang nợ technical debt cho tương lai.
Cấu trúc repo - 3 tầng rất rõ ràng
Repo được tổ chức theo 3 folder chính, và cái hay là mỗi folder phục vụ một mục đích khác nhau thay vì nhét tất cả vào một chỗ:
Cái mình thấy thoughtful nhất là sự phân biệt giữa templates/ và cases/. Template là bản đồ - nó cho bạn thấy hệ thống trông như thế nào. Còn case study là hành trình - nó cho bạn thấy người ta đã đưa ra những quyết định gì, tại sao, và phải trade-off những gì. Hai thứ đó bổ sung cho nhau hoàn toàn khác nhau.
| Folder | Mục đích | Phù hợp khi nào |
|---|---|---|
| `tutorial/` | Dạy tư duy - từ cơ bản đến nâng cao | Bạn muốn build mental model từ đầu |
| `templates/` | 25 architecture template của các hệ thống thực tế | Bạn cần reference khi design hệ thống tương tự |
| `cases/` | 6 end-to-end case study từ 0 đến production | Bạn muốn xem reasoning process, không chỉ kết quả |
26 Tutorial - không phải tutorial bình thường
Mình đã đọc qua phần tutorial và thực sự ấn tượng với cách nó được cấu trúc. Thay vì dạy theo kiểu "đây là microservices, đây là monolith", nó build up từng layer một:
Phần foundation (01 - 09) bắt đầu từ câu hỏi cơ bản nhất: tại sao architecture thinking lại quan trọng? Sau đó đi vào framework tư duy: requirements → constraints → quality attributes → trade-offs. Đây là cái flow mà theo kinh nghiệm của mình, hầu hết dev junior (và cả một số senior) đều bỏ qua, nhảy thẳng vào solution mà không hiểu rõ problem.
Chương 03 về C4 model cũng đáng đọc - nếu bạn đã từng ngồi vẽ architecture diagram mà không ai trong team hiểu bạn đang vẽ gì, thì C4 là một chuẩn khá phổ biến để giải quyết vấn đề đó.
Phần nâng cao (10 - 17) mới là chỗ mình thấy repo này khác biệt. Nó đi vào những thứ mà hầu hết tutorial bỏ qua vì... khó:
- Distributed systems hardships: partial failures, no global clock, consensus cost, exactly-once delivery illusion
- Data consistency engineering: Saga pattern, Outbox pattern, idempotency, event sourcing, CQRS
- Resilience engineering: cascade failures, circuit breaker, bulkhead, load shedding, chaos engineering
- Scale mechanics: consistent hashing, hotspot handling, multi-region active-active, tail latency
Anh em lưu ý chương 17 - "Kiến trúc trong kỷ nguyên LLM". Nó cover những thứ rất mới như vibe coding, non-determinism trong AI systems, context engineering, và agentic architecture. Đây là phần mà mình nghĩ sẽ ngày càng quan trọng khi chúng ta build nhiều AI-native system hơn.
Phần thực chiến (18 - 22) bridge cái gap giữa lý thuyết và practice. Chương 19 ví dụ: design một AI customer service system từ đầu - bao gồm cả token cost estimation, cái mà ít người nghĩ đến khi design AI system nhưng lại ảnh hưởng trực tiếp đến business cost.
Phần AI collaboration (23 - 26) thì mình thấy khá thú vị và forward-looking. Nó dạy cách viết specs và constraints để AI (như Claude, Cursor, Codex) có thể assist bạn trong architecture design - không phải vibe coding kiểu "generate cho tao một cái app", mà là spec-first approach có kiểm soát.
25 Architecture Templates - đây mới là killer feature
Nếu bạn đang design một hệ thống và muốn xem "người ta thường làm thế nào", thì 25 template này là cực kỳ có giá trị. Điểm khác biệt so với các blog post thông thường là các template này chỉ nói về architecture, không nói về syntax hay implementation.
Theo kinh nghiệm của mình, đây là cách học hiệu quả nhất: xem template → hiểu pattern → áp dụng vào context của mình → điều chỉnh theo constraints cụ thể. Không phải copy-paste, mà là internalize cái reasoning.
Repo cũng có companion tool tên là architecture-copilot - một skill/plugin cho phép bạn dùng những template này trực tiếp trong Claude Code, Cursor, hoặc Codex để guide architecture design step by step. Mình chưa test kỹ cái này nhưng concept khá hay: thay vì hỏi AI "design cho tao một hệ thống", bạn có một structured framework để AI dẫn bạn qua từng bước quyết định.
Bilingual - một detail nhỏ nhưng quan trọng
Toàn bộ content có cả tiếng Anh lẫn tiếng Trung (repo gốc từ tác giả người Hoa). Cái này có nghĩa là bạn có thể đọc bản tiếng Anh khi cần terminology chuẩn để dùng trong công việc, hoặc đọc bản kia khi cần hiểu nhanh concept. Online version có thể đọc tại study8677.github.io/awesome-architecture.
Tại sao mình nghĩ repo này đáng bookmark
Có rất nhiều resource về system design ngoài kia - System Design Interview books, Grokking the System Design Interview, ByteByteGo, v.v. Tất cả đều tốt. Nhưng awesome-architecture có một góc nhìn khác biệt mà mình thấy hay ở chỗ: nó không design cho interview, nó design cho production.
Có sự khác biệt rất lớn giữa hai thứ đó. Interview system design thường có một "correct answer" mà interviewer đang chờ. Production system design thì không có đáp án đúng - chỉ có trade-offs phù hợp với context của bạn. Repo này train bạn theo kiểu thứ hai.
Ngoài ra, cái phần về Conway's Law, team topology, platform engineering (chương 15) - đây là những thứ mà technical books hiếm khi đề cập nhưng lại ảnh hưởng rất nhiều đến architecture thực tế. Kiểu như bạn có thể design microservices đẹp trên giấy, nhưng nếu team structure của bạn là monolith thì hệ thống cuối cùng vẫn sẽ là distributed monolith thôi.
Nếu bạn đang ở giai đoạn muốn move từ "dev viết code tốt" lên "engineer hiểu hệ thống", thì đây là một trong những resources mình sẽ recommend đầu tiên. Start từ tutorial/README.md, đọc theo thứ tự, và parallel với đó thì browse qua các template để xem pattern nào đang được áp dụng trong thực tế.
Star repo lại để bookmark, và nếu bạn đã đọc qua rồi thì drop comment xuống dưới - mình tò mò anh em thấy phần nào trong đó hữu ích nhất với công việc hiện tại.
Nguyễn Nhật Long
@nguyennhatlong1303Nguyễn Nhật Long is a Senior Frontend Engineer and Frontend Team Leader with 7 years of experience building real-time fintech platforms. Specializing in React, Next.js, TypeScript, and React Native, shipping 10+ products across Web, Mobile, Telegram Mini-Apps, and Web3.
Thấy hay? Chia sẻ cho bạn bè!