Mastering microservices with Java 9 build domain-driven microservice-based applications with spring, spring cloud, and angular

Master the art of implementing scalable microservices in your production environment with ease About This Book Use domain-driven design to build microservices Use Spring Cloud to use Service Discovery and Registeration Use Kafka, Avro and Spring Streams for implementing event based microservices Who...

Descripción completa

Detalles Bibliográficos
Otros Autores: Sharma, Sourabh, author (author)
Formato: Libro electrónico
Idioma:Inglés
Publicado: Birmingham, England ; Mumbai, [India] : Packt 2017.
Edición:Second edition
Materias:
Ver en Biblioteca Universitat Ramon Llull:https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009630117406719
Tabla de Contenidos:
  • Cover
  • Title Page
  • Copyright
  • Credits
  • About the Author
  • About the Reviewer
  • www.PacktPub.com
  • Customer Feedback
  • Table of Contents
  • Preface
  • Chapter 1: 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
  • Chapter 2: 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
  • Chapter 3: 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
  • Chapter 4: 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
  • Chapter 5: 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
  • Chapter 6: 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
  • Chapter 7: 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
  • Chapter 8: 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
  • Chapter 9: 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
  • Chapter 10: 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
  • Chapter 11: 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
  • Index.