Khái niệm
6 phút đọc5 tháng 6, 20261

Mindmap Software Architecture này giúp mình hệ thống lại mọi thứ

Một repo GitHub tổng hợp mindmap và tài liệu về software architecture thứ mình ước mình biết sớm hơn 3 năm.

N

Nguyễn Nhật Long

@nguyennhatlong1303

Mindmap Software Architecture này giúp mình hệ thống lại mọi thứ

Có một giai đoạn mình làm việc mà cứ cảm giác mình biết từng mảnh riêng lẻ biết về microservices, biết về cloud, biết một chút ML nhưng không có cái gì kết nối tất cả lại với nhau. Như kiểu bạn có đủ mảnh ghép hình nhưng không nhìn thấy bức tranh tổng thể.

Rồi mình tìm thấy repo software-architect-mindmap của kimtth trên GitHub. Không phải là mình tìm được câu trả lời cho mọi thứ, nhưng ít nhất mình có một cái map để biết mình đang đứng ở đâu.

Nó thực ra là cái gì?

Repo này xoay quanh một file mindmap lớn Software Architecture_Mindmap.json có thể mở bằng tool mindmap-maker-clean trực tiếp trên browser (Chrome hoặc Firefox đều được). Cái mindmap này cover ba trụ cột chính mà tác giả gọi là Three Main Pillars of Software Architecture:

  • Modern Application Development design patterns, system design, software engineering principles
  • Cloud Computing AWS/Azure/GCP ecosystem, cloud-native architecture
  • Data Science (ML/NN) machine learning, neural networks, AI foundations

Ban đầu repo này được tạo ra dựa trên curriculum của Fresco Play learning platform nội bộ của Tata Consultancy Services. Nhưng sau đó nó evolve thành một curated collection rộng hơn nhiều, bao gồm cả papers, books, reference links và terminology glossary.

Theo kinh nghiệm của mình, cái giá trị nhất không phải là mindmap PNG (dù nó rất đẹp để nhìn tổng quan), mà là phần Section 5: Terminology and Comparisons nơi tác giả giải thích các software terminologies và concepts. Đây là thứ cực kỳ hữu ích khi bạn đang onboard vào một domain mới hoặc chuẩn bị cho technical interview.

Cấu trúc bên trong repo

Repo được chia thành 5 sections chính, mỗi cái phục vụ một mục đích khác nhau:

Mình thấy cái này hay ở chỗ tác giả không cố nhét hết mọi thứ vào mindmap. Mindmap chỉ là entry point, còn phần references mới là nơi bạn đào sâu. Cách tổ chức này khá thông minh.

SectionNội dungPhù hợp với ai
Section 1Software Architecture Mindmap (JSON + PNG)Mọi người, đặc biệt là visual learners
Section 2Reference links: trend reports, mini-books, engineering blogsSenior dev, architect muốn cập nhật industry trends
Section 3Computer Science Papers (70+ distributed systems papers)Người muốn đi sâu vào lý thuyết nền tảng
Section 4Data Science eBooks và GitHub resources cho ML/AIDev đang chuyển hướng sang AI/ML
Section 5Terminology và comparisonsJunior-to-mid dev đang build mental model

Phần references thực sự đáng giá

Nếu bạn đã biết về system design thì chắc quen với ByteByteGo và System Design 101 của họ được link trực tiếp trong repo này. Nhưng cái mình thấy valuable hơn là danh sách papers:

Computer Science Papers Every Developer Should Read đây không phải mấy bài academic khô khan vô dụng. Đây là những papers thực sự định hình cách chúng ta build software ngày nay. Ví dụ, nếu bạn làm distributed systems mà chưa đọc qua Google's Bigtable paper hay Amazon's Dynamo paper thì bạn đang miss context quan trọng để hiểu tại sao DynamoDB hay Cassandra lại được design theo cách đó.

