Microservices allow for extensible app architecture and a vendor-agnostic, scalable infrastructure. While microservices simplify app deployments, they come at a price: because they’re so fragmented, it is more difficult to track and manage all the independent, yet interconnected components of an app. All this information (requirements, code, test cases and results, build artifacts, and deployment blueprints) needs to live somewhere and most importantly be versioned. Using a real example and a live demonstration of Perforce Helix, Docker and Selenium, get best practices and tips for enabling a robust, scalable and extensible pipeline to support today’s modern app delivery.
3. 3
Electric Cloud: Powering Continuous
Delivery
ElectricFlow
Deploy
Pipeline & Release Management
ElectricAccelerator
Build & Test Acceleration
DevOps Automation Platform
Build
DELIVERY
Plugs right in to
your existing tools
CONTINUOUS
Build Test
DEV
OPS
5. 5
Why are people excited about
containers?
Builds can be done inside the container, gives file system
isolation and reproducibility.
Development/Production Parity. The container is the
deployable artifact.
Container start up times measured in milliseconds
6. 6
Enter Docker
https://docker.io/
Open Source
Used to wrap LXC, now has its own container
implementation
Really, really fast. Start measuring in milliseconds
9. 9
What are Microservices?
A pattern for building distributed systems:
• A suite of services, each running in its own process, each exposing an API
• Independently developed
• Independently deployable
• Each service is focused on doing one thing well
“Gather together those things that change for the same reason,
and separate those things that change for different reasons.”
– Robert Martin
10. 10
What’s good/bad about monolithic apps?
Can be easier to test
Can be easier to develop
Can’t deploy anything until
you deploy everything
Harder to learn and
understand the code
Easier to produce spaghetti
code
Hard to adopt new
technologies
You have to scale everything
to scale anything
11. 11
What’s cool about Microservices?
Loose coupling, so each service can:
• choose the tooling that’s appropriate for the problem it solves
• can be scaled as appropriate, independent of other services
• can have its own lifecycle independent of other services
Makes it easier to adopt new technologies
Smaller more autonomous teams are more productive
12. 12
Am I ready for Microservices?
If you’re just starting out, stay
monolithic until you
understand the problem better
You need to be good at
infrastructure provisioning
You need to be good at rapid
application deployment
You need to be good at
monitoring
http://martinfowler.com/bliki/MicroservicePrerequisites.html
14. 14
Designing your pipeline
Independent CI and Deployment pipelines per service
“Automate all things”
• plug in all of your toolchain to orchestrate the entire pipeline
Tools/environment agnostic to support each team’s workflow
and tool chain
Test automation and service virtualization
15. 15
Designing your Pipeline
Record the log of each artifact as it makes its way through
the pipeline
Use parameters and modeling of the pipeline components for
reusability
Bake compliance into the pipeline by binding certain security
checks and acceptance tests
Allow for both automatic and manual approval gates
16. 16
Pipeline view and Monitoring
Provide a real-time view of all pipeline statuses
Consistent monitoring across all services
Plug pipeline automation into monitoring so alerts can
trigger automatic processes
“Automate all the things”: plug in all your toolchain to orchestrate the entire pipeline (CI, testing, configuration, infrastructure provisioning, deployments, application release processes, and production feedback loops.)