{"id":55077,"date":"2020-07-23T16:40:03","date_gmt":"2020-07-23T13:40:03","guid":{"rendered":"https:\/\/www.altoros.com\/blog\/?p=55077"},"modified":"2020-07-23T16:40:03","modified_gmt":"2020-07-23T13:40:03","slug":"maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops","status":"publish","type":"post","link":"https:\/\/www.altoros.com\/blog\/maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops\/","title":{"rendered":"Maturity of App Deployments on Kubernetes: From Manual to Automated Ops"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_79_2 counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.altoros.com\/blog\/maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops\/#Different_stages_of_maturity\" >Different stages of maturity<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.altoros.com\/blog\/maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops\/#The_beginner_stage\" >The beginner stage<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.altoros.com\/blog\/maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops\/#The_intermediate_stage\" >The intermediate stage<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.altoros.com\/blog\/maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops\/#The_advanced_stage\" >The advanced stage<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.altoros.com\/blog\/maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops\/#The_expert_stage\" >The expert stage<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.altoros.com\/blog\/maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops\/#AWS_deployment_tools\" >AWS deployment tools<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.altoros.com\/blog\/maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops\/#Related_slides\" >Related slides<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.altoros.com\/blog\/maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops\/#Further_reading\" >Further reading<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.altoros.com\/blog\/maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops\/#About_the_experts\" >About the experts<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Different_stages_of_maturity\"><\/span>Different stages of maturity<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><a href=\"https:\/\/www.altoros.com\/blog\/tag\/kubernetes\/\">Kubernetes<\/a> is ubiquitous in the ability to run on any platform. This way, organizations can target customers and shift their workloads wherever they need to be run. However, Kubernetes itself is a massive platform, so businesses looking to adopt the technology will likely face some challenges associated with:<\/p>\n<ul>\n<li style=\"margin-bottom: 6px;\">container ad platform management<\/li>\n<li style=\"margin-bottom: 6px;\">complexities of <a href=\"https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/\">configuration<\/a><\/li>\n<li style=\"margin-bottom: 6px;\"><a href=\"https:\/\/www.altoros.com\/blog\/running-stateful-apps-on-kubernetes-with-statefulsets\/\">stateful apps<\/a> requiring additional architectural solutions<\/li>\n<li>the necessity to strike balance between containers and managed services<\/li>\n<\/ul>\n<p>To alleviate these challenges, companies can make use of continuous integration and continuous delivery (CI\/CD). Implementations of CI\/CD pipelines may vary from case to case, but there are some common goals:<\/p>\n<ul>\n<li style=\"margin-bottom: 6px;\">accelerating the delivery of new, high-quality services<\/li>\n<li style=\"margin-bottom: 6px;\">simplifying environment management<\/li>\n<li style=\"margin-bottom: 6px;\">reducing the impact of code changes<\/li>\n<li style=\"margin-bottom: 6px;\">automating operations<\/li>\n<li style=\"margin-bottom: 6px;\">gaining insights across resources and apps<\/li>\n<li>protecting customers and the business<\/li>\n<\/ul>\n<div id=\"attachment_55307\" style=\"width: 130px\" class=\"wp-caption alignright\"><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/07\/barry-williams.png\"><img decoding=\"async\" aria-describedby=\"caption-attachment-55307\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/07\/barry-williams-150x150.png\" alt=\"\" width=\"120\" class=\"size-thumbnail wp-image-55307\" \/><\/a><p id=\"caption-attachment-55307\" class=\"wp-caption-text\"><small>Barry Williams<\/small><\/p><\/div>\n<p>Depending on the maturity of a Kubernetes deployment, there exist scenarios that favor either manual or automated operations. <a href=\"https:\/\/www.linkedin.com\/in\/barryewilliams42\/\" rel=\"noopener noreferrer\" target=\"_blank\">Barry Williams<\/a> and <a href=\"https:\/\/www.linkedin.com\/in\/michael-jacobi-a32117116\" rel=\"noopener noreferrer\" target=\"_blank\">Michael Jacobi<\/a> of Altoros, as well as <a href=\"https:\/\/www.linkedin.com\/in\/curtisrissi\/\" rel=\"noopener noreferrer\" target=\"_blank\">Curtis Rissi<\/a> of AWS, discussed four stages of maturity in Kubernetes deployments during a recent <a href=\"https:\/\/www.brighttalk.com\/webcast\/11925\/421839\" rel=\"noopener noreferrer\" target=\"_blank\">webinar<\/a>. The speakers also explained how the implementation of CI\/CD in each stage affects application deployment from manual to fully automated.<\/p>\n<blockquote><p>&#8220;Kubernetes is all about velocity and being able to deliver software very quickly. In order to keep up with that velocity, you need to have automation in place that can thoroughly test everything you are deploying, because you do not have time for manual testing.&#8221; \u2014Barry Williams, Altoros<\/p><\/blockquote>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"The_beginner_stage\"><\/span>The beginner stage<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>In this stage, manual deployments are common as applications are still quite simple. It is also not unusual for organizations to have a monolithic architecture, which can later serve as a starting point when making the shift towards microservices.<\/p>\n<p>While deployments are still done manually at this stage of Kubernetes maturity, there are still some benefits:<\/p>\n<ul>\n<li style=\"margin-bottom: 6px;\">The barrier to entry is low.<\/li>\n<li style=\"margin-bottom: 6px;\">Organizations do not need complex infrastructure.<\/li>\n<li style=\"margin-bottom: 6px;\">Manual deployments are faster for one-off processes.<\/li>\n<li style=\"margin-bottom: 6px;\">The support team does not need to learn additional products.<\/li>\n<li style=\"margin-bottom: 6px;\">The beginner stage is good for learning Kubernetes and can serve as an entry point for automation.<\/li>\n<\/ul>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/07\/Kubernetes-Maturity-Model-Beginner-Deployment-v3.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/07\/Kubernetes-Maturity-Model-Beginner-Deployment-v3-1024x576.png\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-55299\" \/><\/a><small>Manual deployments in the beginner stage (<a href=\"https:\/\/www.slideshare.net\/altoros\/journey-through-four-stages-of-kubernetes-deployment-maturity-236853705\" rel=\"noopener noreferrer\" target=\"_blank\">Image credit<\/a>)<\/small><\/center><\/p>\n<blockquote><p>&#8220;At this point, developers, operators, and QA are still different teams. The developers make a piece of code and throw it over the wall. The operators will pick up on that, manually edit some YAML files, and then throw that over the wall. QA then does their testing. The problem here is the turnaround time.&#8221; \u2014Barry Williams, Altoros<\/p><\/blockquote>\n<p>Due to the nature of manual deployments, there are also challenges:<\/p>\n<ul>\n<li style=\"margin-bottom: 6px;\">Manual updates and rollbacks increase the risk of configuration mistakes.<\/li>\n<li style=\"margin-bottom: 6px;\">Management is harder and requires human intervention.<\/li>\n<li style=\"margin-bottom: 6px;\">Hardcoded values in configuration files require significant effort to update.<\/li>\n<li style=\"margin-bottom: 6px;\">There is a potential lack of standardization.<\/li>\n<li style=\"margin-bottom: 6px;\">Rollbacks and repairs take longer.<\/li>\n<li>Microservices are more complex to maintain.<\/li>\n<\/ul>\n<p><\/p>\n<p>Despite the lack of automation, manual deployments are still viable in certain scenarios:<\/p>\n<div id=\"attachment_55308\" style=\"width: 130px\" class=\"wp-caption alignright\"><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/07\/michael-jacobi.png\"><img decoding=\"async\" aria-describedby=\"caption-attachment-55308\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/07\/michael-jacobi-150x150.png\" alt=\"\" width=\"120\" class=\"size-thumbnail wp-image-55308\" \/><\/a><p id=\"caption-attachment-55308\" class=\"wp-caption-text\"><small>Michael Jacobi<\/small><\/p><\/div>\n<ul>\n<li style=\"margin-bottom: 6px;\">working on proof of concepts<\/li>\n<li style=\"margin-bottom: 6px;\">running environments with infrequent updates or simple architecture<\/li>\n<li>having no strict audit and compliance requirements<\/li>\n<\/ul>\n<blockquote><p>&#8220;Manual deployments are human-driven. Developers are manually building their applications and pushing container images into a registry, operators are handcrafting YAML files, and QA are testing manually. It is certainly suitable for some scenarios, especially when you are just starting.&#8221; \u2014Michael Jacobi, Altoros<\/p><\/blockquote>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"The_intermediate_stage\"><\/span>The intermediate stage<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Once organizations are in the intermediate stage, there are still manual processes, but some level of automation is introduced to help perform more frequent updates. The addition of automation creates a deployment standard, which helps if there are compliance requirements.<\/p>\n<p>The benefits of basic automated deployments at this stage include:<\/p>\n<ul>\n<li style=\"margin-bottom: 6px;\">Clusters are easier to create.<\/li>\n<li style=\"margin-bottom: 6px;\">Test automation and metrics can be embedded in the deployment cycle.<\/li>\n<li style=\"margin-bottom: 6px;\">Rollbacks and repairs are faster.<\/li>\n<li style=\"margin-bottom: 6px;\">Basic automated deployments can generally be run by Tier 1 support teams.<\/li>\n<li>Deployments can be integrated with project-tracking products.<\/li>\n<\/ul>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/07\/Kubernetes-Maturity-Model-Intermediate-Deployment-v3.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/07\/Kubernetes-Maturity-Model-Intermediate-Deployment-v3-1024x576.png\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-55300\" \/><\/a><small>Basic automated deployments in the intermediate stage (<a href=\"https:\/\/www.slideshare.net\/altoros\/journey-through-four-stages-of-kubernetes-deployment-maturity-236853705\" rel=\"noopener noreferrer\" target=\"_blank\">Image credit<\/a>)<\/small><\/center><\/p>\n<blockquote><p>&#8220;Developers have a CI process to ensure that your container images are built the same way every time. Operators may still be manually crafting some YAML files, but you may also have a process where CD is beginning to grow. You can have an automated process for applying YAML changes. What I usually see is that the CD process is actually the CI just automating <code style=\"color: black; background-color: #e6e6e6;\">kubectl apply<\/code>, so it is still pretty basic. Then, you have QA come in for testing.&#8221; \u2014Barry Williams, Altoros<\/p><\/blockquote>\n<p>The intermediate stage of Kubernetes maturity has its own challenges:<\/p>\n<ul>\n<li style=\"margin-bottom: 6px;\">A skilled team is required to integrate CD with existing systems.<\/li>\n<li style=\"margin-bottom: 6px;\">Rollbacks are still partially manual without proper testing and monitoring.<\/li>\n<li style=\"margin-bottom: 6px;\">Additional resources are required to maintain the CD solution.<\/li>\n<li style=\"margin-bottom: 6px;\">Secrets need to be injected into the pipeline.<\/li>\n<\/ul>\n<p>Adding basic automated deployments make sense in the following scenarios:<\/p>\n<div id=\"attachment_55309\" style=\"width: 130px\" class=\"wp-caption alignright\"><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/07\/curtis-rissi.png\"><img decoding=\"async\" aria-describedby=\"caption-attachment-55309\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/07\/curtis-rissi-150x150.png\" alt=\"\" width=\"120\" class=\"size-thumbnail wp-image-55309\" \/><\/a><p id=\"caption-attachment-55309\" class=\"wp-caption-text\"><small>Curtis Rissi<\/small><\/p><\/div>\n<ul>\n<li style=\"margin-bottom: 6px;\">running environments with frequent deployments<\/li>\n<li style=\"margin-bottom: 6px;\">operating Agile teams<\/li>\n<li style=\"margin-bottom: 6px;\">having audit and compliance requirements<\/li>\n<li style=\"margin-bottom: 6px;\">deploying complex applications<\/li>\n<li style=\"margin-bottom: 6px;\">running multiple environments (development, stage, and production)<\/li>\n<\/ul>\n<blockquote><p>&#8220;The key thing here is that you are taking the low-hanging fruit, the easiest portions to automate, and starting automation. You are giving yourself a foundation that you can then iterate on and build some of the more complicated things.&#8221; \u2014Curtis Rissi, AWS<\/p><\/blockquote>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"The_advanced_stage\"><\/span>The advanced stage<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The advanced stage of Kubernetes maturity introduces <a href=\"https:\/\/en.wikipedia.org\/wiki\/Blue-green_deployment\" rel=\"noopener noreferrer\" target=\"_blank\">blue-green deployments<\/a> with Canary and automated testing. According to Curtis, the idea behind Canary is to test with an actual production server. A traditional blue-green deployment is a straight cutover, where you spin up two environments. One is running the current version, the other the new version. With Canary in that mix, you still have both environments spun up, but you\u2019re only testing a small portion and you ease the cutover.<\/p>\n<p>The benefits of largely automated deployments at this stage include:<\/p>\n<ul>\n<li style=\"margin-bottom: 6px;\">Organizations can deploy anytime with predictable or no downtime.<\/li>\n<li style=\"margin-bottom: 6px;\">Rollbacks are faster and controlled.<\/li>\n<li style=\"margin-bottom: 6px;\">Customer experience is better.<\/li>\n<\/ul>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/07\/Kubernetes-Maturity-Model-Advanced-Deployment-v3.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/07\/Kubernetes-Maturity-Model-Advanced-Deployment-v3-1024x576.png\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-55301\" \/><\/a><small>Largely automated deployments in the advanced stage (<a href=\"https:\/\/www.slideshare.net\/altoros\/journey-through-four-stages-of-kubernetes-deployment-maturity-236853705\" rel=\"noopener noreferrer\" target=\"_blank\">Image credit<\/a>)<\/small><\/center><\/p>\n<blockquote><p>&#8220;In the intermediate level, you\u2019re probably using your CI tool for CD. At this level, you have to get a specialized tool for CD. Additionally, you are going to be moving towards a DevOps model. Developers, operators, and QA engineers start to become the same person or at least the same team, where people are working together to perform different functions, but they\u2019re doing it highly coupled.&#8221; \u2014Barry Williams, Altoros<\/p><\/blockquote>\n<p>The challenge in this stage of maturity is getting DevOps used to the combination of blue-green deployment and Canary. Once achieved, DevOps engineers have more time to focus on creating new features.<\/p>\n<p>Scenarios where largely automated deployments come useful are:<\/p>\n<ul>\n<li style=\"margin-bottom: 6px;\">running under strict service-level agreements<\/li>\n<li style=\"margin-bottom: 6px;\">running very large deployments<\/li>\n<li style=\"margin-bottom: 6px;\">having limited deployment personnel<\/li>\n<\/ul>\n<blockquote><p>&#8220;The key here is to not treat it as a separate production environment, but more like production plus. In order to get the signal from the noise and get that one instance out of all the monitoring and logging from the rest, you have to be able to single it out. Otherwise, an error might be buried under the rest of that production environment. You want to treat that as the test, and if everything goes well, expand to another.&#8221; \u2014Curtis Rissi, AWS<\/p><\/blockquote>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"The_expert_stage\"><\/span>The expert stage<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The final stage of maturity involves full automation and advanced routing. The expert stage also introduces the concept of GitOps, which according to Curtis, means that everything is in a declarative state in versioned artifacts, so the environment itself describes how it should run.<\/p>\n<p><a href=\"https:\/\/www.altoros.com\/blog\/using-istio-to-unify-microservices-with-a-service-mesh-on-kubernetes\/\">Service mesh<\/a> is also introduced at this stage. It provides advanced routing through more granular control over services. Service mesh also enables policy enforcement between services.<\/p>\n<p>Overall, fully automated deployments provide several of the following benefits:<\/p>\n<ul>\n<li style=\"margin-bottom: 6px;\">declarative, versioned artifacts<\/li>\n<li style=\"margin-bottom: 6px;\">granular control over a data flow<\/li>\n<ul>\n<li style=\"margin-bottom: 6px;\">weighted traffic distribution<\/li>\n<li style=\"margin-bottom: 6px;\">request limits<\/li>\n<li style=\"margin-bottom: 6px;\">circuit breakers<\/li>\n<\/ul>\n<li style=\"margin-bottom: 6px;\">enhanced security<\/li>\n<ul>\n<li style=\"margin-bottom: 6px;\">mutual TLS<\/li>\n<li style=\"margin-bottom: 6px;\">access control<\/li>\n<\/ul>\n<li style=\"margin-bottom: 6px;\">enhanced observability<\/li>\n<ul>\n<li style=\"margin-bottom: 6px;\">distributing tracing<\/li>\n<li style=\"margin-bottom: 6px;\">service metrics<\/li>\n<\/ul>\n<li style=\"margin-bottom: 6px;\">fault injection testing<\/li>\n<\/ul>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/07\/Kubernetes-Maturity-Model-Expert-Deployment-v3.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/07\/Kubernetes-Maturity-Model-Expert-Deployment-v3-1024x576.png\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-55302\" \/><\/a><small>Fully automated deployments in the expert stage (<a href=\"https:\/\/www.slideshare.net\/altoros\/journey-through-four-stages-of-kubernetes-deployment-maturity-236853705\" rel=\"noopener noreferrer\" target=\"_blank\">Image credit<\/a>)<\/small><\/center><\/p>\n<blockquote><p>&#8220;The main difference in this stage is that you will be using a GitOps tool. Inside Kubernetes, we now have a GitOps Operator that listens to a Git repository. Developers, operators, and QA engineers push changes to this Git repository, and the GitOps Operator takes that information and makes it a reality.&#8221; \u2014Barry Williams, Altoros<\/p><\/blockquote>\n<p>Naturally, the addition of service mesh itself is the challenge as it adds complexity to the overall architecture and may have some performance implications. That said, service mesh is ideal when running such scenarios as:<\/p>\n<ul>\n<li style=\"margin-bottom: 6px;\">maximizing cost and time efficiencies<\/li>\n<li style=\"margin-bottom: 6px;\">deploying complex microservices-based apps with dependencies<\/li>\n<li style=\"margin-bottom: 6px;\">running advanced security protocols<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"AWS_deployment_tools\"><\/span>AWS deployment tools<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>In order to help with organizations get started with deployment automation, Curtis shared a few tools and services from AWS.<\/p>\n<ul>\n<li style=\"margin-bottom: 6px;\"><a href=\"https:\/\/aws.amazon.com\/codecommit\/\" rel=\"noopener noreferrer\" target=\"_blank\">CodeCommit<\/a> is a fully managed source control service that hosts secure Git-based repositories.<\/li>\n<li style=\"margin-bottom: 6px;\"><a href=\"https:\/\/aws.amazon.com\/codebuild\/\" rel=\"noopener noreferrer\" target=\"_blank\">CodeBuild<\/a> is a CI service that compiles source code, runs tests, and produces software. <\/li>\n<li style=\"margin-bottom: 6px;\"><a href=\"https:\/\/aws.amazon.com\/codepipeline\/\" rel=\"noopener noreferrer\" target=\"_blank\">CodePipeline<\/a> is a CD service for automating release pipelines.<\/li>\n<li style=\"margin-bottom: 6px;\"><a href=\"https:\/\/aws.amazon.com\/codedeploy\/\" rel=\"noopener noreferrer\" target=\"_blank\">CodeDeploy<\/a> is a service that automates software deployments to various compute services.<\/li>\n<li style=\"margin-bottom: 6px;\"><a href=\"https:\/\/aws.amazon.com\/xray\/\" rel=\"noopener noreferrer\" target=\"_blank\">X-Ray<\/a> is an introspection tool that helps developers analyze and debug applications.<\/li>\n<li style=\"margin-bottom: 6px;\"><a href=\"https:\/\/aws.amazon.com\/cloudwatch\/\" rel=\"noopener noreferrer\" target=\"_blank\">CloudWatch<\/a> is a logging and monitoring tool.<\/li>\n<\/ul>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/07\/Kubernetes-Maturity-Model-AWS-v3.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/07\/Kubernetes-Maturity-Model-AWS-v3-1024x576.png\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-55303\" \/><\/a><small>Software release steps with AWS tooling (<a href=\"https:\/\/www.slideshare.net\/altoros\/journey-through-four-stages-of-kubernetes-deployment-maturity-236853705\" rel=\"noopener noreferrer\" target=\"_blank\">Image credit<\/a>)<\/small><\/center><\/p>\n<p>Regardless of which tools or services an organization use, being able to fully automate a deployment through CI\/CD should be the goal. Businesses that follow this practice are able to ship faster and develop more features.<\/p>\n<blockquote><p>&#8220;As people transition to more automated deployments, they will see 5x less failure rates, because there are less manual operations. The rate at which you can get change to your customers goes up to 440x faster from commit to deploy. If things are going more safely and quickly, you can make 46x more frequent deployments. You also spend less time on undifferentiated heavy lifting and 44% more time on feature sets.&#8221; \u2014Curtis Rissi, AWS<\/p><\/blockquote>\n<p>Automating makes deploying to production trivial. Since everything is delivered quickly, failure is no longer something to fear and becomes a natural part of the process.<\/p>\n<p>Want details? Watch the <a href=\"https:\/\/www.brighttalk.com\/webcast\/11925\/421839\" rel=\"noopener noreferrer\" target=\"_blank\">webinar<\/a>!<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Related_slides\"><\/span>Related slides<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><center><iframe loading=\"lazy\" src=\"\/\/www.slideshare.net\/slideshow\/embed_code\/key\/kSj0opZESyGAIQ\" width=\"595\" height=\"485\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" style=\"border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;\" allowfullscreen> <\/iframe><\/center><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Further_reading\"><\/span>Further reading<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/automating-event-based-continuous-delivery-on-kubernetes-with-keptn\/\">Automating Event-Based Continuous Delivery on Kubernetes with keptn<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/automating-deployment-of-pivotal-container-service-on-aws\/\">Automating Deployment of Pivotal Container Service on AWS<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/rule-driven-automation-on-kubernetes-with-autopilot-monitoring\/\">Rule-Driven Automation on Kubernetes with Autopilot Monitoring<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"About_the_experts\"><\/span>About the experts<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><a href=\"https:\/\/www.linkedin.com\/in\/curtisrissi\/\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/07\/curtis-rissi-v2-150x150.png\" alt=\"\" width=\"120\" class=\"alignright size-thumbnail wp-image-55296\" \/><\/a><\/p>\n<p><small><a href=\"https:\/\/www.linkedin.com\/in\/curtisrissi\/\" rel=\"noopener noreferrer\" target=\"_blank\">Curtis Rissi<\/a> is Senior Solutions Architect at AWS. Over the past 15 years, he has worked at multiple levels of IT, including development, infrastructure, architecture, and management. Curtis is highly skilled at seeing connections between technologies and putting them together in ways that solve very complex problems. He prides himself on his ability to develop the long-term vision and creating simple, intuitive solutions that address real business needs.<\/small><\/p>\n<p>&nbsp;<br \/>\n<a href=\"https:\/\/www.linkedin.com\/in\/barryewilliams42\/\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/07\/Barry-Williams-Altoros.png\" alt=\"\" width=\"120\" class=\"alignright size-full wp-image-55106\" \/><\/p>\n<p><small><a href=\"https:\/\/www.linkedin.com\/in\/barryewilliams42\/\" rel=\"noopener noreferrer\" target=\"_blank\">Barry Williams<\/a> is Cloud Solutions Architect at Altoros. He has designed and implemented the architecture for microservice applications. Barry focuses on automation in all things and cloud platforms. He is an expert in Kubernetes, Cloud Foundry, Docker, Linux, Concourse CI, ELK Stack, Shell Script, Python, Java, Go, Ruby, Agile, Extreme Programming, etc. Barry is also a Google Cloud Certified Professional Cloud Architect.<br \/>\n<\/small><\/p>\n<p>&nbsp;<br \/>\n<a href=\"https:\/\/www.linkedin.com\/in\/michael-jacobi-a32117116\/\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/07\/Michael-Jacobi.png\" alt=\"\" width=\"120\" class=\"alignright size-full wp-image-55107\" \/><\/a><\/p>\n<p><small><a href=\"https:\/\/www.linkedin.com\/in\/michael-jacobi-a32117116\/\" rel=\"noopener noreferrer\" target=\"_blank\">Michael Jacobi<\/a> is Director of Global Field Services at Altoros. He manages DevOps, SRE, and Developer consultants globally. Michael also defines standards and develops product offerings. He provides high-value systems integration consulting and training services, focusing on building massively scalable cloud-native systems with Infrastructure as Code and GitOps.<br \/>\n<\/small><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Different stages of maturity<\/p>\n<p>Kubernetes is ubiquitous in the ability to run on any platform. This way, organizations can target customers and shift their workloads wherever they need to be run. However, Kubernetes itself is a massive platform, so businesses looking to adopt the technology will likely face some challenges associated [&#8230;]<\/p>\n","protected":false},"author":32,"featured_media":55305,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[7],"tags":[873,912],"class_list":["post-55077","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news-and-opinion","tag-cloud-native","tag-kubernetes"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Maturity of App Deployments on Kubernetes: From Manual to Automated Ops | Altoros<\/title>\n<meta name=\"description\" content=\"Learn about four stages of maturity in Kubernetes deployments to identify scenarios that advocate for either manual or automated operations.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.altoros.com\/blog\/maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Maturity of App Deployments on Kubernetes: From Manual to Automated Ops | Altoros\" \/>\n<meta property=\"og:description\" content=\"Different stages of maturity Kubernetes is ubiquitous in the ability to run on any platform. This way, organizations can target customers and shift their workloads wherever they need to be run. However, Kubernetes itself is a massive platform, so businesses looking to adopt the technology will likely face some challenges associated [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.altoros.com\/blog\/maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops\/\" \/>\n<meta property=\"og:site_name\" content=\"Altoros\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-23T13:40:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/07\/Kubernetes-Maturity-Model-Automated-Deployment-v3.gif\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"576\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/gif\" \/>\n<meta name=\"author\" content=\"Carlo Gutierrez\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Carlo Gutierrez\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.altoros.com\/blog\/maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops\/\",\"name\":\"Maturity of App Deployments on Kubernetes: From Manual to Automated Ops | Altoros\",\"isPartOf\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/07\/Kubernetes-Maturity-Model-Automated-Deployment-v3.gif\",\"datePublished\":\"2020-07-23T13:40:03+00:00\",\"author\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/833e109f77de753b2b472dca0236b442\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.altoros.com\/blog\/maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops\/#primaryimage\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/07\/Kubernetes-Maturity-Model-Automated-Deployment-v3.gif\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/07\/Kubernetes-Maturity-Model-Automated-Deployment-v3.gif\",\"width\":1024,\"height\":576},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.altoros.com\/blog\/maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.altoros.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Maturity of App Deployments on Kubernetes: From Manual to Automated Ops\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\",\"url\":\"https:\/\/www.altoros.com\/blog\/\",\"name\":\"Altoros\",\"description\":\"Insight\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.altoros.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/833e109f77de753b2b472dca0236b442\",\"name\":\"Carlo Gutierrez\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/02\/CG_portrait-2-96x96.jpg\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/02\/CG_portrait-2-96x96.jpg\",\"caption\":\"Carlo Gutierrez\"},\"description\":\"Carlo Gutierrez is a Technical Writer at Altoros. As part of the editorial team, his focus has been on emerging technologies such as Cloud Foundry, Kubernetes, blockchain, and the Internet of Things. Prior to Altoros, he primarily wrote about enterprise and consumer technology. Carlo has over 12 years of experience in the publishing industry. Previously, he served as an Editor for PC World Philippines and Questex Asia, as well as a Designer for Tropa Entertainment.\",\"url\":\"https:\/\/www.altoros.com\/blog\/author\/carlo\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Maturity of App Deployments on Kubernetes: From Manual to Automated Ops | Altoros","description":"Learn about four stages of maturity in Kubernetes deployments to identify scenarios that advocate for either manual or automated operations.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.altoros.com\/blog\/maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops\/","og_locale":"en_US","og_type":"article","og_title":"Maturity of App Deployments on Kubernetes: From Manual to Automated Ops | Altoros","og_description":"Different stages of maturity Kubernetes is ubiquitous in the ability to run on any platform. This way, organizations can target customers and shift their workloads wherever they need to be run. However, Kubernetes itself is a massive platform, so businesses looking to adopt the technology will likely face some challenges associated [...]","og_url":"https:\/\/www.altoros.com\/blog\/maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops\/","og_site_name":"Altoros","article_published_time":"2020-07-23T13:40:03+00:00","og_image":[{"width":1024,"height":576,"url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/07\/Kubernetes-Maturity-Model-Automated-Deployment-v3.gif","type":"image\/gif"}],"author":"Carlo Gutierrez","twitter_misc":{"Written by":"Carlo Gutierrez","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.altoros.com\/blog\/maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops\/","url":"https:\/\/www.altoros.com\/blog\/maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops\/","name":"Maturity of App Deployments on Kubernetes: From Manual to Automated Ops | Altoros","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops\/#primaryimage"},"image":{"@id":"https:\/\/www.altoros.com\/blog\/maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/07\/Kubernetes-Maturity-Model-Automated-Deployment-v3.gif","datePublished":"2020-07-23T13:40:03+00:00","author":{"@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/833e109f77de753b2b472dca0236b442"},"breadcrumb":{"@id":"https:\/\/www.altoros.com\/blog\/maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.altoros.com\/blog\/maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops\/#primaryimage","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/07\/Kubernetes-Maturity-Model-Automated-Deployment-v3.gif","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/07\/Kubernetes-Maturity-Model-Automated-Deployment-v3.gif","width":1024,"height":576},{"@type":"BreadcrumbList","@id":"https:\/\/www.altoros.com\/blog\/maturity-of-app-deployments-on-kubernetes-from-manual-to-automated-ops\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.altoros.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Maturity of App Deployments on Kubernetes: From Manual to Automated Ops"}]},{"@type":"WebSite","@id":"https:\/\/www.altoros.com\/blog\/#website","url":"https:\/\/www.altoros.com\/blog\/","name":"Altoros","description":"Insight","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.altoros.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/833e109f77de753b2b472dca0236b442","name":"Carlo Gutierrez","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/02\/CG_portrait-2-96x96.jpg","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2021\/02\/CG_portrait-2-96x96.jpg","caption":"Carlo Gutierrez"},"description":"Carlo Gutierrez is a Technical Writer at Altoros. As part of the editorial team, his focus has been on emerging technologies such as Cloud Foundry, Kubernetes, blockchain, and the Internet of Things. Prior to Altoros, he primarily wrote about enterprise and consumer technology. Carlo has over 12 years of experience in the publishing industry. Previously, he served as an Editor for PC World Philippines and Questex Asia, as well as a Designer for Tropa Entertainment.","url":"https:\/\/www.altoros.com\/blog\/author\/carlo\/"}]}},"_links":{"self":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/55077","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/users\/32"}],"replies":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/comments?post=55077"}],"version-history":[{"count":82,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/55077\/revisions"}],"predecessor-version":[{"id":55570,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/55077\/revisions\/55570"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media\/55305"}],"wp:attachment":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media?parent=55077"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/categories?post=55077"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/tags?post=55077"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}