Software Architecture Learning Path (7 )¶
To build effective services and applications a set of rules have to define what are the goals of the system, what it can or cannot do, and how things are structured to accomplish all that. Software needs to be designed and structured to achieve reasonable maintainability, aceptable performance and good extensibility. Explore beyond the code and discover how systems work, how they were designed to scale and adapt in this huge and ever changing world.
Order | Cover | Info | Description |
---|---|---|---|
1 | Design Patterns for Cloud Native Applications: Patterns in Practice Using APIs, Data, Events and Streams Kasun Indrasiri, Sriskandarajah Suhothayan Published in 2021 311 pages |
Despite of being oriented mainly to developers, this book could help you to understand how cloud native applications are built and the way they interact. Some predominating patterns for communication, composition, data and api management or scalability are explained in these pages, it could be really useful to know them if you are developing or designing systems based on the cloud. | |
2 | Foundations of Scalable Systems: Designing Distributed Architectures Ian Gorton Published in 2022 320 pages |
A fair amount of information about distributed systems and scalability is contained in this book: databases, event processing, caching, asynchronous messaging… When designing systems it’s necessary to think about how incresing load will affect aspects like performance and reliability, that’s the reason why scalability is a big subject and one of the most important properties of a system since the cloud flourished and extended. | |
2 | Fundamentals of Software Architecture: An Engineering Approach Mark Richards, Neal Ford Published in 2020 419 pages |
Beyond code there is an amazing set of things to learn in the software world: new concepts, patterns, architectures and ways of doing things to design and build systems in a modern era where adaptability, reliability and scalability are essential for bussiness success. Adding to all that you will learn skills like risk assesment, decision making based on trade-offs, or how to manage and assemble teams. | |
3 | Software Architecture: The Hard Parts Neal Ford, Mark Richards, Pramod Sadalage, Zhamak Dehghani Published in 2021 459 pages |
Keep diving in the software architecture topic with this book. Some of the advanced topics treated are: decompossition patterns, service granularity, data management or distributed transactions. When facing problems at scale that knowledge is not only useful but necessary to success in the process of designing systems or adapting existing ones to new requirements. | |
3 | Learning Domain-Driven Design: Aligning Software Architecture and Business Strategy Vladik Khononov Published in 2021 340 pages |
Learn to apply bussiness concepts to model software, decouple components and set boundaries to define responsibilities and stable interfaces. With Domain-Driven Design techniques software get closer to bussiness while improving the whole structure not only of projects but also the organizations that adopt this architecture. | |
3 | Clean Architecture: A Craftsman’s Guide to Software Structure and Design Robert C. Martin Published in 2017 432 pages |
One of the most famous architectures in software is the Clean Architecture, applicable to different programming paradigms and clearly defined with design principles. Learn how to wield it in your projects to provide them with the necessary properties to create extensible, flexible, manageable and scalable software. | |
4 | Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems Martin Kleppmann Published in 2017 616 pages |
Learn the fundamental properties of data driven applications and how to treat data in terms of storage, replication, indexing, querying, processing and consistency. A new edition of this jewel is in order because the publication was some years ago, but don’t be fooled, the content is still valid so go ahead and dive in. |
The following paths are opened to you now, choose wisely:
- CI/CD : Automation is key to improve quality and shorten software releases. Read all about continuous integration and delivery principles, master the tools and learn the bases that will make you be more effective and efficient.
- Microservices : Study the pinnacle of distributed systems architectures, learn its tenets, and foremost, when and how to implement it.
- Event Driven Architecture (EDA) : Asynchronous communication between services is possible using events. There is a lot to learn here, the main challenge is changing the way you think about communication patterns.
Want to change the subject? Here are some suggestions about other paths you can explore:
-
System Design : Acquire the skill needed to design and build systems, no matter if simple or complex. Learn how to identify the elements needed to create systems, to resolve scalability problems, detect possible points of failure, when to use an API, where to place a cache, when to use a NoSql database, and more.
-
Golang : A modern general purpose programming language born to make easier developing things like APIs, command line applications, cloud native applications, and concurrency patterns.
learn about these related concepts!
#extensibility #scalability #clean-code #domain-driven-design #heaxagonal-architecture