Optimizing AI for immediate response in Smart CCTV
Achieving Hyper-Productivity Through the Use of Microservices and PCF
1. Achieving Hyper-Productivity through the Use of Microservices and PCF
Achieving Hyper-Productivity
through the Use of Microservices
and PCF
Gregor Zurowski | Thomas Seibert
2. Achieving Hyper-Productivity through the Use of Microservices and PCF
Who We Are
Software Development @ Mercedes-Benz.io
Thomas Seibert
Lead Architect
Gregor Zurowski
Software Architect
3. Achieving Hyper-Productivity through the Use of Microservices and PCF
What We Do
Mercedes-Benz on the Web
End consumer oriented
Focus on product information
Rolled out to 50+ markets
5. Achieving Hyper-Productivity through the Use of Microservices and PCF
What Does Productivity Mean?
Output/input
Lines of Code
Function Point Analysis
Working overtime
Costs as the only kind of measured input
IT as a cost center vs. the engine of competitive advantage
Impact on customer behavior/resource binding
Customer value creation ensures impact
Where do we allocate resources?
Old World
New World
6. Achieving Hyper-Productivity through the Use of Microservices and PCF
What Does Hyper-Productivity Mean?
"Hyper" comes from the ancient greek (ὑπέρ) and means over or above
Reach a new level of productivity
Is a 10x development team possible?
Don't work on the pedal, change gear
Understanding the processes (systems thinking)
Value stream mapping
Elimination of bottleneck
Measuring impact
You can't improve what you can't measure
Metrics mean nothing if they are not actionable
7. Achieving Hyper-Productivity through the Use of Microservices and PCF
Gaining Productivity by Eliminating Waste
The Seven Wastes of Software Development
Extra features
Relearning
Task Switching
Partially done work
Handoffs
Delays
Defects
based on Mary and Tom Poppendieck’s work on lean software development
8. Achieving Hyper-Productivity through the Use of Microservices and PCF
Gaining Productivity by Eliminating Waste
How Can Microservices and PCF Help?
Extra features
Relearning
Task Switching
Partially done work ✓
Handoffs ✓
Delays ✓
Defects ✓
9. Achieving Hyper-Productivity through the Use of Microservices and PCF
Approximation Velocity
Speed is Nothing without Control
Medium development velocity,
constantly adjusted direction
Low development velocity,
unadjusted direction
High development velocity,
unadjusted direction
10. Achieving Hyper-Productivity through the Use of Microservices and PCF
Productivity is Context Dependent
Several domains (Cynefin framework)
Obvious
Complicated
Complex
Chaotic
Disorder/confusion
ComplicatedComplex
Chaotic Obvious
Disorder
based on David Snowden’s Cynefin framework
11. Achieving Hyper-Productivity through the Use of Microservices and PCF
Productivity in an Enterprise Context
Value Stream Mapping in the Enterprise
Value chain
Functional
maturity
Genesis Custom built Product Commodity
Microservice 1
User focused feature
RDBMSElasticsearch
PCF
IaaS OS
Semantic graph
Upper in the value axis
means: More business
orientation, less
generic functionalityMicroservice 2
Electricity
based on Simon Wardley’s maps
13. Achieving Hyper-Productivity through the Use of Microservices and PCF
Value Line Proposition of Pivotal Application Service
IaaS
BOSH
Data stores
Service Broker
Service
registry
Applications
value line
managed
by platform
managed by
teams
Message queues
Config
server
Hystrix
dashboard
based on Dekel Tankel’s value line diagram
Router Loggregator
Other PCF
components
14. Achieving Hyper-Productivity through the Use of Microservices and PCF
Platform Features for Increasing Productivity
Opinionated Platform
Platforms such as PCF are opinionated to reduce complexity by making
assumptions and assuring consistency
Buildpacks abstract away details and complexities of container construction
Cloud-native components for service discovery and configuration
15. Achieving Hyper-Productivity through the Use of Microservices and PCF
Platform Features for Increasing Productivity
Self-Service Provisioning
Self-service provisioning facilities for databases and other middleware services
Marketplace experience for development teams
Service brokers provision service instances
Service bindings provide details for attaching (bind) resources to applications
Service Broker for AWS further decreases operational burden of managing highly-
available middleware services (storage, messaging, databases)
Service Broker
<<Service Instance>>
Middleware
<<bind>> App<<provision>>
environment
variables
16. Achieving Hyper-Productivity through the Use of Microservices and PCF
Platform Features for Increasing Productivity
Isolation and Decoupling
Provides isolation and decoupling of teams by
providing
Process-level isolation with containers
Permission-level partitioning with orgs and
spaces
<<org>>
<<space>> <<space>>
App App App
Service
<<org>>
<<space>> <<space>>
App
Service ServiceService
17. Achieving Hyper-Productivity through the Use of Microservices and PCF
Platform Features for Increasing Productivity
Scaling and Monitoring
Scaling
Vertical scaling
Configure memory and CPU via manifest files
Horizontal scaling
Configure instance count via manifest or runtime
Scaling components independently
Functional decomposition using a Microservice architecture
Monitoring and metrics
App Manager provides simplified dashboard view of applications and services
Hystrix dashboard provide overview of communication within Microservice architecture
PCF Metrics for insights and troubleshooting
19. Achieving Hyper-Productivity through the Use of Microservices and PCF
Project Bootstrapping
Introduction
Lessons learned we presented at SpringOne 2017:
"Time needed for onboarding new teams has
initially been underestimated"
How did we address this?
Standardized and automated bootstrapping process for ramping up
new projects
20. Achieving Hyper-Productivity through the Use of Microservices and PCF
Project Bootstrapping
Overview
Product Team
Platform Operations
Project
Initiation
SCM Setup PCF Setup CI/CD Setup
API
Gateway
Setup
100%Generate
code
Commit
& push
first
integration
completed
21. Achieving Hyper-Productivity through the Use of Microservices and PCF
Project Bootstrapping
Operations View | 1
Process gateway including sign-off by stakeholders
Platform Operations
Project
Initiation
SCM Setup PCF Setup CI/CD Setup
API
Gateway
Setup
22. Achieving Hyper-Productivity through the Use of Microservices and PCF
Project Bootstrapping
Operations View | 2
Create Git repositories for
application code
configuration
Platform Operations
Project
Initiation
SCM Setup PCF Setup CI/CD Setup
API
Gateway
Setup
23. Achieving Hyper-Productivity through the Use of Microservices and PCF
Project Bootstrapping
Operations View | 3
Create orgs and spaces for all deployment environments
Create service bindings for shared services
Configure central config server
Platform Operations
Project
Initiation
SCM Setup PCF Setup CI/CD Setup
API
Gateway
Setup
24. Achieving Hyper-Productivity through the Use of Microservices and PCF
Project Bootstrapping
Operations View | 4
Setup Jenkins pipelines using Jenkins Seed Plugin
Create multi-branch build job
Create one deployment job per environment
Platform Operations
Project
Initiation
SCM Setup PCF Setup CI/CD Setup
API
Gateway
Setup
25. Achieving Hyper-Productivity through the Use of Microservices and PCF
Project Bootstrapping
Operations View | 5
Add routes for exposing application via API gateway in all environments
Platform Operations
Project
Initiation
SCM Setup PCF Setup CI/CD Setup
API
Gateway
Setup
26. Achieving Hyper-Productivity through the Use of Microservices and PCF
Project Bootstrapping
Product Team View | 1
Invoke code generator for creating application skeleton
Generated code contains:
Minimal set of mandatory dependencies
PCF manifest files
Jenkins pipelines
Java sources with unit tests
Platform-specific configuration
Product Team
Generate
code
Commit
& push
27. Achieving Hyper-Productivity through the Use of Microservices and PCF
Project Bootstrapping
Product Team View | 2
A simple commit and push to SCM will…
automatically build the application
automatically integrate the application into the dev environment
Developer can access the application through API gateway or via PCF route
Product Team
100%
first
integration
completed!
Generate
code
Commit
& push
28. Achieving Hyper-Productivity through the Use of Microservices and PCF
Project Bootstrapping
Lessons Learned
Automate as much as possible (obvious)
In our case – more specifically:
Don’t expect developers push changes with the CLI
Don’t offload implementation of CI/CD pipelines to developers
Provide a simple and extensible CI/CD library
"Pipeline as code"
Aim for self-contained build definitions
Don’t rely on external tooling
Application repository contains all dependencies for building the application
Security and automation requirements might collide
30. Achieving Hyper-Productivity through the Use of Microservices and PCF
What are the Most Important Factors of Productivity?
"Individuals and interactions over processes and tools"
Psychological safety
You can't engineer culture