Coding an Architecture Style
Coding an Architecture Style
A practical guide to learn Software Architecture by coding in Java
About the Book
If you have had the bad experience of having to maintain a complex "big ball of mud" enterprise application, with pressure from the business to go to production with new features under an aggressive schedule, you, better than anyone, know how important is to have a solid architecture with clear defined rules where we can make modifications, having an understanding where every change will impact.
However, it is not enough to understand how to create solid architectures by looking at beautiful architectural diagrams. Or by reading long explanations about the benefits of Microservices or Modularity. Understanding how to create solid structures requires opening an IDE and starting coding. We have to learn what syntactical constructions, other than classes, functions and procedures, our favourite programming language offers to create large-scale applications and just there we will be able to craft different software structures and start recognizing their benefits and drawbacks.
Throughout this book we will iterate an application in order to show how to code different architecture styles. In each iteration we study and implement an architecture style, going through layered architecture, hexagonal (or ports and adapters), modular and microservices. All this is supported by solid architecture concepts, simple designs and good practices. We use Java 11 to implement all the mentioned styles. In particular, to implement the modular architecture style we use the module system incorporated in Java since version 9. We also show different options to verify the architecture rules imposed by each style. All sources are available for the reader.
Although the implementation is done in the Java language, it is possible to apply the same concepts in languages such as PHP, Ruby, Python or .NET.
We will also review the different architectural views, we discuss properties of monolith vs distributed architectures to finish with a pragmatic study of availability and scalability quality attributes.
Bundles that include this book
Table of Contents
-
- Feedback
-
I Introduction
-
1 Introduction
- Another Book about Software Architecture?
- What Will I Learn?
- Who Is This Book For?
-
2 Software Architecture: Fundamentals
- What is Software Architecture?
-
Visualizing Software Architecture
- 4+1 View Model
- Structures and Views (SEI)
- UML Diagrams
- C4 Model
- Conclusion
- Software Architecture Styles
- Design vs Architecture
-
1 Introduction
-
II Fundamentals and Implementation
-
3 Modules, Layers and their Architecture Styles
-
Namespaces, Packages, Layers and Modules
- Logical vs Physical Separation
- Java Module System
-
Horizontal vs Vertical Partitions
- Why Do We Split an Application?
- Modules vs Layers
-
Layered Architecture
- Definitions and Style
- Implementation
-
Hexagonal Architecture
- Definitions and Style
- Implementation
-
Inverted Layered Architecture
- Style and Implementation
-
Modular Architecture
- Definitions and Style
- Implementation
-
Namespaces, Packages, Layers and Modules
-
4 Monolithic and Distributed Architecture
-
Monolithic Architectures
- Definitions
- Modular Monolith
-
Distributed Architectures
- Reasons to Distribute
- Partial Failures
- Transactions
- Distributed Monolith
- Microservices
- Modular Architecture vs Microservices
-
Monolithic Architectures
-
3 Modules, Layers and their Architecture Styles
-
III Quality Attributes
-
5 Availability
- Introduction
- Calculating the Availability
- Other Issues Affecting Availability
- Availability in Microservices
-
6 Scalability
- Scaling Web Applications
-
Scaling Databases
- CAP and PACELC Theorems
- Scaling Reads
- Sharding: Scaling Writes
-
5 Availability
- Notes
The Leanpub 60 Day 100% Happiness Guarantee
Within 60 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.
Now, this is technically risky for us, since you'll have the book or course files either way. But we're so confident in our products and services, and in our authors and readers, that we're happy to offer a full money back guarantee for everything we sell.
You can only find out how good something is by trying it, and because of our 100% money back guarantee there's literally no risk to do so!
So, there's no reason not to click the Add to Cart button, is there?
See full terms...
Earn $8 on a $10 Purchase, and $16 on a $20 Purchase
We pay 80% royalties on purchases of $7.99 or more, and 80% royalties minus a 50 cent flat fee on purchases between $0.99 and $7.98. You earn $8 on a $10 sale, and $16 on a $20 sale. So, if we sell 5000 non-refunded copies of your book for $20, you'll earn $80,000.
(Yes, some authors have already earned much more than that on Leanpub.)
In fact, authors have earnedover $14 millionwriting, publishing and selling on Leanpub.
Learn more about writing on Leanpub
Free Updates. DRM Free.
If you buy a Leanpub book, you get free updates for as long as the author updates the book! Many authors use Leanpub to publish their books in-progress, while they are writing them. All readers get free updates, regardless of when they bought the book or how much they paid (including free).
Most Leanpub books are available in PDF (for computers) and EPUB (for phones, tablets and Kindle). The formats that a book includes are shown at the top right corner of this page.
Finally, Leanpub books don't have any DRM copy-protection nonsense, so you can easily read them on any supported device.
Learn more about Leanpub's ebook formats and where to read them