<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Strio</title>
    <description>The latest articles on Forem by Strio (@strio).</description>
    <link>https://forem.com/strio</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F2189%2F2e6ba5ab-66a9-4e3a-9e37-ce959d3b2e7f.png</url>
      <title>Forem: Strio</title>
      <link>https://forem.com/strio</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/strio"/>
    <language>en</language>
    <item>
      <title>Kubernetes Explained To Product Managers</title>
      <dc:creator>Lise Pleyber</dc:creator>
      <pubDate>Thu, 22 Oct 2020 15:56:03 +0000</pubDate>
      <link>https://forem.com/strio/kubernetes-explained-to-product-managers-4b1a</link>
      <guid>https://forem.com/strio/kubernetes-explained-to-product-managers-4b1a</guid>
      <description>&lt;h1&gt;
  
  
  Kubernetes explained to Product Managers
&lt;/h1&gt;

&lt;p&gt;If you're a Product Manager, a Product Owner or someone working in a tech company, &lt;strong&gt;you might have heard the words containers, Docker, Kubernetes or clusters&lt;/strong&gt; from your colleagues. Maybe you've got no clue what they're refering to, maybe you have an intuition about it, or maybe you're already familiar with the topics and concepts behind these words. &lt;/p&gt;

&lt;p&gt;As a Product Manager or a Product Owner, these concepts might be useful for you to understand. Obviously, you don't have to become a pro in Kubernetes, &lt;strong&gt;but some basic knowledge should allow you to collaborate more fluidly with your team, while being able to get an idea of the stakes&lt;/strong&gt;, either because your company is considering migrating to Kubernetes, or because they already use this technology on a daily basis. &lt;/p&gt;

&lt;p&gt;However, these concepts can easily get overly technical when you don't have a developer or devops background. When looking for clarifications online, you might end up with technical documentation mostly targeting developers, which already have some kind of understanding of the solutions, or super high-level articles describing the benefits of Kubernetes to guide decision-making. &lt;/p&gt;

&lt;p&gt;But what if you're a Product Manager and you'd like some basic understanding of the technical aspects of Kubernetes and containerized applications, while at the same time getting a clear idea of what technical and business value Kubernetes can provide to your organization?&lt;/p&gt;

&lt;p&gt;That's why we've built this extensive guide to help you get a grasp of these concepts and what they imply for your job.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why is everyone talking about Kubernetes?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://kubernetes.io/"&gt;Kubernetes&lt;/a&gt; is an open-source project initiated by Google, and launched in 2014. Google being praised for its high performing infrastructure and applications, an open-source project originating from the company is kind of a guarantee that it might be helpful to other organizations. Google has a tradition of open-source, with more than 2,000 projects launched to date. Some of them are particularly famous, like the Go language or Spinnaker (although launched by Netflix, it's been considerably extended by Google). &lt;/p&gt;

&lt;p&gt;Today, Kubernetes is no longer managed by Google, as the company passed the project to the &lt;a href="https://www.cncf.io/"&gt;Cloud Native Computing Foundation, or CNCF&lt;/a&gt;, a non-profit organization hosting critical infrastructure projects. &lt;/p&gt;

&lt;p&gt;Although launched only 6 years ago, Kubernetes is becoming a standard used by an increasing number of companies. &lt;strong&gt;78% of companies using container orchestration have chosen Kubernetes&lt;/strong&gt;, from tech companies, to large enterprises or rising startups. Think Google, Slack, The New York Times, BlaBlaCar or Huawei.&lt;/p&gt;

&lt;p&gt;There is therefore a chance that your company uses Kubernetes, considers moving to Kubernetes, or has deliberately chosen not to. In any case, this is a choice that widely impacts the tech teams, as it touches the workflow of ops and to a lesser extent, of developers. A Kubernetes migration usually takes time, from a few months to years, depending of the complexity and size of the project. &lt;/p&gt;

&lt;p&gt;This probably explains why you might have heard of the word ;)&lt;/p&gt;

