Dockerizing an IT infrastructure can provide many benefits such as faster installation times, less problems during installations, improved fault tolerance and disaster recovery. By containerizing applications and their dependencies, new services can be deployed in hours rather than days. Build pipelines are used to automate building, testing and deploying packages across different operating systems. This reduces release times from 90 minutes to just 9 minutes and makes upgrades and installations much simpler and more reliable.
6. History and context
10 years of history
4 years of development
Various technologies
Cloud and on-premises
Support for 4 different operating systems
Three different deployment options
11. Before
90 minute install for Deveo customers
Compiling everything to everything with Chef
Error prone
Debugging sessions
Unsatisfied customers
Avoiding releases
14. Omnibus
The omnibus project includes a project build caching
mechanism that reduces the time it takes to rebuild a
project when only a few components need to be
rebuilt.
15. Why not virtual machines?
Creating and destroying virtual machines is time
consuming and resource-intensive.
A clean state is needed for each build
Easier to upgrade build tools in images
Cleaning up VMs too error prone
16. How we did the transition
Listing operating systems
Listing software components
Created dependency recipes for missing components
Set up KitchenCI builds
Added support for separate DB and web app packages
Added support for addition operating systems
17. How does the pipeline work
Building the packages
Create cloud instances
Deploy to test instances
Test the installation of packages
18. Benefits
Before: 90 minutes
Now: 9 minutes
Release times: 10 times faster
Shorter installation and upgrade times
Less problems during installations and upgrades
No longer avoiding releases
21. Problem
“Office server”
Typically the largest technical debt for the organisation
from IT point of view
Loss of such server is critical
Adding new services takes time
Data safety and backups are often forgotten
23. Benefits
Own namespace and storage for each app
Linking applications together
Building dependencies, e.g. Our CRM needs a DB
Docker native volume and networking support
Version controlled by Docker compose
Convoy for backups and recovery
24. Convoy
Create thin provisioned volumes
Take snapshots of volumes
Incrementally backup snapshots to object stores, such
as Amazon S3
Restore volumes to any hosts
Separation of host and storage
25. Process
List components, what data do they store, what
dependencies they have
for each component:
1. create docker compose file
2. List ports, volumes/mount points
3. Create image that holds application
26. Results and findings
Before: Deploying new IT services took 3 days
After: Deployment of new services in 1-3 hours
Example: Internal Storage problem
Before: Disaster
After: Full recovery in hours
28. Conclusion
Faster installations
Less problems with installations
More satisfied customers
No longer avoiding releases
Faster deployments of new IT services
More fault tolerance and ability to recover from disasters