Skip to content

img 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 img 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 img 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 img 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 img 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 img 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 img 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 img 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

⬆ back to top


Last update: 2024-04-03