Microservices Best Practices for Java
Introduction
Overview
Cloud Native Applications
Twelve factors
Microservices
The meaning of "small"
Independence an Autonomy
Resillience and Fault tolerance
Automated environment
Philosophy and Team Structure
Examples
Online retail store
Game On
Creating Microservices in Java
Java platforms and programming models
Spring Boot
Dropwizard
Java platform, Enterprise Edition
Versioned dependencies
Identifying services
Applying Domain-driven Design Pattern
Translating domain elements into services
Application an service structure
Shared library or new service?
Creating REST(Representational state transfer) API
Top down or bottom up?
Documenting APIs
Use the right HTTP verb
Create machine friendly, descriptive results
Resource URIs and versioning
Locating services
Service Registry
Third party registration versus self-registration
Availability versus consistency
Service invocation
Server side
Client side
API Gateway
Microservice communication
Synchronous asynchronous
Synchronous messaging (REST)
Asynchronous messaging (Events)
Examples
Fault tolerance
Resilient against change
Timeouts
Circuit breakers
Bulkheads
Handling Data
Data-specific characteristics of a microservice
Domain driven design leads to entities
Separate data store per microservice
Polyglot Persistence
Data sharing across microservices
Event Sourcing and Command Query Responsibility Segregation
Messaging Systems
Distributed transactions
Support in Java
Java Persistence (JPA)
Enterprise JavaBeans (EJB)
BeanValidation
Contexts and Dependency Injection (CDI)
Java Message Service API (JMS)
Java and other Messaging Protocols
Application Security
Securing microservice architectures
Network segmentation
Ensuring data privacy
Automation
Identity and Trust
Authentication and Authorization
Open Authentication (OAuth 2.0)
JSON Web Tokens (JWTs)
Hash-based Messaging Code (HMAC)
API Keys and Shared Secrets
Testing
Types of tests
Application architecture
Single service testing
Testing domain or business function
Testing resources
Testing external service requests
Testing data requests
Component testing
Security verification
Staging environment
Test data
Integration
Contract
End-to-end
Fault tolerance and resilience
Production environment
Synthetic monitoring
Canary Testing
From development to production
Deployment pipelines for microservices and tool for automation
Packaging options
JAR, WAR and EAR deployment on preinstalled middleware
Executable JAR
Containerization
Every microservice on its own server
Aspects of running multiple microservices on one server
Best practices on packaging
Configuration of application across stages
Environment variables
Configuration files
Configuration systems
Programming considerations
Best practices on configuration
Management and Operations
Metrics and health checks
Dynamic provisioning
Health check
Logging
Templating
Powered by
GitBook
Microservice communication
results matching "
"
No results matching "
"