Software Architecture Patterns for Serverless Systems: Architecting for innovation with events, autonomous services, and micro frontends
J**S
Awesome book on event-based architecture patterns
I read this book once. Learned a ton. Re-read it again and realized all the things I missed the first go-around. I miss having physical technology books around. This one was definitely worth buying a physical copy of. I particularly enjoyed learning patterns around change data capture mechanisms and how to leverage them in event-based architectures.
S**R
Great book for Enterprise Architects using Lambda, Microservices, and BFF Pattern!
In his book, Software Architecture Patterns for Serverless Systems, John Gilbert provides excellent patterns which designers can apply across Frontends, Backends, Infrastructure, as well as within inter-team communications. For Chapter 1, there is an overview of Software Lifecycle Development (SDLC) and how business value can be delivered through software. Gilbert describes how, in fluid environments of changing requirements, the cloud and lean methodologies allow for better reaction times. In addition, Infrastructure and application architectures, when prescribed for innovation, can enable change in design and delivery more efficiently. This can be evidenced with Infrastructure-as-code (IAC), smaller deployment releases, and continuous QA testing efforts. Chapter 2 describes how software components can be disciplined into defined boundaries, allowing modules to be more focused in scope and function. This principle, combined with extensibility and subtype replaceability, allows systems to evolve more easily over time. The ultimate goal, as Gilbert explains, is to allow independent changes to modules without breaking the application. Chapter 3 discusses patterns specific to the Frontend which can help teams to make modular, anonymous changes for evolving business needs. Central to these patterns is the concept of decomposing frontend components into "micro-apps", each with distinct functions, making deployments easier with more independent modules. Gilbert describes products which can support this concept including Jamstack and others. Chapter 4 delves into the world of asynchronous, inter-service communication patterns among loosely coupled systems and how to use such patterns to ensure data consistency across components. Gilbert describes how each component can act as an "event hub" which polices upstream and downstream consumers and producers. Complimentary to the event hub are the event lake and event sourcing patterns, which help to support the Command, Publish, Consume, Query (CPCQ) flow. Code snippets are intertwined with each pattern to provide a technical view of these patterns as well. To combat the problem of growing data, Gilbert explains, in Chapter 5, how the automous service functions can fit into one of the Data life cycle phases. By identifying the appropriate phase, services can help to address duplicity and demand for data across the entire system. The chapter helps to address caching issues as well. He also describes different approaches for sharding data to support more concurrent requests. Gilbert builds up to an entire chapter, Chapter 6, on Backend for Frontend (BFF) pattern, integral to creating Frontend boundary services for user activity. He describes the who is responsible for implementing the BFF pattern and how this pattern assists in removing inter-service dependencies by acting independent from other resources. Using CORS, the Frontend can access the Backend via the API Gateway and subsequent listener functions. On the topic of security, Gilbert outlines several steps to be taken in making BFF more secure against DDoS and Authorization attacks, to name a few. Taking to the macro-level, Gilbert explains, in Chapter 7, an anti-corruption layer for protecting egress and ingress traffic between systems to ensure protection against third-parties and external systems. Chapter 8 explores control services for mediating between boundary services. There is a background explanation of the differences between orchestration and choreography, assisting the reader to better understand how control services work in this space. In order to roll all of these patterns together, Gilbert describes changing testing practices from a one-time effort into a continuous process of discovery in Chapter 9. This process seeks to discover the right solution through feedback loops, KPIs, and MTTR, as opposed to testing that the right solution is build. In culmination, Chapter 10 describes how to begin the entire process of micro-app frontends, autonomous services, and other patterns introduced throughout the book. If you are an application architect, AWS designer, or need patterns to follow for Frontends or Backends, this book is an excellent resource which also includes code snippets to show possible implementation ideas to follow.
M**S
Light read collection
It is a very light read collection of patterns with "newer" labels to existing patterns. Does not go in depth on any topics.
D**Y
Take a look if you want to become comfortable with event driven architectures inn the cloud
The objective of this book is to take the reader on a journey that culminates in the ability to architect event-driven serverless systems. The book delivers 10 chapters of content that establishes foundations and build on them. This approach, along with solution templates provided via a GitHub repo, ensure that this book achieves the objective. To gain the most from the book, the reader should work through the examples to get hands-on with the patterns introduced and revisit the content to reinforce the patterns learned. Although the templates provided target AWS, the equivalent Azure services are discussed throughout the book and, with some effort, the reader can create the equivalent architecture using Azure.The book is broken into 3 sections.1. Establishing the architectural visionThe first 2 chapters focus on defining and solving the problems that more traditional architectures suffer when moved to the cloud. Chapter 1 focuses on how to conceptualize an alternative high-level architectural approach more suitable for working in dynamic environments, Chapter 2 continues the thread on how new ways of thinking are required to support applications that not only run at scale, but are also built and maintained by large autonomous teams.The content focusing on SOLID principles I found to be especially useful.2. Dissecting the Software Architecture patternsChapters 3 through 8 focus on specific aspects of an architecture that focuses on events, autonomous services and micro front-ends. Each chapter discusses the problem at hand, approaches to solving it, the associated patterns and one or more AWS templates that implement solutions. I found it useful to revisit each chapter as necessary to reinforce the separation of concerns that the patterns are establishing:* Chapter 3 discusses the presentation tier and how utilizing micro frontends can assist in decoupling monolithic frontend apps.* Chapters 4 and 5 discuss facts and eventual consistency, and how to use the cloud as database by utilizing the Command Query Responsibility Segregation (CQRS) and Change Data Capture (CDC) patterns to fortify the boundaries of autonomous services.* Chapters 6 and 7 focus on boundary service patterns specifically such as the Backend for Frontend (BFF) pattern to support end-user activities and micro apps, and how to bridge intersystem gaps with the External Service Gateway pattern.* Chapter 8 focuses on inter-service collaborations using the Control Service pattern.3. Putting everything in motionThis section brings things together so that teams can start experimenting.* Chapter 9 turns to the challenge of decoupling autonomous teams so that each team can deploy and deliver with zero downtime.* Chapter 10 closes things out with approaches on how to get started.By the end of this book, I felt like I had a much better grasp of the pattern available for building this style of enterprise architecture.
A**M
Great patterns book for serverless!
I expect to not find anything new in books like this, but I loved it! This book does a great job of reviewing concepts I already know, while introducing additional architecture patterns that expand on what I already have done in the past.This book really helps you create a productive operations model and increases your efficiency.
A**A
One of the best books about architecting in cloud
This book covers every aspect of event-driven architecture giving a lot of interesting ideas and without leaving questions unanswered. Definitely one of the best books I read so far about the topic.I suggest 100% especially if you are using AWS and the cloud in general
Trustpilot
3 weeks ago
1 week ago