&lt;h2&gt;
  
  
  So what exactly is Kubernetes?
&lt;/h2&gt;

&lt;p&gt;The name Kubernetes originates from Greek, meaning helmsman or pilot. &lt;/p&gt;

&lt;p&gt;Kubernetes defines itself as &lt;strong&gt;"an open-source system for automating deployment, scaling, and management of containerized applications."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let's break this down to understand what this means. &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Containerized applications&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Since Kubernetes orchestrates containers, let's start by examining what containers actually are. &lt;/p&gt;

&lt;p&gt;Containers have been made popular by an open-source project called &lt;a href="https://www.docker.com/"&gt;Docker&lt;/a&gt;, created in 2013. &lt;/p&gt;

&lt;p&gt;Think of the container as &lt;strong&gt;a standardized unit of software&lt;/strong&gt;. It is a way to package software into standardized units for Development, Shipment and Deployment.&lt;/p&gt;

&lt;p&gt;You can imagine containers as same-sized boxes built around your code, which allow you to manipulate them much more easily than if the code was on its own, without any standard. &lt;/p&gt;

&lt;p&gt;Thanks to this standardization, &lt;strong&gt;containers allow complex architecture to be managed much more easily&lt;/strong&gt;. These days, companies and sometimes even applications rely on multiple languages, frameworks or architectures, which creates a significant complexity. By providing a standardized package, containers simplify and accelerate the workflows and give teams freedom to use their own choice of tools, application stacks and deployment environment. In practice, this means that different containers of a same app can have different languages or architectures. If one team prefers Ruby and another Python, no problem, the application will still work. &lt;/p&gt;

&lt;p&gt;Containers have been particularly successful since they've been created and their standard is now widely used. In 2019, a CNCF survey found that &lt;strong&gt;84% of respondents were running containers in production, up 15% from the previous year&lt;/strong&gt;. To measure the speed at which containers are adopted, it is remarkable to notice that containers were only used by 23% of respondents in 2016.&lt;/p&gt;

&lt;h3&gt;
  
  
  So how do containers work?
&lt;/h3&gt;

&lt;p&gt;A container is composed of several elements. To be precise, each container has its own filesystem, CPU, memory or process space. They are fully decoupled from the architecture, which allows them to be portable. &lt;/p&gt;

&lt;p&gt;Containers don't happen by magic, they have to be built.&lt;/p&gt;

&lt;p&gt;You might hear your team mention Docker images. A Docker container image is a set of instructions made for building the container. The image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries and settings.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Why is Kubernetes needed on top of containers?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;So now that you get a view of containers, you might wonder why they're not sufficient. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Containers are great but they must be managed and orchestrated&lt;/strong&gt;. For example, if a container goes down, another container needs to start instead to avoid downtime on the app. &lt;/p&gt;

&lt;p&gt;Instead of moving containers one by one, that's where orchestration tools such as Kubernetes comes in. Kubernetes is an orchestration tool, that takes care of the orchestration and scaling of containers. Without Kubernetes, containers would be handled by hand. As you can imagine, the more the containers the more the hand work, which is not compatible with the growth of an application. &lt;/p&gt;

&lt;p&gt;Kubernetes runs these containers for you and therefore is your best ally when your application is scaling.&lt;/p&gt;

&lt;p&gt;For this reason, a lot of teams choose to complement their use of containers with Kubernetes. As long as the project remain simple (a simple website for instance), Kubernetes might be unnecessary, but it's a great addition to containers when you need more automation.&lt;/p&gt;

&lt;h3&gt;
  
  
  What makes K8S special?
&lt;/h3&gt;

