term used to refer to a set of practices that emphasizes the collaboration and communication of both software developers and other information- technology (IT) professionals while automating the process of software delivery and infrastructure changes. DevOps represents a change in IT culture, focusing on rapid IT service delivery through the adoption of agile, lean practices in the context of a system-oriented approach. DevOps emphasizes people (and culture), and seeks to improve collaboration between operations and development teams. DevOps implementations utilize technology — especially automation tools that can leverage an increasingly programmable and dynamic infrastructure from a life cycle perspective. DevOps is the union of people, process, and products to enable continuous delivery of value to our end users. Wikipedia (2017) Gartner Microsoft (Donovan Brown) 10
tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan http://agilemanifesto.org/
Dinamico o Statico Azure Resource Manager Dichiarativo, Json-based Estendibile (script, DSC) Tutta l’infrastruttura AWS CloudFormation Dichiarativo, Json-based Docker Non cosi dichiarativo Livello di singolo container Swarm, Kubernetes, Mesos, … Ansible, Puppet, Chef, CFEngine, … 18
Run time Tokens Avoid exposures git push hook Static analysis .gitignore Version Control centralizzato Repositories dedicati Azure Key Vault AWS Key Management Service 23
configurazione Come separo configurazioni di sviluppo da produzione Dove tengo le chiavi segrete e chi vi ha accesso Come traccio le versioni Chi autorizza i cambiamenti e come Come conservo i Dati Come aggiorno schemi database e interfacce tra moduli Costruisco immagini o faccio il deploy via script Che finestre di rilascio ho Come traccio le attività e gli errori Come raccolgo informazioni dalla produzione 34