Ebook Master Software Architecture [Update 30/10/2024] [PDF, EPUB] [9551E]
Bạn đã chán những cuốn sách về architecture đọc như các bài báo khoa học chưa? Hướng dẫn thực tế này sẽ chỉ cho bạn cách thiết kế các hệ thống mạnh mẽ hoạt động trong thế giới thực. Tôi đã học được những bài học này theo cách khó khăn để bạn không phải học. Mọi thứ bạn cần biết về software architecture, từ các nguyên tắc cốt lõi đến các pattern nâng cao, được giải thích dễ hiểu và các ví dụ thực tế.
Về cuốn sách:
Bạn có cảm thấy lạc lõng trong thế giới software architecture không? Cuốn sách software architecture này là dành cho bạn!
Nhiều năm trước, tôi cảm thấy lạc lõng khi bắt đầu trong software architecture. Có rất nhiều chủ đề và vấn đề, và tôi là một novice architect. Tôi không biết bắt đầu xây dựng ứng dụng từ đâu, cần chú ý đến những lĩnh vực chính nào hoặc làm thế nào để xây dựng các hệ thống có thể phát triển trong nhiều năm.
Tôi đã dành vô số giờ và ngày để học cách nhận ra lĩnh vực này, và điều đó không hề dễ dàng, kiến thức nằm rải rác trên Internet, sách vở và hướng dẫn. Cuối cùng, những người cố vấn đã giúp tôi đi đúng hướng.
Đó là lý do tại sao tôi quyết định viết cuốn sách về software architecture này. Tôi muốn giúp bạn điều hướng thế giới phức tạp này với những quyết định khó khăn, sự đánh đổi và các kỹ thuật sẽ hỗ trợ bạn trong hành trình tuyệt vời này. Tôi ước bạn không phải mắc phải những sai lầm giống tôi và từ bỏ cuộc sống riêng tư của mình bằng cách dành nhiều giờ để tìm kiếm thông tin phù hợp. Mỗi bước mô tả thực tế các khía cạnh quan trọng nhất của software architecture.
Nội dung:
Bước 1: Hiểu về Software Architecture: Trong bước này, bạn sẽ tìm hiểu những điều cơ bản về software architecture, bao gồm các lĩnh vực chính như business analysis, solution architecture, và infrastructure. Bạn sẽ hiểu vai trò của software architect, ảnh hưởng của chúng đến các quyết định về kiến trúc và tác động của các driver như các yêu cầu chức năng, hạn chế kỹ thuật và thuộc tính chất lượng trong khi khám phá cách chủ nghĩa thực dụng và chủ nghĩa toàn diện định hình các quyết định này.
Bước 2: Khám phá Business Domain của bạn: Tiếp theo, chúng ta sẽ khám phá khía cạnh quan trọng của system design: business domain. Thông qua các workshop về Event Storming và Domain Storytelling, bạn sẽ học cách phân tích quy trình, khám phá các subdomain, xác định các bối cảnh bị giới hạn và tạo một context map (strategic Domain-Driven Design).
Bước 3: Nhận biết Environment Xung quanh Bạn: Bước ba tập trung vào việc hiểu môi trường làm việc của bạn, bao gồm các decision-making process, project goals, budget limitation và các kỳ vọng khác nhau của các stakeholder và development team. Bạn sẽ đánh giá các kỹ năng của team với competency matrix, plan infrastructure cho các team setup khác nhau và học cách tính toán các số liệu quan trọng như active users, request numbers, và SLA-defined availability, sau đó áp dụng kiến thức này vào một trường hợp thực tế.
Bước 4: Chọn Deployment Strategy: Trong bước này, chúng ta sẽ khám phá các khía cạnh kỹ thuật của software architecture, tập trung vào các chiến lược single và multiple deployment unit và các representative phổ biến nhất của chúng: modular monoliths và microservices. Bạn sẽ tìm hiểu về communication methods, database design, deploying changes, scaling applications, và các key pattern như outbox, inbox, và dead letter queue.
Bước 5: Define Release Strategy: Bước năm tập trung vào việc cung cấp các phiên bản ứng dụng mới bằng các chiến lược như basic, blue-green, canary, và rolling deployment và tận dụng continuous delivery & deployment. Bạn sẽ áp dụng các hoạt động kỹ thuật như swarming, pair và mob programming, feature flags, trunk-based development và short-living branches. Bạn cũng sẽ học cách tổ chức các post-mortem meeting để phân tích các vấn đề sản xuất trong quá khứ và ngăn ngừa các vấn đề trong tương lai. Tôi cũng sẽ chỉ cho bạn cách xử lý các thay đổi trong cơ sở dữ liệu trong trường hợp có nhiều phiên bản ứng dụng khác nhau.
Bước 6: Tập trung vào Testing: Bước này bao gồm các cách khác nhau để thử nghiệm phần mềm của bạn, tập trung vào các khái niệm chính theo quan điểm của software architect. Bạn sẽ tìm hiểu về pyramid of tests, inverted pyramid, diamond, thời điểm sử dụng từng loại, penetration, performance, va load testing để đảm bảo độ tin cậy của phần mềm.
Bước 7: Phát triển Kiến trúc của bạn: Bước này nhấn mạnh rằng kiến trúc phát triển theo thời gian, tập trung vào bốn bước chính: simplicity, maintainability, growth, và complexity. Bạn sẽ tìm hiểu các khái niệm hữu ích như CQRS, database replicas & sharding, và tactical Domain-Driven Design để đảm bảo tính mạnh mẽ của ứng dụng và hỗ trợ ra quyết định sáng suốt khi ứng dụng phát triển cùng doanh nghiệp.
Bước 8: Đừng quên bảo mật: Ở bước cuối cùng, bạn sẽ tìm hiểu về các lỗ hổng bảo mật phổ biến trong các ứng dụng mới và cũ, chẳng hạn như IDOR, supply chain attacks, SQL injection, XSS, và DDoS. Bạn cũng sẽ khám phá các chiến lược phòng thủ, quan niệm sai lầm dẫn đến các lỗ hổng và sự khác biệt giữa encoding, encryption, và hashing để lựa chọn cơ chế phù hợp với nhu cầu của mình.
Phần bổ sung 1: Các Engineering Practice khác: Phần này đề cập đến các engineering practice quan trọng không phù hợp với nội dung chính của cuốn sách. Bạn sẽ tìm hiểu về metrics, developer carousels, cách sử dụng hiệu quả vertical slices trong product design và quản lý technical debt.
Phần bổ sung 2: Bài tập về kiến trúc: Để thành thạo software architecture, bạn cần đưa lý thuyết vào thực hành. Tôi đã chuẩn bị một số bài tập tình huống thực tế để thử thách bạn, xác nhận sự hiểu biết của bạn và làm nổi bật các lĩnh vực cần nghiên cứu thêm, nâng cao hành trình học tập của bạn.
LƯU Ý: Pass mở file pdf là mật khẩu giải nén chung của tài liệu !