Apparu vers 2010, le mouvement Devops se caractérise principalement par la promotion de l'automation et du suivi (monitoring) de toutes les étapes de la création d'un logiciel, depuis le développement, l'intégration, les tests, la livraison jusqu'au déploiement, l'exploitation et la maintenance des infrastructures. Les principes Devops soutiennent des cycles de développement plus courts, une augmentation de la fréquence des déploiements et des livraisons continues, pour une meilleure atteinte des objectifs économiques de l'entreprise.
Inventeur du mot devops qui désigne une approche fédérée des développements informatiques (build) et des opérations (run).
Scientific study giving results and methodology about the puppet.com states of Devops from 2014 to 2017 (the books authors contributed to theses studies)
Martin Fowler preface
High performing organizations that effectively utilize DevOps principles achieve:
- 46x more frequent software deployments than their competitors.
- 96x faster recovery from failures.
- 440x faster lead time for changes.
- Higher levels of customer satisfaction and operational efficiency.
According to a report out earlier this spring by outsourcing research firm Information Services Group (ISG), average outsourcing contract values saw their worst first quarter in a decade, dropping by 27 percent year-over-year. Big deals over $30 million were particularly hit hard, declining by 25 percent in both number and value.
"I hear many more negative experiences organizations have had with outsourcing arrangements than I do positive ones," he says. "Poor quality. Higher-than-expected management overhead required. Inflexibility. Process challenges. All are reasons cited for why the arrangements didn’t live up to expectations."
The anecdotal stories are also piling up of big name enterprises pulling more of their IT resources back in house after years of outsourcing.
"Outsourcing in an enterprise setting is often implemented in a way that advances outdated waterfall-like practices and processes that are antithetical to continuous delivery," Braunhut says.
"To be most effective, enterprises need to own the transformation, and it has to be a truly collaborative effort across disciplines–business leadership, engineering, system administration, security & compliance,"says Thomas Enochs, vice president of customer success at Chef. "ollaboration and transformation are difficult to achieve with outside third parties or vendors. They need to own and drive the change themselves, and not be dependent on others."
**VM** **Containers** +-----------------+ +-----------------+ <-+ | App | | App | | All | | | | | this part +-----------------+ +-----------------+ | is a | | OS Dependencies | | container | +-----------------+ <-+ V +-----------------+ +--------+--------+ | Dependencies | <-- config | | Docker | +-----------------+ | +--------+ | OS | | | | | | OS | +-----------------+ +-----------------+ < VM > NIC, Storage, Size < VM > < VSphere, HV, NSX, VSAN > NIC, Storage, < HV > Agents, Kernel +-----------------+ +-----------------+ | | | | | Physical | | Physical | | | | | +-----------------+ +-----------------+
Infrastructure As A Service
Amazon EC2, Windows Azure, RackSpace, CloudWatt, ...
Platform As A Service
Software As A Service
Any software hosted elsewhere on the internet (a webmail, a source code repository, a billing solution, etc ...)
Function As A Service
Just host a simple function, give it data and get a result.
Most fundamentals notions of the runtime definition of a container :
process namespace (only that process shown by
Cgroups allows to restrict what containerized process are allowed to do (capabilities, ressources, ...)
Container life cycle and associated process are bounds.
Each image can be seen as a binary snapshot (ssh in version x.y.z for ex).
It means you can compose your image with several others images instead of creating a monolitic full stack image.
a docker file is a starting point for an image.
A container is packaged with all of his dependencies.
With a classical install for your app, your are limited by deps installed on your system.
With a container, it is expected that all the deps above the kernel are packaged inside the container. So when you run your container inside an OS, it don't install anything. It sits above the OS in its own world. If you delete your image, you the OS state is unchanged.
A docker host tight the runtime container, the images and the docker file together.
A docker host have a cache of the docker registry. The registry contains the images of binaries (each available versions).
You can pull and push from the registry. There is a diff with the cache to pull/push only what is needed.
The docker client talk (pull, create, run, commit, ...) to the daemon in docker host. Not only container life cycle management but also network and storage config.
A docker host can contains also a Volume from a docker image. A Volume is the saved state (storage) of the container. Deleting a container is also deleting his state, the Volume.
super quick evaluation of :
- Docker Swarm
- Everything Starts With Your Local Environment
- Use Docker to Pack and Ship Your App
- Use Kubernetes to Deploy and Scale Your App
- You’ll Deliver Quickly, Consistently, and Predictably
Pour développer et mettre en production une architecture à base de micro-services, Docker, Kubernetes et Istio s'imposent. Docker nous donne l'isolation des services, Kubernetes permet de les distribuer sur un cluster et Istio apporte de l'intelligence au réseau.
Mais voilà, comme 80% des développeurs, c'est une application monolithique et paléolithique que je dois moderniser. Comment puis-je tirer tous les bénéfices de ces outils ? Puis-je le faire sans toucher une ligne de code de mon application ?
Simplification des montées de version, Déploiement sur le Cloud, Sécurisation des flux, Terminaison SSL, Blue/Green deployments, A/B Testing, Monitoring des Apis... Autant de cas concrets que l'on mettra en oeuvre sans toucher au monolithe !!
- LesFurets.com @Dimitri Baeli : J+1 (h+1 hotfix) (500K LoC, codebase age 10 ans, 25 devs)
- BlaBlaCar @Nicolas Tricot : 45 mins entre git push et deploy prod