&lt;p&gt;Kubernetes runs containers at scale and have the following features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Declarative&lt;/strong&gt;: Declarative refers to a model where you don't have to specify and plan exactly how things will happen. Instead, you just state what your desired outcome is, without thinking at the way it is achieved. This allows Kubernetes users to forget about the complex details, to focus only on the outcome.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automation&lt;/strong&gt;: Thanks to this declarative mode, Kubernetes achieves automation. Rather than spending countless hours working on the details of containers orchestration, Kubernetes abstracts it for you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Portable&lt;/strong&gt;: Kubernetes can be used whatever the cloud provider or the kind of infrastructure used, which means it is portable.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What are the benefits of using K8S?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Kubernetes can run anywhere&lt;/strong&gt;. It is cloud agnostic and can run on virtual machines, which means there is no vendor lock-in.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Being completely agnostic, Kubernetes can be installed on a variety of public and private clouds (think AWS, GCP, OVH), as well as on bare metal servers. This is great, since it means that you are not tied to a provider, can easily switch from one to another or even support hybrid cloud or multi cloud strategies. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes accompanies the scaling of applications and helps manage complex architectures and infrastructures&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Kubernetes allows companies to manage large applications without significant overhead. This is particularly important in a world where ops resources are scarce and difficult to find.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes allows developers to be more productive&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks to its declarative model and its ops friendly approach, Kubernetes has changed a lot how code is being deployed, allowing teams to scale and deploy faster than before. &lt;/p&gt;

&lt;h3&gt;
  
  
  Kubernetes vocabulary
&lt;/h3&gt;

&lt;p&gt;Kubernetes comes with a variety of concepts that can seem initially obscure. Without entering the details, we'll explain them to you in order to understand what Kubernetes is made of and how it's structured. &lt;/p&gt;

&lt;p&gt;Basically, Kubernetes is made of clusters, nodes and pods.&lt;/p&gt;

&lt;p&gt;When you deploy Kubernetes, &lt;strong&gt;you get a cluster&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Inside this cluster, you can find &lt;strong&gt;nodes&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;You deploy &lt;strong&gt;pods on these nodes&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For those willing to go further, here are some more explanations on each of these components: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cluster:&lt;/strong&gt; It is a collection of hosts (servers) that helps you to aggregate their available resources. That includes ram, CPU, ram, disk, and their devices into a usable pool.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Nodes:&lt;/strong&gt; Nodes are controlled by the control plane. Nodes are a virtual or physical machine. Nodes are the machinery needed to deploy pods. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Pods:&lt;/strong&gt; Pods are the smallest units in Kubernetes. A pod is a group of one or more containers, with shared storage/network resources, and a specification for how to run the containers.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Well done! If you've read this guide, you are now equipped to &lt;strong&gt;understand the basics of containers, orchestration, Kubernetes and what it can bring to your organization&lt;/strong&gt;. This will allow you to be on the same page than your colleagues and hopefully, will be useful in your day to day job! &lt;/p&gt;

&lt;p&gt;Want to go further? Here is a set of beginners resources about Kubernetes.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kubernetes.io/docs/home/"&gt;Kubernetes documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hackernoon.com/why-and-when-you-should-use-kubernetes-8b50915d97d8"&gt;Why and when you should use Kubernetes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/google-cloud/kubernetes-101-pods-nodes-containers-and-clusters-c1509e409e16"&gt;More about Kubernetes components&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=F-p_7XaEC84"&gt;A Youtube Kubernetes tutorial for beginners&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=4ht22ReBjno"&gt;The illustrated children's guide to Kubernetes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>kubernetes</category>
    </item>
    <item>
      <title>A New DevOps Workflow: On-Demand Environments</title>
      <dc:creator>Lise Pleyber</dc:creator>
      <pubDate>Thu, 20 Aug 2020 08:25:29 +0000</pubDate>
      <link>https://forem.com/strio/a-new-devops-workflow-on-demand-environments-10ka</link>
      <guid>https://forem.com/strio/a-new-devops-workflow-on-demand-environments-10ka</guid>
      <description>&lt;p&gt;One of the unavoidable question when designing a development workflow in a company is the management of cloud environments. Environments are mostly needed in the development process to perform tests that are either too heavy to be run locally, or that use managed cloud services. Yet, they can also be required to perform demos to customers, for example.&lt;/p&gt;

