01 logo

Books for Great Software Architects — Application Path

This story will draw the reading path for Great Application Architects

By Haitham RaikPublished 2 years ago Updated 2 years ago 4 min read
1
Application Path

In the Overview, we have seen the high-level roadmap and in Part 1, we went through the Fundamentals Path that covered the first steps into the software architecture which is also considered as a pre-requisite for the specialized parts, 2, 3 and 4.

Reading Roadmap

By completing Part 1, you will be ready to get specialized in one of the architectural domains. In this part, we will draw the reading path for Great Application Architects.

Application Architecture Path

Application Architecture defines the software structure by describing its elements and the relationships between these elements. To learn more about the applications elements (Module, Subsystem and Component), please read my article “Main Concepts in Software Architecture

In this path, we will focus mainly on the enterprise application architecture and distributed application architecture.

Application Architecture Path

Distributed application is a special type of the enterprise application where its elements and parts are distributed into multiple hosts (physical servers, virtual machines, or containers).

Enterprise Application Architecture Path

Enterprise Application is an Application that supports concurrent access through APIs and/or UI screens and requires heavy involvement for data persistence. Enterprise Application is also known as Information System.

In this path, I found the following two books are the most valuable in this domain:

Enterprise Application Architecture Path

Book 1: Patterns of Enterprise Application Architecture, by Martin Fowler

This book provides more than 50 patterns addressing multiple issues and problems related to data mapping, domain logic, web presentation, session management and concurrency.

I found the ORM-related patterns (more than 15 patterns) useless as they are already implemented as out of the box capabilities by nowadays ORM frameworks. My recommendation is to read one of the existing books specialized in the ORM rather than reading them here. If you are a Java developer, my recommendation is to go with: Java Persistence with Hibernate.

The most interesting patterns are the one related to the concurrency patterns and base patterns

Book 2: Implementing Domain-Driven Design, by Vaughn

This is one of my favorite books as it capitalizes on the principles and patterns discussed in the books mentioned in this part and the previous part (especially the books; Applying UML and Patterns, Head First Design Patterns, Domain Driven Design, and Patterns of Enterprise Application Architecture), and provides a consolidated, yet practical, implementation for those principles and patterns.

Note: it is very important to read DDD by Eric first (the blue DDD) before reading this book, otherwise you will be fully lost and confused.

Distributed Application Architecture Path

Here, we will be building on the previous path to learn about the distributed application architecture.

As of today, the most common and most important distributed architectural styles are SOA and Microservices and accordingly the distributed application path is also built to support these two styles:

Distributed Application Architecture Path

Although the path is segregated into two parallel paths one for SOA and another for Microservices, I found it useful to read SOA path first before going into Microservices where a lot of Microservices principles and patterns are inherited from SOA and it will give a great idea about the differences and similarities between them.

If you are interested in Microservices and not welling to go through SOA, I would recommend for you to read my article “SOA and Microservices Full Comparison”.

Book 3: SOA Principles of Service Design, by Erl

This is one of the most important books in the SOA world. It lists and explains the different principles that when followed, you will get the real value from it.

Book 4: SOA Design Patterns, by Erl

This book provides about 85 design patterns (basic and compound) grouped mainly into inventory and inventory layering patterns, service design, composition and implementation patterns, service contract patterns, governance and security patterns.

I found this book interesting as most of the patterns covered here are either supporting API designs patterns or Microservices patterns (you will see a lot of Microservices patterns are actually inherited from SOA patterns).

Don’t be confused with another book called SOA Patterns by manning, the later is weak and shallow.

Book 5: Building Microservices, by Newman

This is one of my favorite books. In this book, the author tries to highlight the main challenges you are going to face while transforming to Microservices and he also tries to address these challenges by providing the right techniques and suggesting different frameworks, tools and libraries to support you through the transformation process.

Note: It will be highly valuable if you can empower what you have got from this book with an implementation hands-on. If you are a java developer, I would recommend for you “Spring Microservices in Action”

Book 6: Microservices Patterns, by Richardson

In this book, you will formalize what you have learned so far into a set of patterns that links the challenges with solutions and gives them a name that is supposed to streamline your solutioning skills and build strong architectural vocabulary.

Book 7: Building Event-Driven Microservices, by Adam

Microservices prefers choreography over orchestration for higher isolation between the services. This book builds on the previous books to implement choreography-based microservices using event-based platforms.

Bonus Reading

What have been introduced so far is enough for you to have all the skills needed to be a great application architect. But if you feel like you need to read more, I would recommend for you a book called “Building Evolutionary Architectures, by Neal Ford”.

Summary

In this part, we have built on Part 1 and provided a specialized reading path for application architecture.

Don’t forget to follow me to get notifications for my new articles.

tech newsappsbook reviewshistoryhow tolistproduct reviewthought leaders
1

About the Creator

Haitham Raik

I have 20 years of experience in Software development and Software Architecture. In this page, I will share with you topics based on my expertise related to software development and architecture

Reader insights

Be the first to share your insights about this piece.

How does it work?

Add your insights

Comments (1)

Sign in to comment
  • Nitin Khaitanabout a year ago

    Kudos for the excellent article. Below is a good read about the design pattern for the database layer: https://medium.com/towards-polyglot-architecture/design-patterns-for-the-database-layer-7b741b126036

Find us on social media

Miscellaneous links

  • Explore
  • Contact
  • Privacy Policy
  • Terms of Use
  • Support

© 2024 Creatd, Inc. All Rights Reserved.