Learning DevOps
eBook - ePub

Learning DevOps

The complete guide to accelerate collaboration with Jenkins, Kubernetes, Terraform and Azure DevOps

Mikael Krief

Buch teilen
  1. 504 Seiten
  2. English
  3. ePUB (handyfreundlich)
  4. Über iOS und Android verfügbar
eBook - ePub

Learning DevOps

The complete guide to accelerate collaboration with Jenkins, Kubernetes, Terraform and Azure DevOps

Mikael Krief

Angaben zum Buch
Buchvorschau
Inhaltsverzeichnis
Quellenangaben

Über dieses Buch

Simplify your DevOps roles with DevOps tools and techniques

Key Features

  • Learn to utilize business resources effectively to increase productivity and collaboration
  • Leverage the ultimate open source DevOps tools to achieve continuous integration and continuous delivery (CI/CD)
  • Ensure faster time-to-market by reducing overall lead time and deployment downtime

Book Description

The implementation of DevOps processes requires the efficient use of various tools, and the choice of these tools is crucial for the sustainability of projects and collaboration between development (Dev) and operations (Ops). This book presents the different patterns and tools that you can use to provision and configure an infrastructure in the cloud. You'll begin by understanding DevOps culture, the application of DevOps in cloud infrastructure, provisioning with Terraform, configuration with Ansible, and image building with Packer. You'll then be taken through source code versioning with Git and the construction of a DevOps CI/CD pipeline using Jenkins, GitLab CI, and Azure Pipelines. This DevOps handbook will also guide you in containerizing and deploying your applications with Docker and Kubernetes. You'll learn how to reduce deployment downtime with blue-green deployment and the feature flags technique, and study DevOps practices for open source projects. Finally, you'll grasp some best practices for reducing the overall application lead time to ensure faster time to market.

By the end of this book, you'll have built a solid foundation in DevOps, and developed the skills necessary to enhance a traditional software delivery process using modern software delivery tools and techniques

What you will learn

  • Become well versed with DevOps culture and its practices
  • Use Terraform and Packer for cloud infrastructure provisioning
  • Implement Ansible for infrastructure configuration
  • Use basic Git commands and understand the Git flow process
  • Build a DevOps pipeline with Jenkins, Azure Pipelines, and GitLab CI
  • Containerize your applications with Docker and Kubernetes
  • Check application quality with SonarQube and Postman
  • Protect DevOps processes and applications using DevSecOps tools

Who this book is for

If you are a developer or a system administrator interested in understanding continuous integration, continuous delivery, and containerization with DevOps tools and techniques, this book is for you.

Häufig gestellte Fragen

Wie kann ich mein Abo kündigen?
Gehe einfach zum Kontobereich in den Einstellungen und klicke auf „Abo kündigen“ – ganz einfach. Nachdem du gekündigt hast, bleibt deine Mitgliedschaft für den verbleibenden Abozeitraum, den du bereits bezahlt hast, aktiv. Mehr Informationen hier.
(Wie) Kann ich Bücher herunterladen?
Derzeit stehen all unsere auf Mobilgeräte reagierenden ePub-Bücher zum Download über die App zur Verfügung. Die meisten unserer PDFs stehen ebenfalls zum Download bereit; wir arbeiten daran, auch die übrigen PDFs zum Download anzubieten, bei denen dies aktuell noch nicht möglich ist. Weitere Informationen hier.
Welcher Unterschied besteht bei den Preisen zwischen den Aboplänen?
Mit beiden Aboplänen erhältst du vollen Zugang zur Bibliothek und allen Funktionen von Perlego. Die einzigen Unterschiede bestehen im Preis und dem Abozeitraum: Mit dem Jahresabo sparst du auf 12 Monate gerechnet im Vergleich zum Monatsabo rund 30 %.
Was ist Perlego?
Wir sind ein Online-Abodienst für Lehrbücher, bei dem du für weniger als den Preis eines einzelnen Buches pro Monat Zugang zu einer ganzen Online-Bibliothek erhältst. Mit über 1 Million Büchern zu über 1.000 verschiedenen Themen haben wir bestimmt alles, was du brauchst! Weitere Informationen hier.
Unterstützt Perlego Text-zu-Sprache?
Achte auf das Symbol zum Vorlesen in deinem nächsten Buch, um zu sehen, ob du es dir auch anhören kannst. Bei diesem Tool wird dir Text laut vorgelesen, wobei der Text beim Vorlesen auch grafisch hervorgehoben wird. Du kannst das Vorlesen jederzeit anhalten, beschleunigen und verlangsamen. Weitere Informationen hier.
Ist Learning DevOps als Online-PDF/ePub verfügbar?
Ja, du hast Zugang zu Learning DevOps von Mikael Krief im PDF- und/oder ePub-Format sowie zu anderen beliebten Büchern aus Computer Science & Computer Science General. Aus unserem Katalog stehen dir über 1 Million Bücher zur Verfügung.

Information

Jahr
2019
ISBN
9781838648534

Section 1: DevOps and Infrastructure as Code

The objectives of the first section are to present the DevOps culture and to provide all of the keys for the best Infrastructure as Code practices. This section explains the DevOps application on cloud infrastructure, showing provisioning using Terraform and configuration with Ansible. Then, we improve this by templating this infrastructure with Packer.
We will have the following chapters in this section:
  • Chapter 1, DevOps Culture and Practices
  • Chapter 2, Provisioning Cloud Infrastructure with Terraform
  • Chapter 3, Using Ansible for Configuring IaaS Infrastructure
  • Chapter 4, Optimizing Infrastructure Deployment with Packer

