Date post: | 20-Jan-2017 |
Category: |
Technology |
Upload: | devevents |
View: | 44 times |
Download: | 1 times |
Building Next Gen Applications and Microservices
Manuel Silveyra
@manuel_silveyra
May 25, 2016
IBM Swift Package Catalog
2
https://swiftpkgs.ng.bluemix.net/
Progression to Microservices
3
Continuous Integration
Agile
Heavyweight development
Continuous Deployment
DevOps
Microservices
1. From Heavyweight Development to Agile
4
• 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
2. From Agile to Continuous Integration (CI)
5
• 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
3. From CI to Continuous Delivery (CD)
6
• 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
4. From CD to DevOps
7
• 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
5. From DevOps to Microservices
8
• 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
Microservice Outcomes
• Increase Speed
• Reduce Cost
• Improve Resilience
• Enable Visibility
9
Microservice Keys to Success
10
Organization
MethodologyTechnology
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?
11
Organization
MethodologyTechnology
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?
12
Organization
MethodologyTechnology
Technological Success
• Cloud provisioning?
• Virtualization? Containerization?
• Application integration approach?
• Security and identity management?
• Operational middleware?
• Language? Databases?
• Legacy technologies?
13
Organization
MethodologyTechnology
Microservice Exercise
14
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
15
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
16
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
17
Optimized Containerized Deployment
• Groups of services can be
collocated on physical systems
• Containers, service discovery,
service orchestration, API
gateway
• Efficient/highly available
18
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
19
20
Microservice Platform
Shared Capabilities
• Hardware services
• Code management, testing, and
deployment
• Data stores
• Service orchestration
• Security and identity
• Architectural policy
Local Capabilities
• General tooling
• Runtime configuration
• Service discovery
• Request routing
• System observability
21