Continuous Delivery
"The ability to get changes-features, configuration
changes, bug fixes, experiments - into production or
into the hands of users safely and quickly in a
sustainable way"
● 11.6 seconds Mean time between deployments (weekday)
● 1,079 Max # of deployments in a single hour
● 10,000 Mean # of hosts simultaneously receiving a
deployment
● 30,000 Max # of hosts simultaneously receiving a
deployment
So, how does the
"traditional" software
delivery look like?
"Acceptance testing is a test performed to determine if
the business requirements or contracts are met. It
involves black-box testing against the complete system
from the user perspective and its positive result should
imply the acceptance for the software delivery."
"Spring Boot makes it easy to create stand-alone,
production-grade Spring based Applications that you
can 'just run'. We take an opinionated view of the
Spring platform and third-party libraries so you can get
started with minimum fuss. Most Spring Boot
applications need very little Spring configuration."
Spring Boot features
● Create stand-alone Spring applications
● Embed Tomcat or Jetty directly (no need to deploy WAR files)
● Provides a 'starter' POM to simplify the Maven configuration
● Automatically configure Spring whenever possible (CoC)
● Provide production-ready features such as metrics, health
checks and externalized configuration
● No code generation and no XML configuration
issues?
● Each server has to be configured
● Different environment in staging and production
● Different Java version for different applications
● Applications using the same ports
● Versioning
Issues with virtualization
● Low performance: Virtual machine emulates the whole
computer architecture, so there is a significant overhead
● High resource consumption: Emulation requires a lot of
resources and has to be done separately for each application.
● Large image size: Each application is delivered with the full
operating system
dev machine
github server
jenkins server
push
pull
staging machine
production machine
deploy
acceptance test
deploy
smoke test
docker registry
push
pull
pull