This is my learning note from the book Fundamentals of Software Architecture: An Engineering Approach written by Mark Richards and Neal Ford. All the contents are mostly distilled and copied from the book. I recommend you to buy this book to support the authors.
Tất cả các phần:
- Part 1: Expectations of an Architect
- Part 2: Laws of Software Architecture
- Part 3: Architectural Thinking
- Part 4: Modularity
- Part 5: Architecture Characteristics
- Part 6: Architecture Styles
- Part 7: Choosing the Appropriate
- Part 8: Architecture Decision Anti-Patterns
- Part 9: Architecturally Significant
- Part 13: Part 13: Developing a career path
Có rất nhiều sách nói về Software Architecture hiện nay, tuy nhiên đa số sách đều đã out-up-date, hàn lâm, không khái quát hết được các khía cạnh quan trọng trong Software Architecture dưới góc nhìn thực tế. Được viết bởi Mark Richards và Neal Ford, xuất bản đầu năm 2020, Fundamentals of Software Architecture An Engineering Approach theo mình đánh giá là khá hay, bài bản và thực tế, phù hợp với những bạn nào đang có ý định đi theo con đường Software Architect hoặc Technical Lead. Mình sẽ highlight 1 số điểm nổi bật trong sách. Khuyến khích mọi người tìm mua hoặc download bản full trên internet để đọc ngấm hơn.
Expectations of an Architect – Vai trò của một Architect
There are eight core expectations placed on a software architect, irrespective of any given role, title, or job description:
Make architecture decisions
An architect is expected to define the architecture decisions and design principles used to guide technology decisions within the team, the department, or across the enterprise.
Continually analyze the architecture
An architect is expected to continually analyze the architecture and current technology environment and then recommend solutions for improvement.
Keep current with latest trends
An architect is expected to keep current with the latest technology and industry trends.
Ensure compliance with decisions
An architect is expected to ensure compliance with architecture decisions and design principles.
Diverse exposure and experience
An architect is expected to have exposure to multiple and diverse technologies, frameworks, platforms, and environments.
Have business domain knowledge
An architect is expected to have a certain level of business domain expertise.
Possess interpersonal skills
An architect is expected to possess exceptional interpersonal skills, including teamwork, facilitation, and leadership.
Understand and navigate politics
The main point is that almost every decision an architect makes will be challenged. An architect is expected to understand the political climate of the enterprise and be able to navigate the politics.
Như vậy để trở thành 1 Software Architect (SA) giỏi thì không những phải giỏi kỹ thuật là đủ, mà phải hiểu rất rộng (sẽ có bài biết nói về cách mở rộng hiểu biết ở phần sau), có khả năng ra quyết định, các kỹ năng mềm về giao tiếp, thuyết phục, chính trị, bám sát với thực tế nhóm phát triển và còn phải có hiểu biết về domain, lĩnh vực nghiệp vụ mà mình đang thiết kế kiến trúc cho nó nữa. Hãy balance tất cả 🙂
For example, earlier books about software architecture don’t consider the impact of DevOps because it didn’t exist when these books were written.
When studying architecture, readers must keep in mind that, like much art, it can only be understood in context. Many of the decisions architects made were based on realities of the environment they found themselves in. For example, one of the major goals of late 20th-century architecture included making the most efficient use of shared resources, because all the infrastructure at the time was expensive and commercial: operating systems, application servers, database servers, and so on. Imagine strolling into a 2002 data center and telling the head of operations “Hey, I have a great idea for a revolutionary style of architecture, where each service runs on its own isolated machinery, with its own dedicated database (describing what we now know as microservices). So, that means I’ll need 50 licenses for Windows, another 30 application server licenses, and at least 50 database server licenses.” In 2002, trying to build an architecture like microservices would be inconceivably expensive. Yet, with the advent of open source during the intervening years, coupled with updated engineering practices via the DevOps revolution, we can reasonably build an architecture as described. Readers should keep in mind that all architectures are a product of their context.
P/s: Một series khác về architecture mà mình đã viết trước đó: Software Architecture