25 Papers That Completely Transformed the Computer World cái title nghe có vẻ clickbait nhưng thực ra khá accurate. MapReduce, PageRank, Attention Is All You Need (Transformer paper)... những thứ này không phải đọc cho vui, mà đọc để hiểu tại sao hệ sinh thái tech hiện tại lại trông như vậy.

Anh em lưu ý: đừng cố đọc hết tất cả một lúc. Mình suggest dùng repo này như một reference index khi bạn encounter một concept nào đó trong công việc, quay lại đây tìm paper hoặc resource liên quan.

Cái mindmap JSON thực sự có thể làm được gì?

Đây là phần ít người để ý. File Software Architecture_Mindmap.json không phải chỉ để xem bạn có thể edit và customize nó cho team của mình.

Dùng mindmap-maker-clean, bạn có thể:

  • Load JSON lên, chỉnh sửa nodes
  • Export ra high-resolution PNG để dùng trong documentation hoặc onboarding materials
  • Fork lại và build một mindmap riêng cho tech stack của team

Mình đã thử fork cái này và customize cho một project, thêm vào các services cụ thể mà team đang dùng. Kết quả là một onboarding doc visual khá tốt cho new member. Thay vì viết 20 trang document, mình có một mindmap mà người mới có thể nhìn và hiểu big picture trong 10 phút.

Trend reports và engineering blogs trong Section 2

Phần này mình dùng nhiều hơn mình nghĩ ban đầu. Cụ thể:

Thoughtworks Technology Radar cái này thực sự valuable. Họ archive PDF từ vol.1 đến vol.34, và nếu bạn đọc theo timeline thì bạn thấy rõ ràng các technology trends shift như thế nào qua các năm. Ví dụ, container orchestration từ chỗ là "Assess" (thử nghiệm) đến "Adopt" (mainstream) mất khoảng 2-3 năm. Đọc cái này giúp bạn có sense tốt hơn về việc nên invest time vào technology nào.

InfoQ và DZone hai nguồn này khá quen với dân tech rồi. Nhưng việc có link trực tiếp trong một curated list giúp bạn không bị overwhelmed bởi quá nhiều content.

Awesome Lists repo này link đến ecosyste.ms/awesome, một service index tất cả awesome lists trên GitHub. Đây là rabbit hole nguy hiểm bạn có thể mất cả buổi chiều ở đây và không nhận ra.

Dùng repo này như thế nào cho hiệu quả?

Theo kinh nghiệm của mình, cách tệ nhất để dùng repo này là cố đọc từ đầu đến cuối theo thứ tự. Nó không phải một cuốn sách.

Cách mình dùng:

  1. Khi bắt đầu một domain mới mở mindmap PNG ra, nhìn tổng quan xem domain đó có những sub-topics nào, rồi mới dive vào từng phần.
  2. Khi chuẩn bị system design interview đọc Section 5 (terminology) và check System Design 101 reference. Đây là hai nguồn đủ để cover 80% những gì interviewer thường hỏi.
  3. Khi muốn hiểu sâu một technology tìm paper liên quan trong Section 3. Ví dụ muốn hiểu tại sao Kafka được design theo cách đó, đọc original LinkedIn paper về log-based messaging.
  4. Khi onboard member mới dùng mindmap làm starting point để explain big picture, sau đó link đến resources cụ thể cho từng area họ cần focus.

Một điểm nữa: repo này được update liên tục 75 commits tính đến thời điểm mình viết bài này. Tác giả có vẻ actively maintain, nên worth một cái Star để theo dõi updates.

Nếu bạn đang ở giai đoạn mid-level và muốn move lên senior hoặc architect role, việc có một mental model rõ ràng về software architecture landscape là thứ không thể thiếu. Repo này không cho bạn câu trả lời, nhưng nó cho bạn cái map và đôi khi đó là thứ bạn cần nhất.

NN

Nguyễn Nhật Long

@nguyennhatlong1303

Nguyễ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è!