Building next gen applications and microservices
-
Upload
devevents -
Category
Technology
-
view
153 -
download
0
Transcript of Building next gen applications and microservices
Building Next Gen Applications and MicroservicesManuel Silveyra, IBM Open Technologies@manuel_silveyraMay 25, 2016
2
IBM Swift Package Catalog
https://swiftpkgs.ng.bluemix.net/
3
Progression to Microservices
Continuous Integration
Agile
Heavyweight development
Continuous Deployment
DevOps
Microservices
4
1. From Heavyweight Development to Agile• A consolidation of ideas
from Extreme Programming, Scrum, Lean, etc.
• Tried to remove the overhead and risk of large scale software development by having:
– Smaller work increments– Frequent iterations– Rapid prototyping
Continuous Integration
Agile
Heavyweight development
Continuous Deployment
DevOps
Microservices
5
2. From Agile to Continuous Integration (CI)• Sought to combine software components as
early in the lifecycle as possible in order to minimize the impact of code integration issues.
• Virtualization and automated testing removed technological barriers to CI.
• The adoption of Agile led to a growth in CI, which was a common practice in Extreme Programming.
Continuous Integration
Agile
Heavyweight development
Continuous Deployment
DevOps
Microservices
6
3. From CI to Continuous Delivery (CD)• CD defines a deployment
pipeline to bring changes to production as quickly as possible.
• Is an instantiation of Scrum’s “potentially shippable product increment”.
Continuous Integration
Agile
Heavyweight development
Continuous Deployment
DevOps
Microservices
7
4. From CD to DevOps• In most organizations development and operations were
separate.• Organizations where operations and development were
together were more successful at establishing CD practices.
• Engineering approaches were taken to problems that were previously dealt with procedurally.
• This led to:– Higher automation in day to day tasks– Greater stability and resilience
Continuous Integration
Agile
Heavyweight development
Continuous Deployment
DevOps
Microservices
8
5. From DevOps to Microservices• The architectural phase where large monolithic
applications are broken down into discrete, business focused services.
• This led to:– Higher development parallelization– Greater scalability and utilization
Continuous Integration
Agile
Heavyweight development
Continuous Deployment
DevOps
Microservices
9
Microservice Outcomes• Increase Speed• Reduce Cost• Improve Resilience• Enable Visibility
10
Microservice Keys to Success
Architecture
MethodologyTechnology
Organization
11
Organizational Success• Are teams aligned to business or
technology?• How are responsibilities divided
between teams?• At what level of organization are
development and operations divided? DevOps or Development and Operations?
• What are team sizes and skills?• Dependencies and cross-team
communications?• Power distribution between teams?
Architecture
MethodologyTechnology
Organization
12
Methodological Success• Product or projects?• Agile or waterfall?• Who controls business requirements?• Fear of change, or continuous
delivery?• Degree of automation in deployment
and operations?
Architecture
MethodologyTechnology
Organization
13
Technological Success• Cloud provisioning?• Virtualization? Containerization?• Application integration approach?• Security and identity management?• Operational middleware?• Language? Databases?• Legacy technologies?
Architecture
MethodologyTechnology
Organization
14
Architectural Example
Architecture
MethodologyTechnology
Organization
15
Microservice Technologies• Containers
– Encapsulate services and are accessible by IP/port combination• Service Discovery
– Provides a way to know when services have been added/removed and where they are located
• Service Orchestration– Manages service topologies– Ensures availability and utilization
• API gateway– Security– Routing
16
High Level View• Connect to services
through HTTP• Services communicate
through event bus• Services can be written in
whatever language is best for the task and skills available
• Each service stores data independently
17
Containerized Deployment• Services can scale
independently according to load without affecting the others
• Services connect to external data stores (databases, BLOB stores, etc.)
• Containers, service discovery, API gateway
• Efficient/single point of failure
18
Optimized Containerized Deployment• Groups of services can be
collocated on physical systems
• Containers, service discovery, service orchestration, API gateway
• Efficient/highly available
19
Microservice Principles• Do One Thing Well• Build Afresh• Expect Output to Become Input• Don’t Insist on Interactive Input• Try Early• Don’t Hesitate to Throw it Away• Toolmaking
20