Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Title Page
Mastering Microservices with Java 9
Second Edition
Copyright
Mastering Microservices with Java 9
Second Edition
Credits
About the Author
About the Reviewer
www.PacktPub.com
Why subscribe?
Customer Feedback
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
A Solution Approach
Evolution of microservices
Monolithic architecture overview
Limitation of monolithic architecture versus its solution with microservices
Traditional monolithic design
Monolithic design with services
Services design
One dimension scalability
Release rollback in case of failure
Problems in adopting new technologies
Alignment with Agile practices
Ease of development – could be done better
Microservices build pipeline
Deployment using a container such as Docker
Containers
Docker
Docker's architecture
Deployment
Summary
Setting Up the Development Environment
NetBeans IDE installation and setup
Spring Boot configuration
Spring Boot overview
Adding Spring Boot to our main project
Sample REST program
Writing the REST controller class
The @RestController annotation
The @RequestMapping annotation
The @RequestParam annotation
The @PathVariable annotation
Making a sample REST application executable
Adding a Jetty-embedded server
Setting up the application build
Running the Maven tool
Executing with the Java command
REST API testing using the Postman Chrome extension
Some more positive test scenarios
Negative test scenarios
Summary
Domain-Driven Design
Domain-driven design fundamentals
Fundamentals of DDD
Ubiquitous language
Multilayered architecture
Presentation layer
Application layer
Domain layer
Infrastructure layer
Artifacts of domain-driven design
Entities
Value objects
FAQs
Services
Aggregates
Repository
Factory
Modules
Strategic design and principles
Bounded context
Continuous integration
Context map
Shared kernel
Customer-supplier
Conformist
Anticorruption layer
Separate ways
Open Host Service
Distillation
Sample domain service
Entity implementation
Repository implementation
Service implementation
Summary
Implementing a Microservice
OTRS overview
Developing and implementing microservices
Restaurant microservice
OTRS implementation
Controller class
API versioning
Service classes
Repository classes
Entity classes
Registration and discovery service (Eureka service)
Eureka client
Booking and user services
Execution
Testing
References
Summary
Deployment and Testing
Mandatory services for good microservices
Service discovery and registration
Edge servers
Load balancing
Circuit breakers
Monitoring
An overview of microservice architecture using Netflix OSS
Load balancing
Server-side load balancing
Client-side load balancing
Circuit breakers and monitoring
Using Hystrix's fallback methods
Monitoring
Setting up the Hystrix dashboard
Creating Turbine services
Building and running the OTRS application
Microservice deployment using containers
Installation and configuration
Docker machine with 4 GB
Building Docker images with Maven
Running Docker using Maven
Integration testing with Docker
Pushing the image to a registry
Managing Docker containers
References
Summary
Reactive Microservices
An overview of the reactive microservice architecture
Responsive
Resilient
Elastic
Message driven
Implementing reactive microservices
Producing an event
Consuming the event
References
Summary
Securing Microservices
Enabling Secure Socket Layer
Authentication and authorization
OAuth 2.0
Usage of OAuth
OAuth 2.0 specification - concise details
OAuth 2.0 roles
Resource owner
Resource server
Client
Authorization server
OAuth 2.0 client registration
Client types
Client profiles
Client identifier
Client authentication
OAuth 2.0 protocol endpoints
Authorization endpoint
Token endpoint
Redirection endpoint
OAuth 2.0 grant types
Authorization code grant
Implicit grant
Resource owner password credentials grant
Client credentials grant
OAuth implementation using Spring Security
Authorization code grant
Implicit grant
Resource owner password credential grant
Client credentials grant
References
Summary
Consuming Services Using a Microservice Web Application
AngularJS framework overview
MVC
MVVM
Modules
Providers and services
Scopes
Controllers
Filters
Directives
UI-Router
Development of OTRS features
Home page/restaurant list page
index.html
app.js
restaurants.js
restaurants.html
Search restaurants
Restaurant details with reservation option
restaurant.html
Login page
login.html
login.js
Reservation confirmation
Setting up the web application
References
Summary
Best Practices and Common Principles
Overview and mindset
Best practices and principles
Nanoservice, size, and monolithic
Continuous integration and deployment
System/end-to-end test automation
Self-monitoring and logging
A separate data store for each microservice
Transaction boundaries
Microservices frameworks and tools
Netflix Open Source Software (OSS)
Build - Nebula
Deployment and delivery - Spinnaker with Aminator
Service registration and discovery - Eureka
Service communication - Ribbon
Circuit breaker - Hystrix
Edge (proxy) server - Zuul
Operational monitoring - Atlas
Reliability monitoring service - Simian Army
AWS resource monitoring - Edda
On-host performance monitoring - Vector
Distributed configuration management - Archaius
Scheduler for Apache Mesos - Fenzo
Cost and cloud utilization - Ice
Other security tools - Scumblr and FIDO
Scumblr
Fully Integrated Defence Operation (FIDO)
References
Summary
Troubleshooting Guide
Logging and the ELK stack
A brief overview
Elasticsearch
Logstash
Kibana
ELK stack setup
Installing Elasticsearch
Installing Logstash
Installing Kibana
Running the ELK stack using Docker Compose
Pushing logs to the ELK stack
Tips for ELK stack implementation
Use of correlation ID for service calls
Let's see how we can tackle this problem
Use of Zipkin and Sleuth for tracking
Dependencies and versions
Cyclic dependencies and their impact
Analyzing dependencies while designing the system
Maintaining different versions
Let's explore more
References
Summary
Migrating a Monolithic Application to Microservice-Based Application
Do you need to migrate?
Cloud versus on-premise versus both cloud and on-premise
Cloud only solution
On-premise only solution
Both cloud and on-premise solution
Approaches and keys to successful migration
Incremental migration
Process automation and tools setup
Pilot project
Standalone user interface applications
Migrating modules to microservices
How to accommodate a new functionality during migration
References
Summary
← Prev
Back
Next →
← Prev
Back
Next →