Solution Architect (SA): Thiết kế hệ thống & Deploy
Học cách nhìn hệ thống như một Solution Architect: phân tích yêu cầu, chọn kiến trúc, thiết kế dữ liệu, rồi tự tay đóng gói, triển khai và vận hành ứng dụng trên server và cloud.
Lộ trình này dành cho
- Lập trình viên backend, fullstack muốn tiến lên vai trò Solution Architect hoặc tech lead
- Người đã viết được ứng dụng web nhưng chưa tự đưa lên server và vận hành
- Sinh viên năm cuối muốn hiểu hệ thống thật được thiết kế và triển khai thế nào
Cần chuẩn bị
- Đã xây được một ứng dụng web có cơ sở dữ liệu (xem lộ trình Backend với PHP & Laravel)
- Biết Git và dòng lệnh cơ bản
- Một VPS giá rẻ hoặc tài khoản cloud có gói miễn phí để thực hành
- Đọc được tài liệu kỹ thuật tiếng Anh
Học xong bạn sẽ
- Phân tích yêu cầu phi chức năng và ước lượng tải cho một hệ thống
- Chọn và giải thích được kiến trúc, cơ sở dữ liệu, cache, hàng đợi phù hợp
- Viết tài liệu kiến trúc với sơ đồ C4 và ADR
- Đóng gói bằng Docker, triển khai có HTTPS và CI/CD tự động
- Giám sát, sao lưu và xử lý sự cố khi hệ thống chạy thật
Các bước học
Giai đoạn 1 · Tư duy kiến trúc
Bước 1: Vai trò Solution Architect & yêu cầu phi chức năng
⏱ 1 tuầnSolution Architect làm gì, khác gì lập trình viên, và vì sao mọi thiết kế bắt đầu từ yêu cầu về hiệu năng, độ sẵn sàng, bảo mật, chi phí.
Sau bước này bạn có thể
- Mô tả được công việc và trách nhiệm của một Solution Architect
- Tách yêu cầu chức năng với yêu cầu phi chức năng: hiệu năng, độ sẵn sàng, khả năng mở rộng, bảo mật, chi phí
- Diễn đạt yêu cầu bằng con số đo được, ví dụ thời gian phản hồi và tỷ lệ uptime
- Nêu được đánh đổi (trade-off) của một lựa chọn thiết kế
Video hướng dẫn (mỗi video một chủ đề)
VideoSystem Architect (SA) là gì? Cách trở thành SAViệt TrầnXem trên YouTube ↗
VideoCon đường nào để trở thành Solution Architect? Hiểu nhầm tai hại về title và thực lựcLê Hoàng DũngXem trên YouTube ↗
VideoSoftware Architect & Architecture: Mindset, nhiệm vụ và những thứ bạn cần biếtViệt TrầnXem trên YouTube ↗Tài liệu & khóa học
✍️ Bài tập thực hành
Chọn một ứng dụng bạn đã làm hoặc hay dùng. Viết một trang yêu cầu phi chức năng cho nó: số người dùng, thời gian phản hồi, mức uptime, dữ liệu cần bảo vệ và ngân sách hạ tầng.
Bước 2: Ước lượng tải & các khối xây dựng của hệ thống
⏱ 2 tuầnƯớc lượng nhanh lưu lượng, dung lượng lưu trữ và làm quen các thành phần ghép nên mọi hệ thống lớn: load balancer, reverse proxy, cache, hàng đợi, CDN.
Sau bước này bạn có thể
- Ước lượng số request mỗi giây, dung lượng lưu trữ và băng thông từ số người dùng
- Giải thích vai trò của load balancer, reverse proxy và CDN
- Biết khi nào thêm cache và rủi ro khi dữ liệu trong cache đã cũ
- Dùng hàng đợi để xử lý bất đồng bộ các việc tốn thời gian
- Phân biệt scale dọc với scale ngang và vì sao ứng dụng nên stateless
Video hướng dẫn (mỗi video một chủ đề)
PlaylistSystem DesignTechCraft OfficialXem trên YouTube ↗
VideoTôi nhận SA (Solution Architect): Hãy ước tính Server phục vụ 30 tỷ requestsTips JavascriptXem trên YouTube ↗
VideoGiới thiệu sơ về Proxy, Reverse Proxy và Load BalancerÔng DevXem trên YouTube ↗
VideoRedis là gì? Bài học này đủ để bắt đầuTips JavascriptXem trên YouTube ↗
VideoChính xác là tôi nên sử dụng MQ khi nào? Giờ bạn đã hiểu về Message QueueTips JavascriptXem trên YouTube ↗✍️ Bài tập thực hành
Ước lượng tải cho một trang bán hàng có 100.000 người dùng mỗi ngày, rồi vẽ sơ đồ các thành phần cần có: load balancer, máy chủ ứng dụng, cơ sở dữ liệu, cache, hàng đợi gửi email.
Giai đoạn 2 · Thiết kế hệ thống
Bước 3: Dữ liệu ở quy mô lớn
⏱ 1 - 2 tuầnChọn loại cơ sở dữ liệu và mở rộng nó khi dữ liệu, lượt truy cập tăng: index, replication, partition, sharding và giới hạn của hệ phân tán.
Sau bước này bạn có thể
- Chọn giữa cơ sở dữ liệu quan hệ và NoSQL theo đặc điểm dữ liệu, truy vấn
- Dùng replication để tăng khả năng đọc và dự phòng khi máy chủ chính hỏng
- Phân biệt partition với sharding và biết khi nào mới cần đến
- Hiểu định lý CAP và đánh đổi giữa tính nhất quán với tính sẵn sàng
Video hướng dẫn (mỗi video một chủ đề)
VideoDatabase Replication - kỹ thuật buộc phải biết trong System DesignTrần Quốc Huy - WecommitXem trên YouTube ↗
VideoDatabase Partitioning vs Sharding | Software Engineering Cơ BảnViet TranXem trên YouTube ↗
VideoCAP Theorem: hệ thống phân tán không có lựa chọn hoàn hảoTechCraft OfficialXem trên YouTube ↗Tài liệu & khóa học
✍️ Bài tập thực hành
Thiết kế phần lưu trữ cho hệ thống đơn hàng tăng 1 triệu đơn mỗi tháng: các bảng chính, index, phương án replication và thời điểm bạn sẽ cân nhắc partition.
Bước 4: Kiểu kiến trúc: monolith, microservices, event-driven
⏱ 1 - 2 tuầnSo sánh các kiểu kiến trúc phổ biến và học cách chọn theo quy mô đội ngũ, sản phẩm thay vì theo trào lưu.
Sau bước này bạn có thể
- Nêu ưu, nhược điểm của monolith, modular monolith và microservices
- Xác định ranh giới giữa các service theo nghiệp vụ
- Dùng sự kiện và message broker để các service giao tiếp bất đồng bộ
- Giải thích vì sao nhiều dự án nên bắt đầu bằng monolith
Video hướng dẫn (mỗi video một chủ đề)
VideoMicroservices là gì? Kiến trúc "nhỏ" cho các dự án siêu toPhạm Huy HoàngXem trên YouTube ↗
VideoMicroservices vs Monolith: Chọn sai kiến trúc là "đốt" cả năm! Khi nào nên tách?TechCraft OfficialXem trên YouTube ↗
VideoKafka là gì? Vì sao gần như mọi Big Tech đều dùng?TechCraft OfficialXem trên YouTube ↗Tài liệu & khóa học
✍️ Bài tập thực hành
Lấy một ứng dụng monolith bạn biết. Đề xuất cách tách nó thành 3 - 4 service nếu thật sự cần, nêu rõ dữ liệu mỗi service sở hữu, cách chúng gọi nhau và những rủi ro mới phát sinh.
Bước 5: Tài liệu kiến trúc & bảo mật từ khâu thiết kế
⏱ 1 tuầnTrình bày kiến trúc để người khác hiểu và phản biện được: sơ đồ C4, bản ghi quyết định kiến trúc (ADR), cùng các nguyên tắc bảo mật cần tính từ đầu.
Sau bước này bạn có thể
- Vẽ sơ đồ C4 mức Context và Container cho một hệ thống
- Ghi lại quyết định kiến trúc bằng ADR: bối cảnh, lựa chọn, hệ quả
- Áp dụng các nguyên tắc Twelve-Factor để ứng dụng dễ triển khai
- Nhận diện rủi ro bảo mật phổ biến theo OWASP Top 10 và cách quản lý secret
Tài liệu & khóa học
✍️ Bài tập thực hành
Viết bộ tài liệu kiến trúc cho ứng dụng ở bước 1: sơ đồ C4 mức 1 và 2, ba ADR cho ba quyết định quan trọng nhất và danh sách rủi ro bảo mật cần xử lý.
Giai đoạn 3 · Deploy lên server
Bước 6: Linux server & SSH
⏱ 1 tuầnLàm chủ dòng lệnh Linux ở mức đủ để quản trị một server: kết nối SSH, người dùng và quyền, tiến trình, dịch vụ, tường lửa.
Sau bước này bạn có thể
- Dùng thành thạo các lệnh thao tác file, tiến trình và log trên Linux
- Đăng nhập server bằng SSH key và tắt đăng nhập bằng mật khẩu
- Tạo người dùng riêng, phân quyền file và dùng sudo đúng cách
- Quản lý dịch vụ bằng systemd và chỉ mở những cổng cần thiết trên tường lửa
Video hướng dẫn (chọn một để theo)
Tài liệu & khóa học
✍️ Bài tập thực hành
Thuê hoặc tạo một server Ubuntu rồi thiết lập ban đầu: người dùng không phải root, đăng nhập bằng SSH key, tường lửa chỉ mở cổng 22, 80, 443.
Bước 7: Docker & Docker Compose
⏱ 2 tuầnĐóng gói ứng dụng và các dịch vụ đi kèm vào container để chạy giống nhau trên máy cá nhân và trên server.
Sau bước này bạn có thể
- Giải thích image, container, volume, network và khác biệt so với máy ảo
- Viết Dockerfile gọn, tận dụng cache và build nhiều giai đoạn
- Chạy ứng dụng cùng cơ sở dữ liệu, cache bằng Docker Compose
- Quản lý cấu hình và secret qua biến môi trường, không đưa vào image
Video hướng dẫn (chọn một để theo)
Tài liệu & khóa học
✍️ Bài tập thực hành
Đóng gói ứng dụng web của bạn: viết Dockerfile và file Compose gồm ứng dụng, cơ sở dữ liệu, Redis. Một lệnh duy nhất phải dựng được toàn bộ môi trường trên máy khác.
Bước 8: Nginx, tên miền & HTTPS
⏱ 1 tuầnĐưa ứng dụng ra Internet: trỏ tên miền, đặt Nginx làm reverse proxy và bật HTTPS miễn phí với Let's Encrypt.
Sau bước này bạn có thể
- Trỏ tên miền về server bằng bản ghi DNS
- Cấu hình Nginx phục vụ file tĩnh và làm reverse proxy cho ứng dụng
- Cấp và tự gia hạn chứng chỉ HTTPS bằng Let's Encrypt
- Bật nén, cache file tĩnh và các header bảo mật cơ bản
Video hướng dẫn (mỗi video một chủ đề)
Tài liệu & khóa học
✍️ Bài tập thực hành
Triển khai ứng dụng đã đóng gói ở bước 7 lên server: chạy bằng Docker Compose phía sau Nginx, truy cập được qua tên miền riêng với HTTPS và tự chuyển hướng từ HTTP.
Bước 9: CI/CD với GitHub Actions
⏱ 1 - 2 tuầnTự động hóa kiểm thử và triển khai: mỗi lần merge, mã nguồn được build, test và đưa lên server mà không cần thao tác tay.
Sau bước này bạn có thể
- Giải thích CI, CD và các bước của một pipeline
- Viết workflow GitHub Actions chạy test và build image khi có pull request
- Tự động deploy lên server khi merge vào nhánh chính, giữ secret an toàn
- So sánh rolling, blue-green, canary và chuẩn bị sẵn cách rollback
Video hướng dẫn (mỗi video một chủ đề)
Tài liệu & khóa học
✍️ Bài tập thực hành
Thiết lập pipeline cho ứng dụng của bạn: pull request phải qua test mới được merge; merge vào nhánh chính thì tự build image, deploy lên server và quay về bản trước được bằng một thao tác.
Giai đoạn 4 · Cloud & vận hành
Bước 10: Cloud với AWS
⏱ 2 tuầnChuyển từ một server đơn lẻ sang hạ tầng cloud: mạng riêng, máy chủ, cơ sở dữ liệu được quản lý, lưu trữ, phân quyền và cách rà soát kiến trúc theo Well-Architected.
Sau bước này bạn có thể
- Dựng mạng VPC với subnet công khai, riêng tư và security group
- Chạy ứng dụng trên EC2, dùng RDS cho cơ sở dữ liệu và S3 cho file
- Phân quyền theo nguyên tắc quyền tối thiểu bằng IAM
- Đặt load balancer và auto scaling để chịu tải, chịu lỗi
- Rà soát thiết kế theo 6 trụ cột của AWS Well-Architected và ước tính chi phí
Video hướng dẫn (chọn một để theo)
Tài liệu & khóa học
✍️ Bài tập thực hành
Vẽ kiến trúc AWS cho ứng dụng của bạn ở mức vẫn chạy khi một máy chủ hỏng, ước tính chi phí hằng tháng, rồi dựng thử phần cốt lõi (VPC, EC2, RDS) và xóa tài nguyên sau khi xong.
Bước 11: Giám sát, sao lưu & xử lý sự cố
⏱ 1 tuầnHệ thống chạy thật cần được quan sát: thu thập số liệu và log, cảnh báo khi bất thường, sao lưu có kiểm tra khôi phục và quy trình xử lý sự cố.
Sau bước này bạn có thể
- Thu thập số liệu server và ứng dụng bằng Prometheus, xem trên Grafana
- Đặt cảnh báo cho các dấu hiệu quan trọng: lỗi tăng, phản hồi chậm, sắp đầy đĩa
- Sao lưu cơ sở dữ liệu tự động và diễn tập khôi phục
- Viết runbook xử lý sự cố và bản tổng kết sau sự cố
Video hướng dẫn (chọn một để theo)
Tài liệu & khóa học
✍️ Bài tập thực hành
Thêm giám sát cho hệ thống đã triển khai: bảng theo dõi CPU, bộ nhớ, tỷ lệ lỗi; cảnh báo qua email hoặc chat; lịch sao lưu cơ sở dữ liệu hằng ngày và một lần khôi phục thử từ bản sao lưu.
Dự án cuối lộ trình
Thiết kế và triển khai một hệ thống web hoàn chỉnh
Đóng vai Solution Architect cho một sản phẩm thật hoặc giả định: viết tài liệu kiến trúc, rồi tự triển khai và vận hành phiên bản đầu tiên của hệ thống.
Yêu cầu tối thiểu
- Tài liệu yêu cầu phi chức năng và ước lượng tải
- Sơ đồ C4 mức 1, 2 và ít nhất 3 ADR
- Ứng dụng chạy bằng Docker Compose, truy cập qua tên miền có HTTPS
- Pipeline CI/CD tự chạy test và deploy khi merge
- Có giám sát, cảnh báo và bản sao lưu đã thử khôi phục
- Bản đánh giá: hệ thống cần thay đổi gì khi tải tăng 10 lần
Cách học hiệu quả
- Bước ghi "chọn một để theo" thì chỉ cần theo một nguồn đến hết; bước ghi "mỗi video một chủ đề" thì xem lần lượt.
- Mỗi bước kết thúc bằng một sản phẩm cụ thể: tài liệu, sơ đồ hoặc hệ thống chạy được. Đừng bỏ qua bài tập thực hành.
- Dùng cùng một ứng dụng xuyên suốt lộ trình để các bài tập nối tiếp nhau thành dự án cuối.
- Khi thực hành trên cloud, đặt cảnh báo chi phí và xóa tài nguyên sau khi dùng.
- Đánh dấu bước đã học xong để theo dõi tiến độ; tiến độ được lưu trên trình duyệt này.
Câu hỏi thường gặp
SA là gì?
SA thường là viết tắt của Solution Architect (kiến trúc sư giải pháp): người chịu trách nhiệm thiết kế tổng thể của hệ thống để đáp ứng yêu cầu nghiệp vụ, hiệu năng, bảo mật và chi phí. Một số nơi dùng SA để chỉ System Architect; kiến thức nền trong lộ trình này dùng được cho cả hai.
Cần bao nhiêu kinh nghiệm mới học được lộ trình này?
Bạn chỉ cần đã tự làm được một ứng dụng web có cơ sở dữ liệu. Lộ trình cho bạn nền tảng và thói quen tư duy; để đảm nhận vai trò Solution Architect, bạn vẫn cần tích lũy thêm kinh nghiệm qua các dự án thực tế.
Tôi chỉ muốn học phần deploy thì bắt đầu từ đâu?
Bắt đầu từ bước 6. Các bước 6 đến 9 đủ để bạn tự đưa một ứng dụng lên server có HTTPS và CI/CD; bước 10 và 11 dành cho khi bạn cần cloud và vận hành lâu dài.
Thực hành có tốn tiền không?
Có một ít. Bạn cần một VPS hoặc tài khoản cloud; nhiều nhà cung cấp có gói miễn phí hoặc dùng thử cho người mới. Hãy đặt cảnh báo chi phí và xóa tài nguyên sau khi thực hành để tránh phát sinh.
Có cần học Kubernetes không?
Chưa cần ở lộ trình này. Docker Compose trên một vài server đáp ứng được nhiều sản phẩm nhỏ và vừa. Khi hệ thống có nhiều service và cần tự động co giãn, Kubernetes là bước tiếp theo hợp lý.
Video thuộc bản quyền của các kênh YouTube tương ứng, mở trên YouTube khi bấm vào. Tài liệu và khóa học thuộc về đơn vị phát hành tương ứng, mở ở trang gốc khi bấm vào.













