Fundamental technology shift
Mainframe computing
Client/Server
Cloud Computing
Microservices
Current prevailing approach for large scale globally distributed
applications
Common choice for new development projects for business software
Many organizations are also evolving existing monolithic applications
to Microservices
What are microservices?
A model of technical architecture
Smallindependent functional applications
Each microservices built on appropriate technical components
A software development pattern
Decentralization of technical components
Distributed programming / DevOps teams
Responsibility to deploy, operate, and maintain services
From apps to systems
Many microservices are assembled to create a complex business
application
Separate independent components
Brought together via middleware or API gateway
Software Development Styles
Monolithic Applications
Codebase of application deployed as a single bundle of executables and
libraries on a unified platform
Microservices Architecture
Multiple independent software components orchestrated to form a unified
application
Common infrastructure:
◼ User interface toolkit
◼ API Gateway
◼ Persistence layer
An internal architecture
Not necessarily apparent to users whether the application is based on
microservices
Needed for fast performance, high availability, extreme transaction
loads
Decentralized architecture does not imply fragmented user
experience
Who uses Microservices
Uber
Netflix
Amazon
Ebay
Twitter
PayPal
Alternative approach: Monolithic software
Consolidated executable application
Plus supporting libraries and modules
Can be massively distributed across computing clusters
Entire application based on a uniform technology stack:
Serverplatform
Operating system
Programming language
Database layer
Enhancements mean recompilation of entire application
Monolithic Application Conceptual Model
Scripts/
User Third Party Systems
Interfaces API endpoints
Web service
Presentation Layer
Application software
Business Logic
Run time libraries
Database Engine
Table Table Table Table Table Table Table Table
Table Table Table Table Table Table Table Table
Services-oriented Architecture
Longstanding approach to business application development
Monolithic application based on reusable services
Complex applications rely on an enterprise service bus to manage
communications among services, database connectivity, event triggers,
etc
Single uniform technology platform
Code assembled into a monolithic package
Scales to very high performance through clustered deployment
SOA development issues
Services are closely interrelated throughout the application
Developers must understand all aspects of the application
Single technology stack
Small changes require full recompilation
Complex applications can hit hardware or OS limits
Centralized development pattern
Operations separated from Development
Monolithic Application: Enterprise SOA Model
Scripts/
User Third Party Systems
Interfaces API endpoints
Web service
Presentation Layer
Application software Business Logic
Reusable
} Composable
Services
Enterprise Service Bus
Database Engine
Table Table Table Table Table Table Table Table
Table Table Table Table Table Table Table Table
Building a microservice
Small unit of functionality
Complete and independent technology stack
Separate data stores
Synchronization with other services as needed through persistence layers
Invoked through API Request / Response
Usually: REST, HTTP, JSON
Self-contained components
Inner workings not exposed externally
Developers have free reign to select tech components
Microservice conceptual model
Request Response
REST / HTTPS
Web service
Service components
Microservice
Application
software
Run time libraries
Data Store
Assembling an application
Each microservice performs a small limited task
Not intended to be standalone applications
Surrounded by specialized infrastructure
Manage communications
Orchestrate services into complex chains of tasks
Load balancing
API Gateway
User Interface layer
Externally exposed APIs
Multiple instances of any microservice launched as needed
Microservices-based Application
Scripts/
User Third Party Systems
Interfaces API endpoints
Presentation Layer / UI Toolkit
API Gateway
Web service
Service
component
s
Web service Web service
Web service
Service Service Web service
component Service component
component Microservice
s s Service
s
component
Web service s
Web service Web service Application
Microservice Microservice Web service
Microservice Web service Service software
Service Service component
component Service
component
Service s Microservice
s s component
Application component Application s Run time libraries
software Application s
software
software Application
Microservice
Microservice Microservice software
Microservice
Run time libraries Microservice Run time libraries
Run time libraries
Application Data Store
Application Application Run time libraries
Application software
software software Application software
software
Data Store Data Store Run time libraries
Run time libraries Run time libraries Data Store
Run time libraries
Run time libraries Data Store
Data Store
Data Store Data Store
Data Store
Data Store
Persistence / System
Layer
API calls
Evolving from the Monolith to Microservices
Many organizations eventually press the limits of applications built
with SOA monolithic style
Gradually offload selected tasks to microservices
Full-fledged migration to microservices can be long and expensive
State of the Art
Business environments based on monolithic style remain viable
Trend to base new large-scale web applications on microservices
Well accepted, modern approach among tech giants
A technical style that supports a level of scale not previously possible
Beginning to gain acceptance for mid-scale development projects.