Building Modern Business Applications: Reactive Cloud Architecture for Java, Spring, and PostgreSQL
- Length: 206 pages
- Edition: 1
- Language: English
- Publisher: Apress
- Publication Date: 2022-12-28
- ISBN-10: 1484289919
- ISBN-13: 9781484289914
- Sales Rank: #1084063 (See Top 100 Books)
Discover a new way of thinking about business applications in light of the massive industry shift toward cloud computing and reactive programming technologies. This book synthesizes technologies and techniques such as event sourcing, command query responsibility segregation (CQRS), property-based testing, and GraphQL into a cohesive guide for modern business applications that benefit every developer.
The book begins with a look at the fundamentals of modern business applications. These fundamentals include business rules and the managing of data over time. The benefits of reactive techniques are explained, including how they are fundamentally aligned with what application developers strive to achieve in their work.
Author Peter Royal equips you with sound guidance to follow as you evolve your existing systems, as well as examples of how to build those systems using modern techniques in Spring, Java, and PostgreSQL.
What You Will Learn
- Architect business applications for cloud-based environments
- Design sustainable business applications
- Integrate GraphQL best practices into business applications
- Use property-based testing to exhaustively test possible system states
- Think about business applications in terms of message flows
- Relate the benefits of reactive systems to business goals
- Model time appropriately for business requirements
Who This Book Is For
Practicing software developers who are building business applications, developers who are being asked to deploy into cloud environments that are more volatile than statically provisioned data centers, developers who want to increase the reliability of their systems and are struggling to find the right paradigms and architectures to achieve their goals, developers who see and use capabilities in software in other areas of their lives and want to bring those capabilities into their own work, and developers with experience designing other types of software who want to learn how to design business applications
Table of Contents About the Author About the Technical Reviewer Acknowledgments Introduction Chapter 1: What Is a Business Application? Business Software Domain Specific How It Is Used Measuring Importance “Modern” Summary Chapter 2: The Status Quo (and How It Came to Be) Business Application Architectures The Status Quo Green Screen Rich Client Web Applications The Rise of Consumer Applications Concurrent Practices Agile Test-Driven Development Continuous Integration and Delivery Observability Summary Chapter 3: What Is a Reactive System? What Is Reactive? Reactive Manifesto Responsive Resilient Elastic Message Driven Composing a Reactive System Summary Chapter 4: Why Build Business Applications As Reactive Systems? Business Expectations Developer Expectations Property Alignment Responsive Resilient Elastic Message Driven Summary Chapter 5: What Is a Business Rule? Thinking About Business Rules Categorizations Data at Rest Side Effects Derivable Data Summary Chapter 6: Managing Time Answering “What Happened?” Tracking Changes Why Did That Happen? Events Commands Understanding Time Serialization of Time Eventual Consistency Bitemporality Business Rule Changes Summary Chapter 7: Constraints and Principles Constraints From REST to a Graph Falcor GraphQL Why GraphQL Being Real-Time Principles Never Forget Message Driven Read/Write Separation Partial Availability Design Flexibility Modularity Testability Amenability to Change Summary Chapter 8: High-Level Data Flow Event Sourcing and CQRS Thinking in GraphQL Schemas Scalars and Enums Objects Lists Input Objects Interfaces and Unions Queries and Subscriptions Mutations Combining GraphQL + ES + CQRS Summary Chapter 9: Command Processor What It Is, and Is Not Requirements Composing the Core Loop Handling Failures Infrastructure Application Enforcing Business Rules How to Test Testing the Command Processor Testing Your Code Summary Chapter 10: Command Generator Interaction with GraphQL From Input Arguments into a Command Appending to the Command Log Returning the Mutation Result Commands and Other Required Data Handling Failures Optimistic Locking Timeouts Testing the Command Generator Command Submission Command Creation Summary Chapter 11: Event Materializer Defining the View Model Event Materializer Behavior Transactions Consistency Multiple Sources Evolving the View Model Communicating Changes to Others GraphQL Subscriptions Other Side Effects Managing Failure Testing Summary Chapter 12: Testing, Monitoring, and Observability Key Components Command Processor Command Generator Event Materializer Composed Data Flow Testing the Composed System Introducing Property-Based Testing Using Property-Based Testing Using Example Tests Observability Monitoring Production Systems Practice Using Tools Summary Chapter 13: Required Technologies Design Review Constraints and Principles Recap GraphQL Real-Time Updates Never Forget Message Driven Read/Write Separation Partial Availability Design Flexibility Modularity Testability Amenability to Change Required Technologies Append-Only Log Pub/Sub Messaging Distributed Locking Database Summary Chapter 14: Building with Modern Spring, Java, and PostgreSQL Required Technologies via PostgreSQL Advisory Locks LISTEN and NOTIFY NOTIFY LISTEN Schemas Append-Only Log Java and the JVM GraphQL-Java Spring Boot Project Reactor R2DBC jqwik Putting It All Together Summary Chapter 15: Expansion Points and Beyond Design Flexibility and Amenability to Change Multiple Command Processors Command Processor State Caching Parallel Event Materialization Command and Event Logs As GraphQL Subscriptions Using GraphQL for Inter-Process Communication Federated GraphQL Outsourcing Distributed System Problems Bitemporal Materialized Views Conclusion Index
Donate to keep this site alive
How to download source code?
1. Go to: https://github.com/Apress
2. In the Find a repository… box, search the book title: Building Modern Business Applications: Reactive Cloud Architecture for Java, Spring, and PostgreSQL
, sometime you may not get the results, please search the main title.
3. Click the book title in the search results.
3. Click Code to download.
1. Disable the AdBlock plugin. Otherwise, you may not get any links.
2. Solve the CAPTCHA.
3. Click download link.
4. Lead to download server to download.