&lt;p&gt;Regarding cloud environments, most of the teams still work under the same paradigm as before the cloud era. They have static environments - a set of dedicated resources running continuously. However, thanks to the elasticity offered by the cloud, a new paradigm is getting adopted by top performers: on-demand cloud environments. It is time-consuming to set up the automation needed to reach that goal, but it allows teams to reduce significantly their cycle time (the time from the moment a new development branch is created, until it is released in production) and deploy safer code.&lt;/p&gt;

&lt;p&gt;In this post, I will present and analyze these two different configurations adopted regarding cloud environments in companies, the usual static environments and the deployment of dynamic ones.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Static cloud environments&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;In companies that have static cloud environments, developers usually work on their machine — i.e. the local environment, and then make a pull / merge request when they feel ready to push it to the staging environment. The code must usually go through the CI and be reviewed before being deployed to staging, either automatically through a CD pipeline or manually by the DevOps team. The number of staging environments varies from one company to another, there can be from one staging for the whole tech team up to one per feature team. In this second case there is usually in addition a pre-prod environment which is the last step before the release to production.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.strio.co%2Fblog%2Fcontent%2Fimages%2F2020%2F08%2FUntitled.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.strio.co%2Fblog%2Fcontent%2Fimages%2F2020%2F08%2FUntitled.png" alt="https://www.strio.co/blog/content/images/2020/08/Untitled.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In a classic organization, cloud environments are shared.&lt;/p&gt;

&lt;p&gt;Because staging environments are shared, issues arise quickly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every deployment on staging needs to be as foolproof as possible, because if the staging breaks it would slow down the whole team. Thus, it takes time for the code to go through the different stages and arrive to Production. It needs first to pass the CI and to be reviewed. Even for a functional preview with the product manager, one's code needs to pass those steps — slowing down the development process.&lt;/li&gt;
&lt;li&gt;Staging environments are rarely available. As you can't perform two tests simultaneously, there is usually a "waiting list" to test, slowing down the development process.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Since every developer is only given a specific slot on Staging, they only have time to perform a limited number of test, in order not to block the others. This in turn increases the risk of error in Production.&lt;/p&gt;

&lt;p&gt;Thus, a bottleneck emerges. It's especially true if the number of developers per environment is important. But having multiple environments is a costly solution as more static environments means a bigger cloud bill.&lt;/p&gt;

&lt;p&gt;Moreover, teams in this configuration usually have a low level of automation. Therefore, significant time — usually from the DevOps team, is dedicated to maintain those environments: clean the environments after the tests, provision them with recent data, and update features from every teams on each environment.&lt;/p&gt;

&lt;p&gt;To sum up, having static environments is the easiest system to set up and works well for small teams that have a low level of automation. However, it can quickly create a bottleneck in the development process and be time-consuming for the DevOps team at scale.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Dynamic cloud environments&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The best performers in deployment automation set up internal tools to allow developers to spin-up isolated cloud environments from scratch in just a few minutes. Team members can usually deploy a whole environment (containers and dependencies — databases, cache, etc.) on a &lt;a href="https://kubernetes.io/" rel="noopener noreferrer"&gt;Kubernetes&lt;/a&gt; namespace. This approach is becoming increasingly popular. See for example this &lt;a href="https://engineering.dollarshaveclub.com/qa-environments-on-demand-with-kubernetes-5a571b4e273c" rel="noopener noreferrer"&gt;article about how Dollar Shave Club implemented it in 2017&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Dynamic environments have a lot of benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The deployed environments are completely isolated — they are not linked to external components, making it risk-free to use them.&lt;/li&gt;
&lt;li&gt;Environments can be launched by anyone, and can be shared or personal — solving the issues cited above.&lt;/li&gt;
&lt;li&gt;Environments are deployed for a specific task and destroyed once achieved. They don't need to be cleaned and maintained.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;How does it work? Usually, you deploy one environment per branch, on which you test before deploying to a shared staging environment. It's useful for functional previews with product managers, code reviews or complex automated testing (integration/load testing). There are a lot of possibilities, on-demand environments can even be use to set up demos.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.strio.co%2Fblog%2Fcontent%2Fimages%2F2020%2F08%2FUntitled--1-.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.strio.co%2Fblog%2Fcontent%2Fimages%2F2020%2F08%2FUntitled--1-.png" alt="https://www.strio.co/blog/content/images/2020/08/Untitled--1-.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the most agile organizations, each developer deploys his own isolated environment.&lt;/p&gt;