DevOps Culture and Practices

DevOps, a term that we hear more and more in enterprises with phrases such as We do DevOps or We use DevOps tools, is the contraction of the words Development and Operations.
DevOps is a culture different from traditional corporate cultures and requires a change in mindset, processes, and tools. It is often associated with continuous integration (CI) and continuous delivery (CD) practices, which are software engineering practices, but also with Infrastructure as Code (IaC), which consists of codifying the structure and configuration of infrastructure.
In this chapter, we will see what DevOps culture is, what DevOps principles are, and the benefits it brings to a company. Then, we will explain CI/CD practices and, finally, we will detail IaC with its patterns and practices.
In this chapter, the following topics will be covered:
  • Getting started with DevOps
  • Implementing CI/CD and continuous deployment
  • Understanding IaC

Getting started with DevOps

The term DevOps was introduced in 2007-2009 by Patrick Debois, Gene Kim, and John Willis, and it represents the combination of Development (Dev) and Operations (Ops). It has given rise to a movement that advocates bringing developers and operations together within teams. This is to be able to deliver added business value to users more quickly and hence be more competitive in the market.
DevOps culture is a set of practices that reduce the barriers between developers, who want to innovate and deliver faster, on the one side and, on the other side, operations, who want to guarantee the stability of production systems and the quality of the system changes they make.
DevOps culture is also the extension of agile processes (scrum, XP, and so on), which make it possible to reduce delivery times and already involve developers and business teams, but are often hindered because of the non-inclusion of Ops in the same teams.
The communication and this link between Dev and Ops does, therefore, allow a better follow-up of end-to-end production deployments and more frequent deployments of a better quality, saving money for the company.
To facilitate this collaboration and improve communication between Dev and Ops, there are several key elements in the processes to be put in place, as in the following examples:
  • More frequent application deployments with integration and continuous delivery (called CI/CD)
  • The implementation and automation of unitary and integration tests, with a process focused on Behavior-Driven Design (BDD) or Test-Driven Design (TDD)
  • The implementation of a means of collecting feedback from users
  • Monitoring applications and infrastructure
The DevOps movement is based on three axes:
  • The culture of collaboration: This is the very essence of DevOps—the fact that teams are no longer separated by silos specialization (one team of developers, one team of Ops, one team of testers, and so on), but, on the contrary, these people are brought together by making multidisciplinary teams that have the same objective: to deliver added value to the product as quickly as possible.
  • Processes: To expect rapid deployment, these teams must follow development processes from agile methodologies with iterative phases that allow for better functionality quality and rapid feedback. These processes should not only be integrated into the development workflow with continuous integration but also into the deployment workflow with continuous delivery and deployment. The DevOps process is divided into several phases:
    • The planning and prioritization of functionalities
    • Development
    • Continuous integration and delivery
    • Continuous deployment
    • Continuous monitoring
These phases are carried out cyclically and iteratively throughout the life of the project.
  • Tools: The choice of tools and products used by teams is very important in DevOps. Indeed, when teams were separated into Dev and Ops, each team used their specific tools—deployment tools for developers and infrastructure tools for Ops—which further widened communication gaps.
With teams that bring development and operations together, and with this culture of unity, the tools used must be usable and exploitable by all members.
Developers need to integrate with monitoring tools used by Ops teams to detect performance problems as early as possible and with security tools provided by Ops to protect access to various resources.
Ops, on the other hand, must automate the creation and updating of the infrastructure and integrate the code into a code manager; this is called Infrastructure as Code, but this can only be done in collaboration with developers who know the infrastructure needed for applications. Ops must also be integrated into application release processes and tools.
The following diagram illustrates the three axes of DevOps culture—the collaboration between Dev and Ops, the processes, and the use of tools:
So, we can go back to DevOps culture with Donovan Brown's definition (http://donovanbrown.com/post/what-is-devops):
"DevOps is the union of people, process, and products to enable continuous delivery of value to our end users."
The benefits of establishing a DevOps culture within an enterprise are as follows:
  • Better collaboration and communication in teams, which has a human and social impact within the company.
  • Shorter lead times to production, resulting in better performance and end user satisfaction.
  • Reduced infrastructure costs with IaC.
  • Significant time saved with iterative cycles that reduce application errors and automation tools that reduce manual tasks, so teams focus more on developing new functionalities with added business value.
For more information about DevOps culture and its impact on and transformation of enterprises, read the book by Gene Kim and Kevin Behr, The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Win, and The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations by Gene Kim, Jez Humble, Patrick Debois, and John Willis.

Implementing CI/CD and continuous deployment

We saw earlier that one of the key DevOps practices is the process of integration and continuous delivery, also called CI/CD. In fact, behind the acronyms of CI/CD, there are three practices:
  • Continuous integration (CI)
  • Continuous delivery (CD)
  • Continuous deployment
What does each of these practices correspond to? What are their prerequisites and best practices? Are they applicable to all?
Let's look in detail at each of these practices, starting with continuous integration.

Continuous integration (CI)

In the following definition given by Martin Fowler, there are three key things mentioned, members of a team, integrate, and as quickly as possible:
"Continuous Integration is a software development practice where members of a team integrate their work frequently... Each integration ...

Inhaltsverzeichnis