Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Title Page
Copyright and Credits
Software Architecture with Spring 5.0
Packt Upsell
Why subscribe?
PacktPub.com
Contributors
About the authors
About the reviewer
Packt is searching for authors like you
Preface
Who this book is for
What this book covers
To get the most out of this book
Download the example code files
Download the color images
Conventions used
Get in touch
Reviews
Software Architecture Today
Defining software architecture
I know my land
I want to stay ahead
Predicting the future
Architecture and architects
Software architecture principles
Components
Low coupling
High cohesion
SOLID principles
The single responsibility principle (SRP)
The Open–Closed Principle (OCP)
The Liskov substitution principle
The interface segregation principle (ISP)
The dependency inversion (DI) principle
Conway's law
Choosing the right technology for you
New trends
Summary
Software Architecture Dimensions
Dimensions
The business dimension
Managing user requirements
Identifying and tracking business metrics
The data dimension
The technical dimension
The operations dimension
How to deploy an application
How interaction occurs among your components
Dealing with infrastructure
Understanding the infrastructure
Versioning
Testing
Cloud versus on-premise
Deploying your application
The C4 model
Context diagram
Container diagram
Components diagram
Class diagram
Summary
Spring Projects
Why Spring appeared
Spring projects
Spring Initializr
Spring Boot in a Nutshell
Servlet container integration
Autoconfiguration
Dependency management
mvnw and mvnw.cmd
pom.xml
DemoApplication.java
The application.properties file
DemoApplicationTests.java
Avoiding redeployment with developer tools
Spring Data
Supporting EIPs with Spring Integration
Spring Batch
The read step
The process step
The write step
Securing applications with Spring Security
Embracing (Spring) HATEOAS
Spring Cloud and the microservices world
Configuration server
Service registry
Edge services
Microproxy
API gateway
Circuit breaker
Reactive and Spring
Publisher
Subscriber
Subscription
Processor
Project reactor
Mono
Flux
Back pressure
Reactive Spring Data
Reactive REST services
Summary
Client-Server Architectures
Understanding client-server architectures
Server
Scaling
Request
Client
Network
Where to apply client-server architectures
Implementing client-server architectures with Spring
The server
SOAP web services
RESTful web services
CORBA
Sockets
AMQP
Implementing the server
Banking-domain
Banking-api
Boundaries
Domain
Persistence
Service
Monitoring the server
Testing
Banking-client
Authentication endpoint client
Account balance endpoint client
The clients
JavaFX client
Android client
Thin client
Summary
Model-View-Controller Architectures
MVC
The Model (M)
The View (V)
The Controller (C)
Benefits of using MVC
Common pitfalls
Implementing applications using MVC
Spring MVC
Testing
Test coverage
UI frameworks
Thymeleaf
Securing an MVC application
Basic authentication
Implementing basic authentication
Summary
Event-Driven Architectures
Underlying concepts and key aspects
Command
Event
Patterns of event-driven architectures
Event notification
Event-carried state transfer
Improving application performance
Reducing the load on the source application
Increasing the availability of the system
Event sourcing
CQRS
Complex domain models
Distinct paths to query and persist information
Independent scaling
Summary
Pipe-and-Filter Architectures
Introducing Pipe-and-Filter concepts
Filters
Pipes
Boarding Pipe-and-Filter architectures
Use cases for Pipe-and-Filter architecture
Spring Batch
Implementing pipes with Spring Batch
Summary
Microservices
Principles of microservices
Size
Autonomous
Working well together
Advantages
Alignment to the single responsibility principle
Continuous releases
Independent scalability
Increased adoption of new technologies
Drawbacks
Too many options
Slow at the beginning
Monitoring
Transactions and eventual consistency
Modeling microservices
Speeding up
Accelerating the development process
Embracing tests
Going to production
Implementing microservices
Dynamic configuration
Implementing a configuration server
Implementing a configuration client
Service discovery and registration
Introducing Eureka
Implementing a Netflix Eureka service registry
Implementing a service registry client
Netflix Ribbon
Edge services
Introducing Zuul
CAP theorem
Consistency
High availability
Partition tolerance
Circuit breaker
Hystrix
Summary
Serverless Architectures
An introduction to serverless architecture
Infrastructure and file storage
Benefits and pitfalls
Backend as a service
Function as a service
Concerns about serverless architectures
Vendor lock-in
Security
Framework support
Troubleshooting
Examples and common use cases
Adopting serverless architectures for SPA
Implementing FaaS with Spring Cloud Functions
Functions with Spring
Coding the example
Adapters
AWS Lambda adapter
Azure adapter
Summary
Containerizing Your Applications
Containers
Basic concepts
Containers and images
Basic commands
Running containers
Working with containers
Working with images
Building your own images
FROM command
MAINTAINER command
RUN command
ENV command
EXPOSE command
CMD command
Containerizing applications
Docker Gradle plugin
Registries
Publishing images
Provisioning multiple-container environments
Docker Compose
Linking containers
links
depends_on
Container orchestration with Kubernetes
Pod
Labels
Replication controllers
Services
Summary
DevOps and Release Management
Silos
How to break silos
DevOps culture
Motivations
DevOps adoption
Embracing automation
Infrastructure as code
Spring application and DevOps practices
Supporting different environments
Selecting profiles
Vagrant
Working with Vagrant
Release management
pipelines
Continuous integration
Continuous delivery and continuous deployment
Automating pipelines
Jenkins
Summary
Monitoring
Monitoring
Monitoring Spring applications
Application Performance Management (APM) tools
New Relic
Summary
Security
Why security is important as a part of an application's architecture
Key security recommendations
Authentication and authorization
Cryptography
Data input validation
Sensitive data
Social engineering
OWASP Top 10
Penetration testing
Authentication and authorization as a service
Summary
High Performance
Why performance matters
Scalability
Horizontal scalability
Vertical scalability
High availability
Performance
The key recommendation to avoid performance issues
Identifying bottlenecks
Profiling applications
Visual VM
SQL query optimizations
A load test example
Summary
Other Books You May Enjoy
Leave a review - let other readers know what you think
← Prev
Back
Next →
← Prev
Back
Next →