&lt;p&gt;On-demand environments encourage the autonomy of developers. They're the owner of the code at any time, from its writing, to its testing and finally its push to Production. This reduces the cycle time and helps ensure that the code deployed to Staging is bug-free. Finally, at some point it decreases the cloud bill compared to having one staging environment per team.&lt;/p&gt;

&lt;p&gt;However, it's complex for companies to adopt on-demand environments. Indeed, implementing this kind of solution internally is time-consuming for the DevOps team — usually it's a several months project to set up this workflow. Moreover, it's not enough to be technically able to spin up environments in minutes, some other questions need to be answered to make the solution useful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to test a feature which spans multiple repositories — i.e. how to deploy the right version of each service on your environment?&lt;/li&gt;
&lt;li&gt;How to provision these environments with data while ensuring that they are still isolated?&lt;/li&gt;
&lt;li&gt;How to ensure that the organization's members — developers but also product managers and sales — are autonomous on the deployment of environments?&lt;/li&gt;
&lt;li&gt;How to manage the cost of this approach? If environments aren't well sized, if some environments are "forgotten", or if the whole application is deployed each time, this approach becomes pretty expensive.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Answering all these questions through on-demand environments makes it a significant project for the DevOps to develop and maintain.&lt;/p&gt;

&lt;p&gt;At Strio, we firmly believe in the benefits of on-demand environments for teams constantly wishing to improve their product at fast pace. However, we think it shouldn't be limited to the teams who have the resources to dedicate a whole team to set it up. That's why we decided to develop a turn-key solution that DevOps can configure and provide to the development team. &lt;a href="https://app.strio.co/auth/beta" rel="noopener noreferrer"&gt;Try it now&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>devops</category>
      <category>testing</category>
    </item>
    <item>
      <title>What is GitOps and why it could be great for your team</title>
      <dc:creator>Alexis Tacnet</dc:creator>
      <pubDate>Wed, 15 Apr 2020 18:11:56 +0000</pubDate>
      <link>https://forem.com/strio/what-is-gitops-and-why-it-could-be-great-for-your-team-45k3</link>
      <guid>https://forem.com/strio/what-is-gitops-and-why-it-could-be-great-for-your-team-45k3</guid>
      <description>&lt;p&gt;Have you heard of GitOps? This newly coined term describes an innovative pattern in configuration management, used to scale deployment on Kubernetes, especially in a microservices environment.&lt;/p&gt;

&lt;p&gt;GitOps refers to something that you might already have implemented in your company. "Everyone who successfully did infrastructure-as-code… is the true creator of the concept of GitOps" says Priyanka Sharma, evangelist at Gitlab. GitOps allows developers to perform more tasks related to infrastructure, by &lt;strong&gt;relying on familiar git-based workflows and pull requests.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Currently used by companies such as Weaveworks or the Financial Times, the GitOps pattern can bring some great benefits to your organization. Let's dig into this!&lt;/p&gt;

&lt;h2&gt;
  
  
  What is GitOps?
&lt;/h2&gt;

&lt;p&gt;GitOps is "pushing code, not containers", says Alexis Richardson, CEO of WeaveWorks. The underlying idea behind GitOps is that &lt;strong&gt;changes to a cloud-native system can be implemented through Git&lt;/strong&gt;. It implies that a version control system - such as Git - hosts all configuration and code to deploy on Kubernetes. It is used for automatically creating, updating and deleting system resources such as containers, infrastructure, proxies, ...&lt;/p&gt;

