Software Design and Development Conference 2015 Mark Richards Hands-on Software Architect Author of Enterprise Messaging Video Series (O’Reilly) Author of Java Message Service 2nd Edition (O’Reilly) Co-author of Software Architecture Fundamentals Video Series (O'Reilly) Migrating to a Microservices Architecture
53
Embed
NFJS 2015 Migrating to Microservices - SDD Conferencesddconf.com/brands/sdd/library/Migrating_To_Microservices.pdf · refactoring entire database may not be feasible or possible-single-purpose
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Software Design and Development Conference 2015
Mark RichardsHands-on Software ArchitectAuthor of Enterprise Messaging Video Series (O’Reilly)Author of Java Message Service 2nd Edition (O’Reilly)Co-author of Software Architecture Fundamentals Video Series (O'Reilly)
Migrating to a Microservices Architecture
Software Architecture Fundamentals Video Series Enterprise Messaging Video Series
microservices architecture elements
agenda
migration challengesmicroservices hybrid models
migration techniques
Microservices Architecture Elements
microservices elements
api layer
client requests client requests client requests
distributed architecture
api layer
client requests client requests client requests
microservices elements
separately deployed units
api layer
client requests client requests client requests
microservices elements
service component
api layer
client requests client requests client requests
microservices elements
bounded context
api layer
client requests client requests client requests
microservices elements
microservices hybrid models
databasescope
service granularity
integration hub
microservices hybrids
api layer
client requests client requests client requests
microservices hybridsservice granularity
user interface layer
client requests client requests client requests
microservices hybridsservice granularity
single-purpose micro-service to "portion of the application" macro-service
service granularity
macro-services resolves orchestration and transactional issues
microservices hybrids
allows for complex business processing within a service context
-
single-purpose micro-service to "portion of the application" macro-service
service granularity
services become harder to develop and testdeployment pipeline requires more planningchange control becomes more difficult
microservices hybrids
-
microservices hybridsdatabase scope
api layer
client requests client requests client requests
microservices hybridsdatabase scope
user interface layer
client requests client requests client requests
single-purpose service-based database to globally shared application database
reduces service orchestration and contract dependencies
microservices hybridsdatabase scope
improves performance due to fewer remote callsrefactoring entire database may not be feasible or possible
-
single-purpose service-based database to globally shared application database
looser bounded context of servicestighter service coupling based on schema
microservices hybridsdatabase scope
schema changes become expensive and difficult
-
microservices hybridsintegration hub
api layer
client requests client requests client requests
lightweight message broker
user interface layer
client requests client requests client requests
microservices hybridsintegration hub
integration hub / middleware
lightweight message broker to heavier integration hub
microservices hybridsintegration hub
allows for transformation of contract differences allows for non-transactional orchestration of servicesallows for protocol-agnostic heterogeneous interoperabilityallows for common processing logic across all services
-
lightweight message broker to heavier integration hub
decrease in overall performanceadded complexity and costincreased need for governancedeployment pipeline requires much more planning
microservices hybridsintegration hub
services become harder to develop and test-
microservices migration challenges
migration challenges
distributed architecture and remote service issues
service component granularity and transactional boundaries
shared services, modules, and object hierarchies
distributed architecture issues
contract creation, maintenance, versioning, and coordination
migration challenges
distributed architecture issues
remote process responsiveness and server availability