&lt;p&gt;With GitOps, developers can manage their operational workflow and deploy on Kubernetes in the same way they perform merge requests or pull requests. While changes to Kubernetes were done previously through manual actions, the GitOps pattern brings automation to the deployment process.&lt;/p&gt;

&lt;h2&gt;
  
  
  How GitOps works and what it implies for your organization
&lt;/h2&gt;

&lt;p&gt;GitOps ensures that the state of an application or service is reproducible based on the state of a Git repository. Once a pull request is approved and merged, it modifies the state of the repository that will be the trigger to automatically reconfigure and synchronize the live application and its infrastructure.&lt;/p&gt;

&lt;p&gt;Let's imagine you want to create a deployment on Kubernetes. You can for example implement a GitOps pattern with &lt;strong&gt;Helm charts&lt;/strong&gt;: you put your charts in a subfolder of your service Git repository, and every time it changes, you can ask for a deployment of the new Helm chart. Basically, you trigger deployments with pull requests and merges.&lt;/p&gt;

&lt;p&gt;In order to listen to the changes and trigger a deployment, you need what it is called a &lt;strong&gt;controller&lt;/strong&gt;. This controller will hook to your Git repository and synchronize the deployments every time it is needed. For instance, a controller such as FluxCD is the operator responsible for listening to changes and deploying them to your Kubernetes clusters.&lt;/p&gt;

&lt;p&gt;GitOps is not limited to Helm charts only. It can also be a useful pattern for plain Kubernetes manifests, Ksonnet applications, Jsonnet files or even Terraform files and more globally, Infrastructure-as-Code. Having an agent (your controller) fetching your changes where they are defined allows you to set up Continuous Deployment processes easily and quickly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits of GitOps
&lt;/h2&gt;

&lt;p&gt;GitOps provides significant benefits to your team.&lt;/p&gt;

&lt;h3&gt;
  
  
  Improved productivity and speed
&lt;/h3&gt;

&lt;p&gt;GitOps allows developers to work with tools they already use and methods they already rely on. Because developers are already familiar with Git, they are able to participate more efficiently to the DevOps process. This common language increases their productivity and avoids useless back and forth with the Ops team.&lt;/p&gt;

&lt;h3&gt;
  
  
  Better visibility and auditability
&lt;/h3&gt;

&lt;p&gt;GitOps allows for more visibility, transparency and clarity by relying on a central repository. GitOps provides a single source of truth through the version control system, allowing to track changes and issues easily. Teams can easily review the history of changes and identify where an unexpected behavior occurred, which can be of great help in the case of an audit for instance.&lt;/p&gt;

&lt;h3&gt;
  
  
  More security and reliability
&lt;/h3&gt;

&lt;p&gt;GitOps brings more security to your infrastructure. Git has strong correctness and security guarantees and it allows an easy identification of authorship and origin. This creates a secure and correct definition of what the desired state of the cluster is.&lt;/p&gt;

&lt;p&gt;In case a security breach occurs, GitOps enables the recreation of a new system that is independent from the compromised one.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reduced time to recovery
&lt;/h3&gt;

&lt;p&gt;Since you have a single source of truth in Git, it is much easier to identify and troubleshoot cluster failures. Furthermore, GitOps allows automatic rollbacks, which means you can simply revert any change that caused a failure.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cost effective
&lt;/h3&gt;

&lt;p&gt;Less downtime and a much better productivity means that IT spendings are used more wisely and with more efficiency. Your team is able to ship features faster and more safely, while dowtime is significantly reduced.&lt;/p&gt;

&lt;p&gt;As you can see, GitOps is a very powerful way of creating and managing your modern cloud infrastructure. GitOps can generate many benefits to your team including improved productivity, visibility and system reliability.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.strio.co"&gt;Strio&lt;/a&gt;, the current tool I'm working on, is based on this pattern, making it even more efficient. Strio allows you to set up more easily your GitOps process: our tool generates, manages and monitors all your pipeline configuration files in your Git repositories, making it a breeze to manage for SRE teams and easy to configure for everyone in the engineering team.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>gitops</category>
    </item>
  </channel>
</rss>
