CINXE.COM

DevOps Fundamentals- Defining DevOps Principles - GitHub - GitHub Resources

<!DOCTYPE html><html lang="en"><head><script type="text/javascript" src="https://web-static.archive.org/_static/js/bundle-playback.js?v=7YQSqjSh" charset="utf-8"></script> <script type="text/javascript" src="https://web-static.archive.org/_static/js/wombat.js?v=txqj7nKC" charset="utf-8"></script> <script>window.RufflePlayer=window.RufflePlayer||{};window.RufflePlayer.config={"autoplay":"on","unmuteOverlay":"hidden"};</script> <script type="text/javascript" src="https://web-static.archive.org/_static/js/ruffle/ruffle.js"></script> <script type="text/javascript"> __wm.init("https://web.archive.org/web"); __wm.wombat("https://resources.github.com/devops/fundamentals/","20220927140619","https://web.archive.org/","web","https://web-static.archive.org/_static/", "1664287579"); </script> <link rel="stylesheet" type="text/css" href="https://web-static.archive.org/_static/css/banner-styles.css?v=p7PEIJWi" /> <link rel="stylesheet" type="text/css" href="https://web-static.archive.org/_static/css/iconochive.css?v=3PDvdIFv" /> <!-- End Wayback Rewrite JS Include --> <meta name="viewport" content="width=device-width"/><meta charset="utf-8"/><link rel="apple-touch-icon" sizes="180x180" href="/web/20220927140619im_/https://resources.github.com/apple-touch-icon.png"/><link rel="icon" type="image/png" sizes="32x32" href="/web/20220927140619im_/https://resources.github.com/favicon-32x32.png"/><link rel="icon" type="image/png" sizes="16x16" href="/web/20220927140619im_/https://resources.github.com/favicon-16x16.png"/><link rel="manifest" href="/web/20220927140619/https://resources.github.com/site.webmanifest"/><link rel="mask-icon" href="/web/20220927140619im_/https://resources.github.com/safari-pinned-tab.svg" color="#ab3f8b"/><meta name="apple-mobile-web-app-title" content="GitHub Resources"/><meta name="application-name" content="GitHub Resources"/><meta name="msapplication-TileColor" content="#ab3f8b"/><meta name="theme-color" content="#151920"/><link rel="canonical" href="https://web.archive.org/web/20220927140619/https://resources.github.com/devops/fundamentals/"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:site" content="@github"/><meta name="twitter:creator" content="@GitHub"/><meta property="og:url" content="https://web.archive.org/web/20220927140619/https://resources.github.com/devops/fundamentals/"/><meta property="og:type" content="website"/><meta property="og:locale" content="en_US"/><meta property="og:site_name" content="GitHub Resources"/><title>DevOps Fundamentals- Defining DevOps Principles - GitHub - GitHub Resources</title><meta name="robots" content="index,follow"/><meta name="description" content="Organizations can benefit from DevOps, but what does that entail? Discover the principles of DevOps, the best practices, and workflows that leads to a successful pipeline."/><meta property="og:title" content="DevOps Fundamentals- Defining DevOps Principles - GitHub"/><meta property="og:description" content="Organizations can benefit from DevOps, but what does that entail? Discover the principles of DevOps, the best practices, and workflows that leads to a successful pipeline."/><meta property="og:image" content="//web.archive.org/web/20220927140619im_/https://images.ctfassets.net/wfutmusr1t3h/7nFIf9oHIcL0KgbFkHplSZ/222c96669535b82f5bf237dd41c1f4bf/DevOps_Social_Main_Component__14_.png"/><meta property="og:image:alt" content="GitHub Resources"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="628"/><script type="application/ld+json">{"@context":"https://web.archive.org/web/20220927140619/https://schema.org","@type":"Article","datePublished":"2022-05-23T12:00+00:00","description":"From headlines to job descriptions, DevOps has emerged as an outsized buzzword over the past decade—and for good reason. Organizations that successfully adopt DevOps often see big gains in software development speeds, improved reliability, faster product iterations, and have an easier time scaling their services. ","mainEntityOfPage":{"@type":"WebPage","@id":"https://web.archive.org/web/20220927140619/https://resources.github.com/devops/fundamentals"},"headline":"DevOps fundamentals: Defining DevOps principles","image":[],"dateModified":"2022-05-23T12:00+00:00","author":{"@type":"Person","name":"GitHub"}}</script><meta name="next-head-count" content="29"/><link rel="preload" href="/web/20220927140619/https://resources.github.com/_next/static/css/b9e2b6495b8234f9.css" as="style"/><link rel="stylesheet" href="/web/20220927140619cs_/https://resources.github.com/_next/static/css/b9e2b6495b8234f9.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/web/20220927140619js_/https://resources.github.com/_next/static/chunks/polyfills-5cd94c89d3acac5f.js"></script><script src="/web/20220927140619js_/https://resources.github.com/_next/static/chunks/webpack-695d1707abda7acc.js" defer=""></script><script src="/web/20220927140619js_/https://resources.github.com/_next/static/chunks/framework-5f4595e5518b5600.js" defer=""></script><script src="/web/20220927140619js_/https://resources.github.com/_next/static/chunks/main-444bbfc23ef7c5c7.js" defer=""></script><script src="/web/20220927140619js_/https://resources.github.com/_next/static/chunks/pages/_app-3a68e31cbb8b316e.js" defer=""></script><script src="/web/20220927140619js_/https://resources.github.com/_next/static/chunks/29107295-fbcfe2172188e46f.js" defer=""></script><script src="/web/20220927140619js_/https://resources.github.com/_next/static/chunks/79-d043d6cbd2968972.js" defer=""></script><script src="/web/20220927140619js_/https://resources.github.com/_next/static/chunks/pages/%5B...path%5D-e21493c3e1adffc6.js" defer=""></script><script src="/web/20220927140619js_/https://resources.github.com/_next/static/l_IYb_rOrISahb1OvjBGz/_buildManifest.js" defer=""></script><script src="/web/20220927140619js_/https://resources.github.com/_next/static/l_IYb_rOrISahb1OvjBGz/_ssgManifest.js" defer=""></script><script src="/web/20220927140619js_/https://resources.github.com/_next/static/l_IYb_rOrISahb1OvjBGz/_middlewareManifest.js" defer=""></script></head><body><div id="__next" data-reactroot=""><div data-color-mode="light" style="background:unset"><div id="resources-navbar-container" data-color-mode="dark" data-dark-theme="dark" style="position:fixed" class="blur-mode"><header id="resources-navbar"><nav class="container-xl d-flex flex-items-center py-1" aria-label="Site navigation"><a href="https://web.archive.org/web/20220927140619/https://github.com/" target="_blank" rel="noreferrer" title="Visit GitHub" class="gh-icon Header-link d-none d-lg-block"><svg aria-hidden="true" role="img" class="nav-back-arrow" viewbox="0 0 24 24" width="32" height="32" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path fill-rule="evenodd" d="M15.28 5.22a.75.75 0 00-1.06 0l-6.25 6.25a.75.75 0 000 1.06l6.25 6.25a.75.75 0 101.06-1.06L9.56 12l5.72-5.72a.75.75 0 000-1.06z"></path></svg><svg aria-hidden="true" role="img" class="octicon octicon-mark-github" viewbox="0 0 16 16" width="32" height="32" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path></svg></a><a class="Header-link d-lg-none" title="GitHub Resources - Home" href="/web/20220927140619/https://resources.github.com/"><svg aria-hidden="true" role="img" class="octicon octicon-mark-github" viewbox="0 0 16 16" width="32" height="32" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path></svg></a><span class="ml-3 f1-mktg f2-md-mktg opacity-30">/</span><a class="d-none d-lg-inline-block Header-link font-weight-semibold p-3 f2" href="/web/20220927140619/https://resources.github.com/">Resources</a><button class="d-lg-none btn-link Header-link font-weight-semibold p-3 mr-auto f2">Resources<svg aria-hidden="true" role="img" class="ml-2 rotatable " viewbox="0 0 24 24" width="24" height="24" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path fill-rule="evenodd" d="M5.22 8.72a.75.75 0 000 1.06l6.25 6.25a.75.75 0 001.06 0l6.25-6.25a.75.75 0 00-1.06-1.06L12 14.44 6.28 8.72a.75.75 0 00-1.06 0z"></path></svg></button><button class="d-none d-lg-inline-block btn-link Header-link font-weight-medium py-3 px-4">Collections</button><button class="d-none d-lg-inline-block btn-link Header-link font-weight-medium py-3 px-4">Topics</button><button class="d-none d-lg-inline-block btn-link Header-link font-weight-medium py-3 px-4 mr-auto">Types</button><button class="btn-link Header-link font-weight-medium py-3 pl-6" aria-label="Search"><svg aria-hidden="true" role="img" class="octicon octicon-search" viewbox="0 0 16 16" width="21" height="21" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path></svg></button><a class="d-none d-md-inline-block btn-mktg font-weight-semibold ml-4 mr-3" href="https://web.archive.org/web/20220927140619/https://github.com/enterprise/trial">Free trial</a><a class="d-none d-md-inline-block btn-mktg btn-muted-mktg font-weight-semibold" href="https://web.archive.org/web/20220927140619/https://github.com/enterprise/contact">Contact sales</a></nav></header><nav class="position-absolute nav-dropdown mobile-nav pt-8 pb-4 color-bg-dark color-fg-white " data-color-mode="dark" data-dark-theme="dark"><div class="container-sm px-6 overflow-auto height-full"><div class="d-flex flex-column color-bg-dark height-full"><div class="border-top-dotted-fancy"><a class="Link--primary f1-mktg d-block py-2" href="/web/20220927140619/https://resources.github.com/collections/">Collections</a></div><div class="border-top-dotted-fancy"><a class="Link--primary f1-mktg d-block py-2" href="/web/20220927140619/https://resources.github.com/topics/">Topics</a></div><div class="border-top-dotted-fancy"><a class="Link--primary f1-mktg d-block py-2" href="/web/20220927140619/https://resources.github.com/articles/">Articles</a></div><div class="border-top-dotted-fancy"><a class="Link--primary f1-mktg d-block py-2" href="/web/20220927140619/https://resources.github.com/videos/">Videos</a></div><div class="border-top-dotted-fancy"><a class="Link--primary f1-mktg d-block py-2" href="/web/20220927140619/https://resources.github.com/events/">Events</a></div><div class="border-top-dotted-fancy flex-column flex-1 d-flex d-md-none"><a class="btn-mktg font-weight-semibold mb-3 mt-auto" href="https://web.archive.org/web/20220927140619/https://github.com/enterprise/trial">Free trial</a><a class="btn-mktg btn-muted-mktg font-weight-semibold" href="https://web.archive.org/web/20220927140619/https://github.com/enterprise/contact">Contact sales</a></div></div></div></nav><nav class="position-absolute nav-dropdown color-bg-dark color-fg-white " data-color-mode="dark" data-dark-theme="dark"><div class="container-xl height-full"><div class="grid grid-cols-1 grid-cols-md-12 gap-12"><div class="col-span-md-6 col-span-1 d-flex flex-column"><h2 class="f4 font-weight-medium mb-4 text-mono gradient-fg-purple-red-light flex-self-start">Featured collections</h2><a class="link-mktg h3-mktg font-weight-medium Link--primary color-fg-on-emphasis flex-self-start mb-2" href="/web/20220927140619/https://resources.github.com/collection/devops-development/">DevOps Development</a></div><div class="col-span-1 col-span-md-3"><h2 class="f4 font-weight-medium mb-4 text-mono gradient-fg-purple-red-light flex-self-start capitalize">collections</h2><div class="border-bottom"><a class="d-block link-mktg Link--primary color-fg-on-emphasis f2-mktg py-2" href="/web/20220927140619/https://resources.github.com/collection/devops-development/">DevOps Development</a></div><div class="border-bottom"><a class="d-block link-mktg Link--primary color-fg-on-emphasis f2-mktg py-2" href="/web/20220927140619/https://resources.github.com/collection/ghas/">GitHub Advanced Security</a></div><div class="border-bottom"><a class="d-block link-mktg Link--primary color-fg-on-emphasis f2-mktg py-2" href="/web/20220927140619/https://resources.github.com/collection/ghe/">GitHub Enterprise</a></div><a class="link-mktg font-weight-medium Link--primary color-fg-on-emphasis arrow-target-mktg text-semibold f3-mktg mt-4" href="/web/20220927140619/https://resources.github.com/collections/">View all <!-- -->collections<!-- --> <svg xmlns="http://www.w3.org/2000/svg" class="octicon arrow-symbol-mktg" width="16" height="16" viewbox="0 0 16 16" fill="none"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></div><div class="col-span-1 col-span-md-3"><h2 class="f4 font-weight-medium mb-4 text-mono gradient-fg-purple-red-light flex-self-start capitalize">Spotlight</h2><div><div class="resource-card animatable animate-fade-up"><a class="resource-card-overlay-link" aria-label="View this resource" href="/web/20220927140619/https://resources.github.com/collection/devops-development/"></a><span style="box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative"><span style="box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;padding-top:61.72839506172839%"></span><img alt="" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="responsive" class="resource-card-image" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover"/><noscript><img alt="" sizes="100vw" srcset="/web/20220927140619im_/https://resources.github.com/assets/images/patterns/purple-1-thumbnail.svg?w=544&amp;q=75 544w, /web/20220927140619im_/https://resources.github.com/assets/images/patterns/purple-1-thumbnail.svg?w=768&amp;q=75 768w, /web/20220927140619im_/https://resources.github.com/assets/images/patterns/purple-1-thumbnail.svg?w=1012&amp;q=75 1012w, /web/20220927140619im_/https://resources.github.com/assets/images/patterns/purple-1-thumbnail.svg?w=1280&amp;q=75 1280w" src="/web/20220927140619im_/https://resources.github.com/assets/images/patterns/purple-1-thumbnail.svg?w=1280&amp;q=75" decoding="async" data-nimg="responsive" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover" class="resource-card-image" loading="lazy"/></noscript></span><h3 class="h4-mktg font-weight-semibold heading"><span>DevOps Development</span></h3><p class="f3-mktg color-fg-muted">the DevOps platform </p><div class="text-mono f5 mt-4"></div></div></div></div></div></div></nav><nav class="position-absolute nav-dropdown color-bg-dark color-fg-white " data-color-mode="dark" data-dark-theme="dark"><div class="container-xl"><div class="grid grid-cols-1 grid-cols-md-12 gap-12"><div class="col-span-md-6 col-span-1 d-flex flex-column"><h2 class="f4 font-weight-medium mb-4 text-mono gradient-fg-purple-red-light flex-self-start">Featured topics</h2><a class="link-mktg h3-mktg font-weight-medium Link--primary color-fg-on-emphasis flex-self-start mb-2" href="/web/20220927140619/https://resources.github.com/topics/devops/">DevOps</a><a class="link-mktg h3-mktg font-weight-medium Link--primary color-fg-on-emphasis flex-self-start mb-2" href="/web/20220927140619/https://resources.github.com/topics/security/">Security</a><a class="link-mktg h3-mktg font-weight-medium Link--primary color-fg-on-emphasis flex-self-start mb-2" href="/web/20220927140619/https://resources.github.com/topics/GitHub%20Actions/">GitHub Actions</a><a class="link-mktg h3-mktg font-weight-medium Link--primary color-fg-on-emphasis flex-self-start mb-2" href="/web/20220927140619/https://resources.github.com/topics/opensource/">Open Source</a><a class="link-mktg h3-mktg font-weight-medium Link--primary color-fg-on-emphasis flex-self-start mb-2" href="/web/20220927140619/https://resources.github.com/topics/tools/">Tools</a></div><div class="col-span-1 col-span-md-3"><h2 class="f4 font-weight-medium mb-4 text-mono gradient-fg-purple-red-light flex-self-start capitalize">topics</h2><div class="border-bottom"><a class="d-block link-mktg Link--primary color-fg-on-emphasis f2-mktg py-2" href="/web/20220927140619/https://resources.github.com/topics/fundamentals/">Fundamentals</a></div><div class="border-bottom"><a class="d-block link-mktg Link--primary color-fg-on-emphasis f2-mktg py-2" href="/web/20220927140619/https://resources.github.com/topics/appsec/">AppSec</a></div><div class="border-bottom"><a class="d-block link-mktg Link--primary color-fg-on-emphasis f2-mktg py-2" href="/web/20220927140619/https://resources.github.com/topics/innersource/">Innersource</a></div><a class="link-mktg font-weight-medium Link--primary color-fg-on-emphasis arrow-target-mktg text-semibold f3-mktg mt-4" href="/web/20220927140619/https://resources.github.com/topics/">View all <!-- -->topics<!-- --> <svg xmlns="http://www.w3.org/2000/svg" class="octicon arrow-symbol-mktg" width="16" height="16" viewbox="0 0 16 16" fill="none"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></div><div class="col-span-1 col-span-md-3"><h2 class="f4 font-weight-medium mb-4 text-mono gradient-fg-purple-red-light flex-self-start capitalize">Spotlight</h2><div><div class="resource-card animatable animate-fade-up"><a class="resource-card-overlay-link" aria-label="View this resource" href="/web/20220927140619/https://resources.github.com/devops/tools/automation/getting-traction-with-github-actions/"></a><span style="box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative"><span style="box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;padding-top:61.72839506172839%"></span><img alt="" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="responsive" class="resource-card-image" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover"/><noscript><img alt="" sizes="100vw" srcset="/web/20220927140619im_/https://resources.github.com/assets/images/patterns/blue-1-thumbnail.svg?w=544&amp;q=75 544w, /web/20220927140619im_/https://resources.github.com/assets/images/patterns/blue-1-thumbnail.svg?w=768&amp;q=75 768w, /web/20220927140619im_/https://resources.github.com/assets/images/patterns/blue-1-thumbnail.svg?w=1012&amp;q=75 1012w, /web/20220927140619im_/https://resources.github.com/assets/images/patterns/blue-1-thumbnail.svg?w=1280&amp;q=75 1280w" src="/web/20220927140619im_/https://resources.github.com/assets/images/patterns/blue-1-thumbnail.svg?w=1280&amp;q=75" decoding="async" data-nimg="responsive" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover" class="resource-card-image" loading="lazy"/></noscript></span><h3 class="h4-mktg font-weight-semibold heading"><span>Demo Day: Getting Traction with GitHub Actions</span></h3><time class="text-mono mb-3 color-fg-muted">March 16, 2021</time><p class="f3-mktg color-fg-muted">Get hands-on support for all things automation. Join us for a technical deep dive into GitHub Actions, starting with non-CI/CD examples to help your developers streamline every part of their workflow. From issue automation to performance monitoring, you’ll walk away with tricks on how to use Actions to build workflows your developers love.</p><div class="text-mono f5 mt-4"><a class="Link--primary no-underline resource-card-tag" href="/web/20220927140619/https://resources.github.com/topics/devops/">DevOps</a>, <a class="Link--primary no-underline resource-card-tag" href="/web/20220927140619/https://resources.github.com/topics/GitHub%20Actions/">GitHub Actions</a></div></div></div></div></div></div></nav><nav class="position-absolute nav-dropdown color-bg-dark color-fg-white " data-color-mode="dark" data-dark-theme="dark"><div class="container-xl"><div class="grid grid-cols-1 grid-cols-md-12 gap-12"><div class="col-span-md-3 col-span-1 d-flex flex-column"><h2 class="f4 font-weight-medium mb-4 text-mono gradient-fg-purple-red-light flex-self-start">Types</h2><a class="link-mktg h3-mktg font-weight-medium Link--primary color-fg-on-emphasis flex-self-start mb-2" href="/web/20220927140619/https://resources.github.com/articles/">Articles</a><a class="link-mktg h3-mktg font-weight-medium Link--primary color-fg-on-emphasis flex-self-start mb-2" href="/web/20220927140619/https://resources.github.com/videos/">Videos</a><a class="link-mktg h3-mktg font-weight-medium Link--primary color-fg-on-emphasis flex-self-start mb-2" href="/web/20220927140619/https://resources.github.com/events/">Events</a></div><div class="col-span-1 col-span-md-9 grid grid-cols-1 grid-cols-md-3 gap-8"><div><h2 class="f4 font-weight-medium text-mono gradient-fg-purple-red-light flex-self-start capitalize">Latest <!-- -->article</h2><div class="resource-card animatable animate-fade-up"><a class="resource-card-overlay-link" aria-label="View this resource" href="/web/20220927140619/https://resources.github.com/devops/github-devops-barcelona/"></a><span style="box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative"><span style="box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;padding-top:61.72839506172839%"></span><img alt="" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="responsive" class="resource-card-image" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover"/><noscript><img alt="" sizes="100vw" srcset="/web/20220927140619im_/https://resources.github.com/assets/images/patterns/aqua-1-thumbnail.svg?w=544&amp;q=75 544w, /web/20220927140619im_/https://resources.github.com/assets/images/patterns/aqua-1-thumbnail.svg?w=768&amp;q=75 768w, /web/20220927140619im_/https://resources.github.com/assets/images/patterns/aqua-1-thumbnail.svg?w=1012&amp;q=75 1012w, /web/20220927140619im_/https://resources.github.com/assets/images/patterns/aqua-1-thumbnail.svg?w=1280&amp;q=75 1280w" src="/web/20220927140619im_/https://resources.github.com/assets/images/patterns/aqua-1-thumbnail.svg?w=1280&amp;q=75" decoding="async" data-nimg="responsive" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover" class="resource-card-image" loading="lazy"/></noscript></span><h3 class="h4-mktg font-weight-semibold heading"><span>GitHub @ DevOps Barcelona</span></h3><time class="text-mono mb-3 color-fg-muted">November 2, 2022</time><p class="f3-mktg color-fg-muted">3 &amp; 4 November 2022</p><div class="text-mono f5 mt-4"><a class="Link--primary no-underline resource-card-tag" href="/web/20220927140619/https://resources.github.com/topics/devops/">DevOps</a></div></div></div><div><h2 class="f4 font-weight-medium text-mono gradient-fg-purple-red-light flex-self-start capitalize">Latest <!-- -->video</h2><div class="resource-card animatable animate-fade-up"><a class="resource-card-overlay-link" aria-label="View this resource" href="/web/20220927140619/https://resources.github.com/webcasts/github-at-black-hat/"></a><span style="box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative"><span style="box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;padding-top:61.72839506172839%"></span><img alt="" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="responsive" class="resource-card-image" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover"/><noscript><img alt="" sizes="100vw" srcset="/web/20220927140619im_/https://resources.github.com/assets/images/patterns/blue-2-thumbnail.svg?w=544&amp;q=75 544w, /web/20220927140619im_/https://resources.github.com/assets/images/patterns/blue-2-thumbnail.svg?w=768&amp;q=75 768w, /web/20220927140619im_/https://resources.github.com/assets/images/patterns/blue-2-thumbnail.svg?w=1012&amp;q=75 1012w, /web/20220927140619im_/https://resources.github.com/assets/images/patterns/blue-2-thumbnail.svg?w=1280&amp;q=75 1280w" src="/web/20220927140619im_/https://resources.github.com/assets/images/patterns/blue-2-thumbnail.svg?w=1280&amp;q=75" decoding="async" data-nimg="responsive" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover" class="resource-card-image" loading="lazy"/></noscript></span><h3 class="h4-mktg font-weight-semibold heading"><span>Meet GitHub Advanced Security</span></h3><time class="text-mono mb-3 color-fg-muted">August 10, 2022</time><p class="f3-mktg color-fg-muted">We recently participated in Black Hat USA, a cybersecurity conference in Las Vegas, where we shared our developer-empowering solutions that can help organizations secure their code in minutes. Sign up below to watch the session</p><div class="text-mono f5 mt-4"><a class="Link--primary no-underline resource-card-tag" href="/web/20220927140619/https://resources.github.com/topics/security/">Security</a></div></div></div><div><h2 class="f4 font-weight-medium text-mono gradient-fg-purple-red-light flex-self-start capitalize">Latest <!-- -->event</h2><div class="resource-card animatable animate-fade-up"><a class="resource-card-overlay-link" aria-label="View this resource" href="/web/20220927140619/https://resources.github.com/github-experience-oktoberfest/"></a><span style="box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative"><span style="box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;padding-top:61.72839506172839%"></span><img alt="" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="responsive" class="resource-card-image" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover"/><noscript><img alt="" sizes="100vw" srcset="/web/20220927140619im_/https://resources.github.com/assets/images/patterns/purple-3-thumbnail.svg?w=544&amp;q=75 544w, /web/20220927140619im_/https://resources.github.com/assets/images/patterns/purple-3-thumbnail.svg?w=768&amp;q=75 768w, /web/20220927140619im_/https://resources.github.com/assets/images/patterns/purple-3-thumbnail.svg?w=1012&amp;q=75 1012w, /web/20220927140619im_/https://resources.github.com/assets/images/patterns/purple-3-thumbnail.svg?w=1280&amp;q=75 1280w" src="/web/20220927140619im_/https://resources.github.com/assets/images/patterns/purple-3-thumbnail.svg?w=1280&amp;q=75" decoding="async" data-nimg="responsive" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover" class="resource-card-image" loading="lazy"/></noscript></span><h3 class="h4-mktg font-weight-semibold heading"><span>GitHub Experience Oktoberfest</span></h3><time class="text-mono mb-3 color-fg-muted">October 27, 2022</time><p class="f3-mktg color-fg-muted">How to keep your organization secure </p><div class="text-mono f5 mt-4"><a class="Link--primary no-underline resource-card-tag" href="/web/20220927140619/https://resources.github.com/topics/github-advanced-security/">GitHub Advanced Security</a></div></div></div></div></div></div></nav><nav class="position-absolute nav-dropdown color-bg-white " data-color-mode="light" data-light-theme="light"><div class="container-xl"><form class="d-flex flex-column"><button class="btn-link flex-self-end Link--muted" type="button" aria-label="Close dropdown"><svg aria-hidden="true" role="img" class="octicon octicon-x" viewbox="0 0 24 24" width="36" height="36" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path fill-rule="evenodd" d="M5.72 5.72a.75.75 0 011.06 0L12 10.94l5.22-5.22a.75.75 0 111.06 1.06L13.06 12l5.22 5.22a.75.75 0 11-1.06 1.06L12 13.06l-5.22 5.22a.75.75 0 01-1.06-1.06L10.94 12 5.72 6.78a.75.75 0 010-1.06z"></path></svg></button><div class="d-flex flex-column flex-md-row flex-items-center"><input type="text" class="search-input form-control input-lg color-bg-transparent color-fg-muted flex-1 width-full mb-3 mb-md-0" placeholder="What are you looking for?" value="" autofocus=""/><button class="btn-mktg arrow-target-mktg flex-shrink-0 width-full width-md-auto">Search</button></div></form></div></nav></div><main class="flex-1"><header class="color-bg-dark color-fg-white text-center pb-10 pt-16 px-3 article-header" data-nav="blur-mode dark-mode"><div class="container-lg"><h1 class="h2-mktg mb-3">DevOps fundamentals: Defining DevOps principles</h1><div class="d-flex flex-justify-center"><p>May 23, 2022<!-- --> <!-- -->//<!-- --> <!-- -->13<!-- --> min read</p></div></div><div class="bg-image"><span style="box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:absolute;top:0;left:0;bottom:0;right:0"><img alt="image" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="fill" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover"/><noscript><img alt="image" sizes="100vw" srcset="/web/20220927140619im_/https://resources.github.com/assets/images/patterns/aqua-1-thumbnail.svg?w=544&amp;q=75 544w, /web/20220927140619im_/https://resources.github.com/assets/images/patterns/aqua-1-thumbnail.svg?w=768&amp;q=75 768w, /web/20220927140619im_/https://resources.github.com/assets/images/patterns/aqua-1-thumbnail.svg?w=1012&amp;q=75 1012w, /web/20220927140619im_/https://resources.github.com/assets/images/patterns/aqua-1-thumbnail.svg?w=1280&amp;q=75 1280w" src="/web/20220927140619im_/https://resources.github.com/assets/images/patterns/aqua-1-thumbnail.svg?w=1280&amp;q=75" decoding="async" data-nimg="fill" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover" loading="lazy"/></noscript></span></div></header><section class="section bg-pixel-light bg-contain bg-top" data-nav="light-mode"><div class="container-md" data-nav="light-mode"><p class="f1-mktg font-weight-medium mb-8">From headlines to job descriptions, DevOps has emerged as an outsized buzzword over the past decade—and for good reason. Organizations that successfully adopt DevOps often see big gains in software development speeds, improved reliability, faster product iterations, and have an easier time scaling their services. </p><span class="border-top-dotted-fancy"></span><div class="markdown-body my-8"><p>From headlines to job descriptions, DevOps has emerged as an outsized buzzword over the past decade-and for good reason. Organizations that successfully adopt DevOps often see big gains in software development speeds, improved reliability, faster product iterations, and have an easier time scaling their services. </p> <p>But despite its roots in software development, DevOps is a holistic business practice that combines people, processes, cultural practices, and technologies to bring previously siloed teams together to deliver speed, value, and quality across the software development lifecycle. </p> <p>That means there’s often no one-size-fits-all approach. But there are a common set of practices and principles in any successful DevOps implementation. </p> <p>In the following guide, we’ll explore those practices and principles and answer the following questions: </p> <ul> <li>What is the main goal of DevOps?</li> <li>What are the core DevOps principles? </li> <li>What are key stages in a DevOps workflow? </li> <li>What role does everyone play in DevOps? </li> <li>What does security look like in DevOps?</li> <li>What are DevOps best practices? </li> <li>How is DevOps different from agile?</li> </ul> <h2>What is the main goal of DevOps?</h2> <p>The main goal of DevOps is to deliver value to produce better software faster that people can use immediately without any problems—and do so in a way that links the underlying infrastructure, the software architecture, and engineering code releases with minimal friction. In the software industry, there has been a belief that organizations can either move fast or build reliable products. DevOps makes it possible to do both and accomplishes this in two big ways: By bringing the traditionally siloed development and operations teams together and building automation into every stage of the software development lifecycle (SDLC). </p> <h2>What are core DevOps principles?</h2> <p>Initially coined by Patrick Debois in 2009, the term DevOps is a combination of “development” and “operations,” which explained the initial idea behind it: to bring development and operations teams into a closer working relationship.<br/>Historically these two teams worked in silos. Developers coded and built the software, while operations ran quality assurance tests and worked on underlying infrastructure to ensure successful code deployments. This frequently led to difficulties deploying code as development and operations teams would come into conflict. Where Debois and other early DevOps leaders such as Gene Kim and John Willis often broadly characterized DevOps as the integration of development and operations to streamline the software development and release processes, DevOps today has evolved into a holistic business practice that goes beyond individual teams. </p> <p><br/><br/> <em>At GitHub, we approach DevOps as a philosophy and set of practices that bring development, IT operations, and security teams together to build, test, iterate, and provide regular feedback throughout the SDLC.</em></p> <p><br/><br/> Implementing DevOps will look different in every organization. But every successful DevOps environment abides by the following core principles: </p> <h3>Collaboration</h3> <p>To succeed, DevOps requires a close-knit working relationship between operations and development—two teams that historically were siloed from one another. By having all three teams collaborate closely under a DevOps model, you seek to encourage communication and partnership between all three teams to improve your ability to develop, test, operate, deploy, monitor, and iterate upon your application and software stack. </p> <h3>Version control</h3> <p>Version control is an integral part of DevOps—and most software development these days, too. A version control system is designed to automatically record file changes and preserve records of previous file versions. </p> <h3>Automation</h3> <p>Automation in DevOps commonly means leveraging technology and scripts to create feedback loops between those responsible for maintaining and scaling the underlying infrastructure and those responsible for building the core software. From helping to scale environments to creating software builds and orchestrating tests, automation in DevOps can take on a variety of different forms.</p> <br/> <blockquote> <p>The mindset we carry within our team is that we always want to automate ourselves into a better job.</p> </blockquote> <p>Andrew Mulholland, Director of Engineering at <a href="https://web.archive.org/web/20220927140619/https://github.com/customer-stories/buzzfeed">Buzzfeed</a></p> <br/> <h3>Incremental releases</h3> <p>Incremental releases are a mainstay in successful DevOps practices and are defined by rapidly shipping small changes and updates based on the previous functionality. Instead of updating a whole application across the board, incremental releases mean development teams can quickly integrate smaller changes into the main branch, test them for quality and security, and then ship them to end users. </p> <h3>Orchestration</h3> <p>Orchestration refers to a set of automated tasks that are built into a single workflow to solve a group of functions such as managing <a href="https://web.archive.org/web/20220927140619/https://resources.github.com/devops/fundamentals/containerization">containers</a>, launching a new web server, changing a database entry, and integrating a web application. More simply, orchestration helps configure, manage, and coordinate the infrastructure requirements an application needs to run effectively. </p> <h3>Pipeline</h3> <p>In any conversation about DevOps, you’re apt to hear the term <a href="https://web.archive.org/web/20220927140619/https://resources.github.com/devops/pipeline">pipeline</a> thrown around fairly regularly. In the simplest terms, a DevOps pipeline is a process that leverages automation and a number of <a href="https://web.archive.org/web/20220927140619/https://resources.github.com/devops/tools/">tools</a> to enable developers to quickly ship their code to a testing environment. The operations and development teams will then test that code to detect any security issues, bugs, or issues before deploying it to production. </p> <h3>Continuous integration</h3> <p>Continuous integration, or CI for short, is a practice where a team of developers frequently commit code to a shared central repository via an automated build and test process. By committing small code changes continuously to the main codebase, developers can detect bugs and errors faster. This practice also makes it easier to merge changes from different members of a software development team. </p> <h3>Continuous delivery</h3> <p>Continuous delivery is the practice of using automation to release software updates to end users. Continuous delivery always follows CI so that software can be automatically built and tested before it is released for general use. Taken together, CI and continuous delivery comprise two-thirds of a typical DevOps pipeline. Critically, a continuous delivery model automates everything up to the deployment stage. At this point, human intervention is required to ship software to end users. </p> <h3>Continuous deployment</h3> <p>Continuous deployment, or CD, is the final piece of a complete DevOps pipeline and automates the deployment of code releases. That means if code passes all automated tests throughout the production pipeline, it’s immediately released to end users. CD critically removes the need for human intervention to orchestrate a software release, which results in faster release timelines. This also gives developers more immediate real-world feedback. </p> <h3>Continuous monitoring</h3> <p>Continuous <a href="https://web.archive.org/web/20220927140619/https://resources.github.com/devops/tools/monitoring">monitoring</a> is a set of automated processes and tooling used to troubleshoot issues and development teams can use to inform future development cycles, fix bugs, and patch issues. A well established continuous monitoring system will typically contain four components:</p> <p> 1.<strong>Logging</strong> offers a continuous stream of raw data about business-critical components. </p> <ol> <li><p><strong>Monitoring</strong> provides intelligence about the raw data provided in logs and metrics.</p> </li> <li><p><strong>Alerting</strong> provides proactive notifications when something has gone wrong and critical debugging information.</p> </li> <li><p><strong>Tracing</strong> takes logging a step further, providing a deeper level of application performance and behavioral insights that can greatly impact the stability and scalability of applications in production environments.</p> </li> </ol> <h2>Feedback sharing (or feedback loops)</h2> <p>Feedback sharing—or feedback loops—is a common DevOps term first defined in the seminal book <a href="https://web.archive.org/web/20220927140619/https://www.amazon.com/Phoenix-Project-DevOps-Helping-Business/dp/0988262592">The Phoenix Project by Gene Kim</a>. Kim explains it this way: “The goal of almost any process improvement initiative is to shorten and amplify feedback loops so necessary corrections can be continually made.” In simple terms, a feedback loop is a process for monitoring application and infrastructure performance for potential issues or bugs and tracking end-user activity within the application itself. </p> <h2>What are the key stages in a DevOps workflow?</h2> <p>The DevOps lifecycle is rooted in finding collaborative ways to plan ahead, define application and infrastructure requirements, identify areas in the SDLC that can be automated, and make sure everyone is on the same page. This all comes back to the goal of DevOps: to deliver value and produce quality software that reaches end users as quickly as possible. <img src="//web.archive.org/web/20220927140619im_/https://images.ctfassets.net/wfutmusr1t3h/4ez2WNMQR71INMMV61qY45/c051e8c0717eea08136f110dc32c82e6/The_eight_stages_of_a_successful_DevOps_workflow.png" alt="The eight stages of a successful DevOps workflow"/></p> <h3>The eight stages of a successful DevOps workflow</h3> <h4>1. Planning</h4> <p>Typically a product manager and an engineering lead will work in tandem to plan roadmaps and sprints. Teams will leverage project management tools such as kanban boards to build out development schedules. <br/><br/>Learn how to use GitHub for project planning with <a href="https://web.archive.org/web/20220927140619/https://github.com/features/issues">GitHub Issues &gt;&gt;</a> </p> <h4>2. Coding</h4> <p>After planning is complete, developers will begin building code and engage in subsequent tasks such as code review, code merges, and code management in a shared repository. <br/><br/>Find out how <a href="https://web.archive.org/web/20220927140619/https://github.com/features">developers code on GitHub &gt;&gt;</a> </p> <h4>3. Building</h4> <p>As code is developed and reviewed, engineers will engage in merging—or continuously integrating—that code with their source code in a shared and centralized code repository. This is typically done with continuous integration to test code changes and version control tools to track new code commits. <br/><br/>See how GitHub enables <a href="https://web.archive.org/web/20220927140619/https://github.com/features/actions">CI/CD for code integration and application building &gt;&gt;</a> </p> <h4>4. Testing</h4> <p>During the build process, continuous testing helps ensure new code additions don’t introduce bugs, performance dips, or security flaws to the source code. This is accomplished through a series of automated tests that are applied to each new code commit. <br/><br/>Learn how to use GitHub to <a href="https://web.archive.org/web/20220927140619/https://github.com/features/actions">build a continuous testing pipeline &gt;&gt;</a></p> <h4>5. Packaging</h4> <p>Before launching a new iteration of an application, a team will package its code in a structure that can be deployed. This can sometimes include sharing reusable components for sharing via package ecosystems such as npm, Maven, or Nuget. This can also involve packaging code into artifacts, which are created throughout the software development lifecycle, and deploying them to a staging environment to do final checks and store any artifacts.<br/><br/>Explore <a href="https://web.archive.org/web/20220927140619/https://github.com/features/packages">GitHub’s integrated packaging solution &gt;&gt;</a> </p> <h4>6. Releasing</h4> <p>The team will release a new iterative version of an application to end users. This typically includes release automation tooling or scripts and change management tools which can be used in the event a change doesn’t work in deployment and needs to be rolled back. <br/><br/>See how companies <a href="https://web.archive.org/web/20220927140619/https://github.com/features/actions">release software on GitHub &gt;&gt;</a> </p> <h4>7. Operating</h4> <p>Throughout all stages of the SDLC, DevOps practitioners ensure the core infrastructure the application needs to run on works—this includes setting up testing environments, staging or pre-deployment environments, and deployment environments. <br/>Once an application is being used by end users, there is also a need to ensure that the underlying infrastructure such as containers and cloud-based servers can scale to meet demand. <br/>Practitioners will typically leverage infrastructure-as-code tools to make sure the underlying systems meet real-time demand as it scales up and down. They will also engage in ongoing security checks, data backups, and database management, among other things. <br/><br/>Learn how <a href="https://web.archive.org/web/20220927140619/https://github.com/enterprise">GitHub enables software operations &gt;&gt;</a></p> <h4>8. Monitoring</h4> <p>DevOps practitioners implement a mixture of tooling and automation to engage in continuous monitoring across the software development lifecycle—especially after that software is shipped to end users. This includes service performance monitoring, security monitoring, end user experience monitoring, and incident management. <br/><br/>Find out how GitHub gives organizations <a href="https://web.archive.org/web/20220927140619/https://github.com/features/actions">advanced monitoring capabilities &gt;&gt;</a></p> <br/> <p><em>One of the essential parts of a successful DevOps workflow is making sure it’s “continuous,” or always on.</em> This means setting up a process to ensure the workflow takes on a continuous recurring frequency—or, more simply, making sure you’re putting your DevOps workflow into practice. </p> <br/> <h2>How is a DevOps team structured?</h2> <p><br/><br/></p> <p><em>The organizations that are most successful at DevOps don’t focus on building “DevOps teams,” but instead focus on practicing DevOps. In doing so, those organizations prioritize building DevOps environments that are collaborative with an all-in approach that extends across teams and focuses on an end-to-end product instead of siloed, incremental projects.</em></p> <p><br/><br/> Everyone from operations and IT to engineering, product management, user experience, and design plays a role in a successful DevOps environment. The best DevOps practices focus on what role each person serves in the larger organizational mission instead of dividing out teams based on individual responsibilities.</p> <p><img src="//web.archive.org/web/20220927140619im_/https://images.ctfassets.net/wfutmusr1t3h/1zz0LVGkr9JD3wsNC5a1pw/7322592df1a779bd3126bae602abda0d/Graphic_to_represent_roles.png" alt="Graphic to represent roles"/></p> <p>DevOps roles generally fall into four key areas: </p> <ul> <li><p><em>Planning:</em> Planning is integral to any well-functioning DevOps team. Team members who typically play this role include project managers, SCRUM leaders, product managers, operation leads, and engineering leads. People in these roles help coordinate resources, encourage communication, set development schedules, and make sure everyone is working toward a common goal. </p> </li> <li><p><em>Development:</em> Any DevOps team will also always have a strong core development function that includes titles ranging from junior developers to senior developers to staff engineers to directors of engineering and beyond. The goal here is both to develop, commit, review, merge, and ship code. </p> </li> <li><p><em>Delivery:</em> Another component of a successful DevOps team is delivering application iterations through a functioning CI/CD pipeline where code is integrated, tested, staged, and deployed. This will typically be handled by an engineering lead or team that is responsible for building, maintaining, monitoring, and improving the central CI/CD pipeline. They will also typically make sure that development and operations is aware of upcoming releases, existing issues, and bottlenecks to deployment. </p> </li> <li><p><em>Operations:</em> Perhaps the most important role of any DevOps team outside the development arm is operations. These practitioners are responsible for orchestrating server space, managing containers, monitoring application performance, dealing with incidents, and more. Common job titles include system administrators, operations lead, system architect, and system engineer, among other things.</p> </li> </ul> <h5>The key takeaway</h5> <p>DevOps is an organizational transformation rooted in breaking down silos—and that requires everyone's buy-in. While there are specific roles within any successful DevOps practice, the most successful companies avoid building a "DevOps team" that sits apart from the rest of their organization in a new silo. <br/><br/></p> <h2>What role does security play in DevOps?</h2> <p><a href="https://web.archive.org/web/20220927140619/https://resources.github.com/appsec/">Security is important in the entire DevOps lifecycle</a>—in terms of the code developers write, the core infrastructure operations team build, orchestrate, scale, and monitor, the automated security tests, and more. DevOps practitioners often leverage tools or create a number of scripts and workflow automations to continuously test their applications and infrastructure for security vulnerabilities. <a href="https://web.archive.org/web/20220927140619/https://resources.github.com/devops/fundamentals/devsecops">This practice is commonly called DevSecOps</a> and is a derivative function of DevOps where security is prioritized as strongly as development and operations.</p> <h2>What are DevOps best practices?</h2> <p><strong><em>TL;DR:</em></strong> Standard DevOps best practices include cultural changes to break down silos between teams and technology investments in automation, continuous integration, continuous deployment, continuous monitoring, and continuous feedback. </p> <p><a href="https://web.archive.org/web/20220927140619/https://azure.microsoft.com/en-us/resources/enterprise-devops-report-20202021/">According to Microsoft’s Enterprise DevOps Report</a>, organizations that successfully transition to a <a href="https://web.archive.org/web/20220927140619/https://resources.github.com/devops/model/">DevOps model</a> ship code faster and outperform other companies by 4-5x. The number of organizations that meet this bar is climbing fast, too. Between 2018 and 2019, there was a 185% increase in the number of elite DevOps organizations, <a href="https://web.archive.org/web/20220927140619/https://services.google.com/fh/files/misc/state-of-devops-2019.pdf">according to the 2019 State of DevOps report from DORA</a>. But becoming an elite DevOps organization requires a seismic cultural shift and the right tools and technologies. How can organizations find success when adapting to and adopting a DevOps practice? At GitHub, we have identified eight common best practices: </p> <ol> <li><p><strong>Be prepared to change the culture</strong>: DevOps involves tools, processes, and people—but it also involves a cultural shift to encourage traditionally siloed engineering, IT, and operations teams to come together and work collaboratively. This is a seismic shift from traditional technology practices where specialists such as developers, system administrators, and reliability engineers worked in independent silos. In bringing these once-siloed teams together, DevOps helps organizations bring ideas to market faster while improving production system reliability and security. </p> </li> <li><p><strong>Encourage a collaborative environment</strong>: This cultural change should be aimed at building a collaborative environment that removes “us vs. them” between different roles in a DevOps practice. From planning to developing to building to deploying, every step of the DevOps lifecycle should be collaborative and cross-functional—both in terms of communication and execution. Organizations should also strive to orient themselves around the product instead of projects, taking on a mission-first focus to build end-to-end business solutions. </p> </li> <li><p><strong>Shift left to adopt <a href="https://web.archive.org/web/20220927140619/https://resources.github.com/devops/fundamentals/ci-cd/integration">continuous integration</a> and <a href="https://web.archive.org/web/20220927140619/https://resources.github.com/devops/fundamentals/ci-cd/deployment">deployment</a> (CI/CD)</strong>: CI/CD is a fundamental DevOps practice—and the best CI/CD pipelines incorporate a variety of automated tests through the software development lifecycle to improve code quality, identify bugs, deploy code, and optimize and manage the underlying application infrastructure. They also bake security directly into every step of the SDLC—or “shift left,” in industry parlance. This entails automating tests that check code—and the underlying infrastructure—at all stages from when it’s first committed to when it’s built and shipped. </p> </li> <li><p><strong>Monitor the DevOps pipeline and applications with the right metrics</strong>: The best DevOps practitioners continuously monitor their pipelines and applications and identify key performance and security metrics to track. These can include run-time, speed, failure rates, user experience, and security flaws in the underlying code and infrastructure (like database protection). Practitioners will often leverage a combination of tools, automated tests, always-on logs, and alert systems to monitor deployment frequency, application stability, system security, and time to detection, among other things.</p> </li> <li><p><strong>Use the right tools for the job</strong>: From version control to CI/CD to infrastructure as code to container management and more, tooling is vital in DevOps. The right tools for the job depend on an organization’s specific needs and preferences. It also depends on how the core software hosting platforms ability to integrate with an ecosystem of tools.</p> </li> <li><p><strong>Switch from monolithic to microservices architecture</strong>: Over the past 15 years, there has been a move towards microservices to support increasingly complex web-based and cloud-based applications. <br/><br/>This stands in contrast to monolithic application architecture where the underlying infrastructure is organized in a single service—ie, if demand on one part of the application spiked, the entire infrastructure needed to scale to meet that demand. Monolithic architectures are also more difficult to iterate upon because when one part of the application is updated, it requires a full redeployment of the full codebase.<br/><br/>Microservice architectures solve these issues by leveraging individual infrastructure components that run individual application processes. This makes it easier to iterate upon individual components of an application without redeploying the entire codebase; it also makes it easier to scale individual parts of an application to meet real-time demand. </p> </li> <li><p><strong>Collect continuous feedback</strong>: Continuous feedback gives DevOps practitioners key information they need to build, merge, test, iterate, and ship reliable software. Different roles in a given DevOps practice will benefit from receiving different information. While developers should get real-time alerts about code testing reports, production failures, and security vulnerabilities, operations should get information on system stability, service demands, and points of failure, among other things. The goal is to identify key metrics that matter to your organization and teams and track those metrics to improve your SDLC.</p> </li> </ol> <p><br/><br/></p> <p><img src="//web.archive.org/web/20220927140619im_/https://images.ctfassets.net/wfutmusr1t3h/6ODbVQhYMew5p4zQphTbru/c354b012ab6710173f69793e67141da6/DevOps_vs_Agile.png" alt="DevOps vs Agile"/></p> <h3>How is DevOps different from agile?</h3> <p>Here’s a fun fact: In the early 2010s, DevOps was called the second decade of agile development with many seeing it as a natural successor to agile methodology. </p> <p>Despite this, DevOps and agile development aren’t the same thing—but DevOps does build upon and leverage agile methodology, which often leads people to conflate the two practices. </p> <p>At its simplest, agile development methodology seeks to break large software development projects into smaller chunks of work that teams can quickly build, test, get feedback on, and create the next iteration. </p> <p>By contrast, <a href="https://web.archive.org/web/20220927140619/https://resources.github.com/devops/methodology/">DevOps methodology</a> fundamentally seeks to bring large, historically siloed teams (developers and operations) together to enable faster software development and release cadences. </p> <p>But the biggest difference is that DevOps is a whole-business strategy focused on building end-to-end software solutions fast. Agile is by contrast often focused purely on functional software releases.</p> <p><br/><br/></p> <h3>Build your DevOps practice on GitHub</h3> <p>GitHub is an integrated platform that takes companies from idea to planning to production, combining a focused developer experience with powerful, fully managed development, automation, and test infrastructure. </p> <p><a href="https://web.archive.org/web/20220927140619/https://github.com/pricing">Compare pricing plans &gt;&gt;</a></p> <p><br/><br/></p> <blockquote> <p>GitHub helps the company’s long-standing efforts to accelerate development by breaking down communication barriers, shortening feedback loops, and automating tasks wherever possible. </p> </blockquote> <p>Mike Artis, Director of System Engineering at <a href="https://web.archive.org/web/20220927140619/https://github.com/customer-stories/viacomcbs-streaming">ViacomCBS</a> </p> <p><br/><br/></p> <table> <thead> <tr> <th>Go from planning to building</th> <th>Increase developer velocity</th> </tr> </thead> <tbody><tr> <td>Build roadmap plans right next to your codebase and quickly assign tasks to team members with powerful project boards and tables that are fully integrated into your project.<br/><br/> <a href="https://web.archive.org/web/20220927140619/https://github.com/features/issues">Learn about GitHub Issues &gt;</a></td> <td>Reduce the time to commit. Eliminate environment management and context switching for your developers. Simplify IT procurement and maintenance with a secure, managed space in the cloud. <br/><br/> <a href="https://web.archive.org/web/20220927140619/https://github.com/features/codespaces">Explore Codespaces &gt;</a></td> </tr> </tbody></table> <p><br/><br/></p> <table> <thead> <tr> <th>Automate everything</th> <th>Secure your code as you write it</th> </tr> </thead> <tbody><tr> <td>Automate all your software development workflows with GitHub Actions. Scale reliably and securely with powerful development, test, and automation infrastructure, fully managed by GitHub.<br/><br/> <a href="https://web.archive.org/web/20220927140619/https://github.com/features/actions">Learn more about GitHub Actions &gt;</a></td> <td>Secure your code, dependencies, tokens, and sensitive data through the entire software development lifecycle and automatically resolve vulnerabilities.<br/><br/><br/> <a href="https://web.archive.org/web/20220927140619/https://github.com/features/security/">See how we help you stay secure &gt;</a></td> </tr> </tbody></table> </div><nav class="d-flex flex-items-center"><p class="text-mono gradient-fg-purple-red f4-mktg mb-0 mr-4">Tags</p><a class="color-bg-dark color-fg-white text-mono px-3 py-2 rounded-full mr-2 f5 btn-mktg btn-small-mktg font-weight-normal" href="/web/20220927140619/https://resources.github.com/topics/devops/">DevOps</a><a class="color-bg-dark color-fg-white text-mono px-3 py-2 rounded-full mr-2 f5 btn-mktg btn-small-mktg font-weight-normal" href="/web/20220927140619/https://resources.github.com/topics/fundamentals/">Fundamentals</a><a class="color-bg-dark color-fg-white text-mono px-3 py-2 rounded-full mr-2 f5 btn-mktg btn-small-mktg font-weight-normal" href="/web/20220927140619/https://resources.github.com/topics/methodology/">Methodology</a><a class="color-bg-dark color-fg-white text-mono px-3 py-2 rounded-full mr-2 f5 btn-mktg btn-small-mktg font-weight-normal" href="/web/20220927140619/https://resources.github.com/topics/pipeline/">Pipeline</a><a class="color-bg-dark color-fg-white text-mono px-3 py-2 rounded-full mr-2 f5 btn-mktg btn-small-mktg font-weight-normal" href="/web/20220927140619/https://resources.github.com/topics/collaboration/">Collaboration</a><a class="color-bg-dark color-fg-white text-mono px-3 py-2 rounded-full mr-2 f5 btn-mktg btn-small-mktg font-weight-normal" href="/web/20220927140619/https://resources.github.com/topics/continuous-integration-and-deployment/">CI/CD</a><a class="color-bg-dark color-fg-white text-mono px-3 py-2 rounded-full mr-2 f5 btn-mktg btn-small-mktg font-weight-normal" href="/web/20220927140619/https://resources.github.com/topics/automation/">Automation</a></nav></div><div class="container-md" data-nav="light-mode"><section id="form" class="section"><form action="https://web.archive.org/web/20220927140619/https://s88570519.t.eloqua.com/e/f2" style="max-width:384px" class="mx-auto d-flex flex-column flex-items-stretch" data-nav="light-mode"><h2 class="h4-mktg font-weight-bold mb-2 text-center"><span>Wondering how GitHub can help your business?</span></h2><p class="f3-mktg color-fg-secondary text-center mb-6"><span>Tell us more about your needs</span></p><input type="hidden" name="elqSiteId" value="88570519"/><input type="hidden" name="elqFormName" value="ContentReg_TemplateForm"/><input type="hidden" name="sfcampaignid" id="sfcampaignid"/><input type="hidden" name="source" id="source"/><input type="hidden" id="redirect_url" name="redirect_url" value=""/><input type="hidden" name="country" id="country"/><input type="hidden" name="subdivision" id="subdivision"/><input type="hidden" name="city" id="city"/><input type="hidden" name="elqCampaignId" id="elqCampaignId"/><div class="flex-1 flex-self-stretch d-flex flex-column flex-items-stretch mb-4"><div class="form-group-header mb-2"><label class="font-weight-light" for="gated-full-name-1">Full name</label></div><div class="form-group-body"><input type="text" class="form-control input-block py-3 px-3 color-bg-white input-lg" autocomplete="" id="gated-full-name-1" placeholder="First and last name" required="" name="fullName1"/></div></div><div class="flex-1 flex-self-stretch d-flex flex-column flex-items-stretch mb-4"><div class="form-group-header mb-2"><label class="font-weight-light" for="gated-email-address">Email address</label></div><div class="form-group-body"><input type="email" class="form-control input-block py-3 px-3 color-bg-white input-lg" autocomplete="email" id="gated-email-address" placeholder="you@example.com" required="" name="emailAddress"/></div></div><div class="flex-1 flex-self-stretch d-flex flex-column flex-items-stretch mb-4"><div class="form-group-header mb-2"><label class="font-weight-light" for="gated-title">Job Title</label></div><div class="form-group-body"><input type="text" class="form-control input-block py-3 px-3 color-bg-white input-lg" autocomplete="" id="gated-title" placeholder="Job Title" required="" name="title"/></div></div><div class="flex-1 flex-self-stretch d-flex flex-column flex-items-stretch mb-4"><div class="form-group-header mb-2"><label class="font-weight-light" for="gated-company">Company</label></div><div class="form-group-body"><input type="text" class="form-control input-block py-3 px-3 color-bg-white input-lg" autocomplete="" id="gated-company" placeholder="Acme, Inc" required="" name="company"/></div></div><input type="hidden" value="0" name="elqCookieWrite"/><div class="d-flex mb-4"><input type="checkbox" class="flex-shrink-0 mr-3 mt-2" id="gated-agree-marketingEmailOptin1" name="marketingEmailOptin1" value="False"/><label for="gated-agree-marketingEmailOptin1" class="font-weight-light">Yes, I would like to be emailed with the latest news and happenings, products, and special offers from GitHub. If you change your mind, you can unsubscribe at any time. <a href="https://web.archive.org/web/20220927140619/https://docs.github.com/en/github/site-policy/github-privacy-statement">GitHub Privacy Statement</a></label></div><button type="submit" class="btn-mktg arrow-target-mktg flex-self-center mt-3">Contact GitHub<svg xmlns="http://www.w3.org/2000/svg" class="octicon arrow-symbol-mktg" width="16" height="16" viewbox="0 0 16 16" fill="none"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></button></form></section></div></section></main><footer class="color-fg-white" data-nav="dark-mode" data-color-mode="dark" data-dark-theme="dark"><nav class="container-xl d-flex flex-column flex-items-start flex-lg-row py-10 px-4"><a class="Header-link p-3 mr-auto f2" aria-label="GitHub" href="https://web.archive.org/web/20220927140619/https://github.com/home"><span style="box-sizing:border-box;display:inline-block;overflow:hidden;width:85px;height:30px;background:none;opacity:1;border:0;margin:0;padding:0;position:relative"><img alt="GitHub logo" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="fixed" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%"/><noscript><img alt="GitHub logo" srcset="/web/20220927140619im_/https://resources.github.com/assets/images/github-logo-text.svg?w=96&amp;q=75 1x, /web/20220927140619im_/https://resources.github.com/assets/images/github-logo-text.svg?w=256&amp;q=75 2x" src="/web/20220927140619im_/https://resources.github.com/assets/images/github-logo-text.svg?w=256&amp;q=75" decoding="async" data-nimg="fixed" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%" loading="lazy"/></noscript></span></a><div class="d-flex flex-items-start flex-wrap"><div class="d-flex flex-column col-6 col-lg-3 px-4 mb-8"><h3 class="text-mono f4-mktg mb-4">Product</h3><a class="py-2 color-fg-secondary" target="_blank" href="https://web.archive.org/web/20220927140619/https://github.com/features">Features</a><a class="py-2 color-fg-secondary" target="_blank" href="https://web.archive.org/web/20220927140619/https://github.com/security">Security</a><a class="py-2 color-fg-secondary" target="_blank" href="https://web.archive.org/web/20220927140619/https://github.com/team">Team</a><a class="py-2 color-fg-secondary" target="_blank" href="https://web.archive.org/web/20220927140619/https://github.com/enterprise">Enterprise</a><a class="py-2 color-fg-secondary" target="_blank" href="https://web.archive.org/web/20220927140619/https://github.com/customer-stories?type=enterprise">Customer stories</a><a class="py-2 color-fg-secondary" target="_blank" href="https://web.archive.org/web/20220927140619/https://github.com/readme">The ReadME Project</a><a class="py-2 color-fg-secondary" target="_blank" href="https://web.archive.org/web/20220927140619/https://github.com/pricing">Pricing</a><a class="py-2 color-fg-secondary" target="" href="/web/20220927140619/https://resources.github.com/">Resources</a><a class="py-2 color-fg-secondary" target="_blank" href="https://web.archive.org/web/20220927140619/https://github.com/github/roadmap">Roadmap</a></div><div class="d-flex flex-column col-6 col-lg-3 px-4 mb-8"><h3 class="text-mono f4-mktg mb-4">Platform</h3><a class="py-2 color-fg-secondary" target="_blank" href="https://web.archive.org/web/20220927140619/https://docs.github.com/">Developer API</a><a class="py-2 color-fg-secondary" target="_blank" href="https://web.archive.org/web/20220927140619/https://partner.github.com/">Partners</a><a class="py-2 color-fg-secondary" target="_blank" href="https://web.archive.org/web/20220927140619/https://atom.io/">Atom</a><a class="py-2 color-fg-secondary" target="_blank" href="https://web.archive.org/web/20220927140619/https://www.electronjs.org/">Electron</a><a class="py-2 color-fg-secondary" target="_blank" href="https://web.archive.org/web/20220927140619/https://desktop.github.com/">GitHub Desktop</a></div><div class="d-flex flex-column col-6 col-lg-3 px-4 mb-8"><h3 class="text-mono f4-mktg mb-4">Support</h3><a class="py-2 color-fg-secondary" target="_blank" href="https://web.archive.org/web/20220927140619/https://docs.github.com/">Docs</a><a class="py-2 color-fg-secondary" target="_blank" href="https://web.archive.org/web/20220927140619/https://github.community/">Community Forum</a><a class="py-2 color-fg-secondary" target="_blank" href="https://web.archive.org/web/20220927140619/https://services.github.com/">Professional Services</a><a class="py-2 color-fg-secondary" target="_blank" href="https://web.archive.org/web/20220927140619/https://lab.github.com/">Learning Lab</a><a class="py-2 color-fg-secondary" target="_blank" href="https://web.archive.org/web/20220927140619/https://www.githubstatus.com/">Status</a><a class="py-2 color-fg-secondary" target="_blank" href="https://web.archive.org/web/20220927140619/https://support.github.com/?tags=dotcom-footer">Contact GitHub</a></div><div class="d-flex flex-column col-6 col-lg-3 px-4 mb-8"><h3 class="text-mono f4-mktg mb-4">Company</h3><a class="py-2 color-fg-secondary" target="_blank" href="https://web.archive.org/web/20220927140619/https://github.com/about">About</a><a class="py-2 color-fg-secondary" target="_blank" href="https://web.archive.org/web/20220927140619/https://github.blog/">Blog</a><a class="py-2 color-fg-secondary" target="_blank" href="https://web.archive.org/web/20220927140619/https://github.com/about/careers">Careers</a><a class="py-2 color-fg-secondary" target="_blank" href="https://web.archive.org/web/20220927140619/https://github.com/about/press">Press</a><a class="py-2 color-fg-secondary" target="_blank" href="https://web.archive.org/web/20220927140619/https://github.com/about/diversity">Inclusion</a><a class="py-2 color-fg-secondary" target="_blank" href="https://web.archive.org/web/20220927140619/https://socialimpact.github.com/">Social Impact</a><a class="py-2 color-fg-secondary" target="_blank" href="https://web.archive.org/web/20220927140619/https://shop.github.com/">Shop</a></div></div></nav><div class="color-bg-gray color-fg-secondary"><div class="container-xl d-flex flex-column flex-md-row flex-items-start flex-md-items-center p-4 f5"><div class="d-flex flex-items-center flex-order-2 flex-md-order-1"><p class="mb-0 mr-4">GitHub Inc. © 2022</p><a class="p-2 Link--secondary" href="https://web.archive.org/web/20220927140619/https://docs.github.com/en/github/site-policy/github-terms-of-service">Terms</a><a class="p-2 Link--secondary" href="https://web.archive.org/web/20220927140619/https://docs.github.com/en/github/site-policy/github-privacy-statement">Privacy</a><a class="p-2 Link--secondary d-none d-md-inline-block" href="https://web.archive.org/web/20220927140619/https://github.com/site-map">Site Map</a><a class="p-2 Link--secondary d-none d-md-inline-block" href="https://web.archive.org/web/20220927140619/https://github.com/git-guides">What is Git?</a><button class="p-2 btn-link Link--secondary d-inline-block">Manage Cookies</button></div><div class="d-flex flex-items-center ml-md-auto flex-order-1 flex-md-order-2"><a class="px-2 d-none d-xl-block color-fg-muted" target="_blank" rel="noopener" style="width:36px" title="Twitter" href="https://web.archive.org/web/20220927140619/https://twitter.com/github"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 273.5 222.3"><path d="M273.5 26.3a109.77 109.77 0 0 1-32.2 8.8 56.07 56.07 0 0 0 24.7-31 113.39 113.39 0 0 1-35.7 13.6 56.1 56.1 0 0 0-97 38.4 54 54 0 0 0 1.5 12.8A159.68 159.68 0 0 1 19.1 10.3a56.12 56.12 0 0 0 17.4 74.9 56.06 56.06 0 0 1-25.4-7v.7a56.11 56.11 0 0 0 45 55 55.65 55.65 0 0 1-14.8 2 62.39 62.39 0 0 1-10.6-1 56.24 56.24 0 0 0 52.4 39 112.87 112.87 0 0 1-69.7 24 119 119 0 0 1-13.4-.8 158.83 158.83 0 0 0 86 25.2c103.2 0 159.6-85.5 159.6-159.6 0-2.4-.1-4.9-.2-7.3a114.25 114.25 0 0 0 28.1-29.1" fill="rgb(149, 157, 165)"></path></svg></a><a class="px-2 d-none d-xl-block color-fg-muted" target="_blank" rel="noopener" style="width:36px" title="Facebook" href="https://web.archive.org/web/20220927140619/https://www.facebook.com/GitHub"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 15.3 15.4"><path d="M14.5 0H.8a.88.88 0 0 0-.8.9v13.6a.88.88 0 0 0 .8.9h7.3v-6h-2V7.1h2V5.4a2.87 2.87 0 0 1 2.5-3.1h.5a10.87 10.87 0 0 1 1.8.1v2.1h-1.3c-1 0-1.1.5-1.1 1.1v1.5h2.3l-.3 2.3h-2v5.9h3.9a.88.88 0 0 0 .9-.8V.8a.86.86 0 0 0-.8-.8z" fill="rgb(149, 157, 165)"></path></svg></a><a class="px-2 d-none d-xl-block color-fg-muted" target="_blank" rel="noopener" style="width:36px" title="YouTube" href="https://web.archive.org/web/20220927140619/https://www.youtube.com/github"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 19.17 13.6"><path d="M18.77 2.13A2.4 2.4 0 0 0 17.09.42C15.59 0 9.58 0 9.58 0a57.55 57.55 0 0 0-7.5.4A2.49 2.49 0 0 0 .39 2.13 26.27 26.27 0 0 0 0 6.8a26.15 26.15 0 0 0 .39 4.67 2.43 2.43 0 0 0 1.69 1.71c1.52.42 7.5.42 7.5.42a57.69 57.69 0 0 0 7.51-.4 2.4 2.4 0 0 0 1.68-1.71 25.63 25.63 0 0 0 .4-4.67 24 24 0 0 0-.4-4.69zM7.67 9.71V3.89l5 2.91z" fill="rgb(149, 157, 165)"></path></svg></a><a class="px-2 d-none d-xl-block color-fg-muted" target="_blank" rel="noopener" style="width:36px" title="LinkedIn" href="https://web.archive.org/web/20220927140619/https://www.linkedin.com/company/github"><svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 19 18"><path d="M3.94 2A2 2 0 1 1 2 0a2 2 0 0 1 1.94 2zM4 5.48H0V18h4zm6.32 0H6.34V18h3.94v-6.57c0-3.66 4.77-4 4.77 0V18H19v-7.93c0-6.17-7.06-5.94-8.72-2.91z" fill="rgb(149, 157, 165)"></path></svg></a><a class="px-2 d-none d-xl-block color-fg-muted" target="_blank" rel="noopener" style="width:36px" title="GitHub" href="https://web.archive.org/web/20220927140619/https://github.com/github"><svg aria-hidden="true" role="img" class="octicon octicon-mark-github" viewbox="0 0 16 16" width="24" height="24" fill="currentColor" style="display:inline-block;user-select:none;vertical-align:text-bottom;overflow:visible"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path></svg></a></div></div></div></footer></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"resource":{"path":"/devops/fundamentals","title":"DevOps fundamentals: Defining DevOps principles","description":"From headlines to job descriptions, DevOps has emerged as an outsized buzzword over the past decade—and for good reason. Organizations that successfully adopt DevOps often see big gains in software development speeds, improved reliability, faster product iterations, and have an easier time scaling their services. ","body":"\u003cp\u003eFrom headlines to job descriptions, DevOps has emerged as an outsized buzzword over the past decade-and for good reason. Organizations that successfully adopt DevOps often see big gains in software development speeds, improved reliability, faster product iterations, and have an easier time scaling their services. \u003c/p\u003e\n\u003cp\u003eBut despite its roots in software development, DevOps is a holistic business practice that combines people, processes, cultural practices, and technologies to bring previously siloed teams together to deliver speed, value, and quality across the software development lifecycle. \u003c/p\u003e\n\u003cp\u003eThat means there’s often no one-size-fits-all approach. But there are a common set of practices and principles in any successful DevOps implementation. \u003c/p\u003e\n\u003cp\u003eIn the following guide, we’ll explore those practices and principles and answer the following questions: \u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWhat is the main goal of DevOps?\u003c/li\u003e\n\u003cli\u003eWhat are the core DevOps principles? \u003c/li\u003e\n\u003cli\u003eWhat are key stages in a DevOps workflow? \u003c/li\u003e\n\u003cli\u003eWhat role does everyone play in DevOps? \u003c/li\u003e\n\u003cli\u003eWhat does security look like in DevOps?\u003c/li\u003e\n\u003cli\u003eWhat are DevOps best practices? \u003c/li\u003e\n\u003cli\u003eHow is DevOps different from agile?\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat is the main goal of DevOps?\u003c/h2\u003e\n\u003cp\u003eThe main goal of DevOps is to deliver value to produce better software faster that people can use immediately without any problems—and do so in a way that links the underlying infrastructure, the software architecture, and engineering code releases with minimal friction. \nIn the software industry, there has been a belief that organizations can either move fast or build reliable products. DevOps makes it possible to do both and accomplishes this in two big ways: By bringing the traditionally siloed development and operations teams together and building automation into every stage of the software development lifecycle (SDLC). \u003c/p\u003e\n\u003ch2\u003eWhat are core DevOps principles?\u003c/h2\u003e\n\u003cp\u003eInitially coined by Patrick Debois in 2009, the term DevOps is a combination of “development” and “operations,” which explained the initial idea behind it: to bring development and operations teams into a closer working relationship.\u003cbr /\u003eHistorically these two teams worked in silos. Developers coded and built the software, while operations ran quality assurance tests and worked on underlying infrastructure to ensure successful code deployments. This frequently led to difficulties deploying code as development and operations teams would come into conflict. \nWhere Debois and other early DevOps leaders such as Gene Kim and John Willis often broadly characterized DevOps as the integration of development and operations to streamline the software development and release processes, DevOps today has evolved into a holistic business practice that goes beyond individual teams. \u003c/p\u003e\n\u003cp\u003e\u003cbr /\u003e\u003cbr /\u003e\n\u003cem\u003eAt GitHub, we approach DevOps as a philosophy and set of practices that bring development, IT operations, and security teams together to build, test, iterate, and provide regular feedback throughout the SDLC.\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr /\u003e\u003cbr /\u003e\nImplementing DevOps will look different in every organization. But every successful DevOps environment abides by the following core principles: \u003c/p\u003e\n\u003ch3\u003eCollaboration\u003c/h3\u003e\n\u003cp\u003eTo succeed, DevOps requires a close-knit working relationship between operations and development—two teams that historically were siloed from one another. By having all three teams collaborate closely under a DevOps model, you seek to encourage communication and partnership between all three teams to improve your ability to develop, test, operate, deploy, monitor, and iterate upon your application and software stack. \u003c/p\u003e\n\u003ch3\u003eVersion control\u003c/h3\u003e\n\u003cp\u003eVersion control is an integral part of DevOps—and most software development these days, too. A version control system is designed to automatically record file changes and preserve records of previous file versions. \u003c/p\u003e\n\u003ch3\u003eAutomation\u003c/h3\u003e\n\u003cp\u003eAutomation in DevOps commonly means leveraging technology and scripts to create feedback loops between those responsible for maintaining and scaling the underlying infrastructure and those responsible for building the core software. From helping to scale environments to creating software builds and orchestrating tests, automation in DevOps can take on a variety of different forms.\u003c/p\u003e\n\u003cbr /\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003eThe mindset we carry within our team is that we always want to automate ourselves into a better job.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eAndrew Mulholland, Director of Engineering at \u003ca href=\"https://github.com/customer-stories/buzzfeed\"\u003eBuzzfeed\u003c/a\u003e\u003c/p\u003e\n\u003cbr /\u003e\n\n\u003ch3\u003eIncremental releases\u003c/h3\u003e\n\u003cp\u003eIncremental releases are a mainstay in successful DevOps practices and are defined by rapidly shipping small changes and updates based on the previous functionality. Instead of updating a whole application across the board, incremental releases mean development teams can quickly integrate smaller changes into the main branch, test them for quality and security, and then ship them to end users. \u003c/p\u003e\n\u003ch3\u003eOrchestration\u003c/h3\u003e\n\u003cp\u003eOrchestration refers to a set of automated tasks that are built into a single workflow to solve a group of functions such as managing \u003ca href=\"https://resources.github.com/devops/fundamentals/containerization\"\u003econtainers\u003c/a\u003e, launching a new web server, changing a database entry, and integrating a web application. More simply, orchestration helps configure, manage, and coordinate the infrastructure requirements an application needs to run effectively. \u003c/p\u003e\n\u003ch3\u003ePipeline\u003c/h3\u003e\n\u003cp\u003eIn any conversation about DevOps, you’re apt to hear the term \u003ca href=\"https://resources.github.com/devops/pipeline\"\u003epipeline\u003c/a\u003e thrown around fairly regularly. In the simplest terms, a DevOps pipeline is a process that leverages automation and a number of \u003ca href=\"https://resources.github.com/devops/tools/\"\u003etools\u003c/a\u003e to enable developers to quickly ship their code to a testing environment. The operations and development teams will then test that code to detect any security issues, bugs, or issues before deploying it to production. \u003c/p\u003e\n\u003ch3\u003eContinuous integration\u003c/h3\u003e\n\u003cp\u003eContinuous integration, or CI for short, is a practice where a team of developers frequently commit code to a shared central repository via an automated build and test process. By committing small code changes continuously to the main codebase, developers can detect bugs and errors faster. This practice also makes it easier to merge changes from different members of a software development team. \u003c/p\u003e\n\u003ch3\u003eContinuous delivery\u003c/h3\u003e\n\u003cp\u003eContinuous delivery is the practice of using automation to release software updates to end users. Continuous delivery always follows CI so that software can be automatically built and tested before it is released for general use. Taken together, CI and continuous delivery comprise two-thirds of a typical DevOps pipeline. Critically, a continuous delivery model automates everything up to the deployment stage. At this point, human intervention is required to ship software to end users. \u003c/p\u003e\n\u003ch3\u003eContinuous deployment\u003c/h3\u003e\n\u003cp\u003eContinuous deployment, or CD, is the final piece of a complete DevOps pipeline and automates the deployment of code releases. That means if code passes all automated tests throughout the production pipeline, it’s immediately released to end users. CD critically removes the need for human intervention to orchestrate a software release, which results in faster release timelines. This also gives developers more immediate real-world feedback. \u003c/p\u003e\n\u003ch3\u003eContinuous monitoring\u003c/h3\u003e\n\u003cp\u003eContinuous \u003ca href=\"https://resources.github.com/devops/tools/monitoring\"\u003emonitoring\u003c/a\u003e is a set of automated processes and tooling used to troubleshoot issues and development teams can use to inform future development cycles, fix bugs, and patch issues. A well established continuous monitoring system will typically contain four components:\u003c/p\u003e\n\u003cp\u003e 1.\u003cstrong\u003eLogging\u003c/strong\u003e offers a continuous stream of raw data about business-critical components. \u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eMonitoring\u003c/strong\u003e provides intelligence about the raw data provided in logs and metrics.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eAlerting\u003c/strong\u003e provides proactive notifications when something has gone wrong and critical debugging information.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eTracing\u003c/strong\u003e takes logging a step further, providing a deeper level of application performance and behavioral insights that can greatly impact the stability and scalability of applications in production environments.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2\u003eFeedback sharing (or feedback loops)\u003c/h2\u003e\n\u003cp\u003eFeedback sharing—or feedback loops—is a common DevOps term first defined in the seminal book \u003ca href=\"https://www.amazon.com/Phoenix-Project-DevOps-Helping-Business/dp/0988262592\"\u003eThe Phoenix Project by Gene Kim\u003c/a\u003e. Kim explains it this way: “The goal of almost any process improvement initiative is to shorten and amplify feedback loops so necessary corrections can be continually made.” In simple terms, a feedback loop is a process for monitoring application and infrastructure performance for potential issues or bugs and tracking end-user activity within the application itself. \u003c/p\u003e\n\u003ch2\u003eWhat are the key stages in a DevOps workflow?\u003c/h2\u003e\n\u003cp\u003eThe DevOps lifecycle is rooted in finding collaborative ways to plan ahead, define application and infrastructure requirements, identify areas in the SDLC that can be automated, and make sure everyone is on the same page. \nThis all comes back to the goal of DevOps: to deliver value and produce quality software that reaches end users as quickly as possible. \n\u003cimg src=\"//images.ctfassets.net/wfutmusr1t3h/4ez2WNMQR71INMMV61qY45/c051e8c0717eea08136f110dc32c82e6/The_eight_stages_of_a_successful_DevOps_workflow.png\" alt=\"The eight stages of a successful DevOps workflow\" /\u003e\u003c/p\u003e\n\u003ch3\u003eThe eight stages of a successful DevOps workflow\u003c/h3\u003e\n\u003ch4\u003e1. Planning\u003c/h4\u003e\n\u003cp\u003eTypically a product manager and an engineering lead will work in tandem to plan roadmaps and sprints. Teams will leverage project management tools such as kanban boards to build out development schedules. \u003cbr /\u003e\u003cbr /\u003eLearn how to use GitHub for project planning with \u003ca href=\"https://github.com/features/issues\"\u003eGitHub Issues \u0026gt;\u0026gt;\u003c/a\u003e \u003c/p\u003e\n\u003ch4\u003e2. Coding\u003c/h4\u003e\n\u003cp\u003eAfter planning is complete, developers will begin building code and engage in subsequent tasks such as code review, code merges, and code management in a shared repository. \u003cbr /\u003e\u003cbr /\u003eFind out how \u003ca href=\"https://github.com/features\"\u003edevelopers code on GitHub \u0026gt;\u0026gt;\u003c/a\u003e \u003c/p\u003e\n\u003ch4\u003e3. Building\u003c/h4\u003e\n\u003cp\u003eAs code is developed and reviewed, engineers will engage in merging—or continuously integrating—that code with their source code in a shared and centralized code repository. This is typically done with continuous integration to test code changes and version control tools to track new code commits. \u003cbr /\u003e\u003cbr /\u003eSee how GitHub enables \u003ca href=\"https://github.com/features/actions\"\u003eCI/CD for code integration and application building \u0026gt;\u0026gt;\u003c/a\u003e \u003c/p\u003e\n\u003ch4\u003e4. Testing\u003c/h4\u003e\n\u003cp\u003eDuring the build process, continuous testing helps ensure new code additions don’t introduce bugs, performance dips, or security flaws to the source code. This is accomplished through a series of automated tests that are applied to each new code commit. \u003cbr /\u003e\u003cbr /\u003eLearn how to use GitHub to \u003ca href=\"https://github.com/features/actions\"\u003ebuild a continuous testing pipeline \u0026gt;\u0026gt;\u003c/a\u003e\u003c/p\u003e\n\u003ch4\u003e5. Packaging\u003c/h4\u003e\n\u003cp\u003eBefore launching a new iteration of an application, a team will package its code in a structure that can be deployed. This can sometimes include sharing reusable components for sharing via package ecosystems such as npm, Maven, or Nuget. This can also involve packaging code into artifacts, which are created throughout the software development lifecycle, and deploying them to a staging environment to do final checks and store any artifacts.\u003cbr /\u003e\u003cbr /\u003eExplore \u003ca href=\"https://github.com/features/packages\"\u003eGitHub’s integrated packaging solution \u0026gt;\u0026gt;\u003c/a\u003e \u003c/p\u003e\n\u003ch4\u003e6. Releasing\u003c/h4\u003e\n\u003cp\u003eThe team will release a new iterative version of an application to end users. This typically includes release automation tooling or scripts and change management tools which can be used in the event a change doesn’t work in deployment and needs to be rolled back. \u003cbr /\u003e\u003cbr /\u003eSee how companies \u003ca href=\"https://github.com/features/actions\"\u003erelease software on GitHub \u0026gt;\u0026gt;\u003c/a\u003e \u003c/p\u003e\n\u003ch4\u003e7. Operating\u003c/h4\u003e\n\u003cp\u003eThroughout all stages of the SDLC, DevOps practitioners ensure the core infrastructure the application needs to run on works—this includes setting up testing environments, staging or pre-deployment environments, and deployment environments. \u003cbr /\u003eOnce an application is being used by end users, there is also a need to ensure that the underlying infrastructure such as containers and cloud-based servers can scale to meet demand. \u003cbr /\u003ePractitioners will typically leverage infrastructure-as-code tools to make sure the underlying systems meet real-time demand as it scales up and down. They will also engage in ongoing security checks, data backups, and database management, among other things. \u003cbr /\u003e\u003cbr /\u003eLearn how \u003ca href=\"https://github.com/enterprise\"\u003eGitHub enables software operations \u0026gt;\u0026gt;\u003c/a\u003e\u003c/p\u003e\n\u003ch4\u003e8. Monitoring\u003c/h4\u003e\n\u003cp\u003eDevOps practitioners implement a mixture of tooling and automation to engage in continuous monitoring across the software development lifecycle—especially after that software is shipped to end users. This includes service performance monitoring, security monitoring, end user experience monitoring, and incident management. \u003cbr /\u003e\u003cbr /\u003eFind out how GitHub gives organizations \u003ca href=\"https://github.com/features/actions\"\u003eadvanced monitoring capabilities \u0026gt;\u0026gt;\u003c/a\u003e\u003c/p\u003e\n\u003cbr /\u003e\n\n\u003cp\u003e\u003cem\u003eOne of the essential parts of a successful DevOps workflow is making sure it’s “continuous,” or always on.\u003c/em\u003e This means setting up a process to ensure the workflow takes on a continuous recurring frequency—or, more simply, making sure you’re putting your DevOps workflow into practice. \u003c/p\u003e\n\u003cbr /\u003e\n\n\u003ch2\u003eHow is a DevOps team structured?\u003c/h2\u003e\n\u003cp\u003e\u003cbr /\u003e\u003cbr /\u003e\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eThe organizations that are most successful at DevOps don’t focus on building “DevOps teams,” but instead focus on practicing DevOps. In doing so, those organizations prioritize building DevOps environments that are collaborative with an all-in approach that extends across teams and focuses on an end-to-end product instead of siloed, incremental projects.\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr /\u003e\u003cbr /\u003e\nEveryone from operations and IT to engineering, product management, user experience, and design plays a role in a successful DevOps environment. \nThe best DevOps practices focus on what role each person serves in the larger organizational mission instead of dividing out teams based on individual responsibilities.\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"//images.ctfassets.net/wfutmusr1t3h/1zz0LVGkr9JD3wsNC5a1pw/7322592df1a779bd3126bae602abda0d/Graphic_to_represent_roles.png\" alt=\"Graphic to represent roles\" /\u003e\u003c/p\u003e\n\u003cp\u003eDevOps roles generally fall into four key areas: \u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cp\u003e\u003cem\u003ePlanning:\u003c/em\u003e \nPlanning is integral to any well-functioning DevOps team. Team members who typically play this role include project managers, SCRUM leaders, product managers, operation leads, and engineering leads. People in these roles help coordinate resources, encourage communication, set development schedules, and make sure everyone is working toward a common goal. \u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cem\u003eDevelopment:\u003c/em\u003e \nAny DevOps team will also always have a strong core development function that includes titles ranging from junior developers to senior developers to staff engineers to directors of engineering and beyond. The goal here is both to develop, commit, review, merge, and ship code. \u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cem\u003eDelivery:\u003c/em\u003e \nAnother component of a successful DevOps team is delivering application iterations through a functioning CI/CD pipeline where code is integrated, tested, staged, and deployed. This will typically be handled by an engineering lead or team that is responsible for building, maintaining, monitoring, and improving the central CI/CD pipeline. They will also typically make sure that development and operations is aware of upcoming releases, existing issues, and bottlenecks to deployment. \u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cem\u003eOperations:\u003c/em\u003e \nPerhaps the most important role of any DevOps team outside the development arm is operations. These practitioners are responsible for orchestrating server space, managing containers, monitoring application performance, dealing with incidents, and more. Common job titles include system administrators, operations lead, system architect, and system engineer, among other things.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch5\u003eThe key takeaway\u003c/h5\u003e\n\u003cp\u003eDevOps is an organizational transformation rooted in breaking down silos—and that requires everyone's buy-in. While there are specific roles within any successful DevOps practice, the most successful companies avoid building a \"DevOps team\" that sits apart from the rest of their organization in a new silo.\n\u003cbr /\u003e\u003cbr /\u003e\u003c/p\u003e\n\u003ch2\u003eWhat role does security play in DevOps?\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://resources.github.com/appsec/\"\u003eSecurity is important in the entire DevOps lifecycle\u003c/a\u003e—in terms of the code developers write, the core infrastructure operations team build, orchestrate, scale, and monitor, the automated security tests, and more. \nDevOps practitioners often leverage tools or create a number of scripts and workflow automations to continuously test their applications and infrastructure for security vulnerabilities. \n\u003ca href=\"https://resources.github.com/devops/fundamentals/devsecops\"\u003eThis practice is commonly called DevSecOps\u003c/a\u003e and is a derivative function of DevOps where security is prioritized as strongly as development and operations.\u003c/p\u003e\n\n\n\u003ch2\u003eWhat are DevOps best practices?\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cem\u003eTL;DR:\u003c/em\u003e\u003c/strong\u003e Standard DevOps best practices include cultural changes to break down silos between teams and technology investments in automation, continuous integration, continuous deployment, continuous monitoring, and continuous feedback. \u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://azure.microsoft.com/en-us/resources/enterprise-devops-report-20202021/\"\u003eAccording to Microsoft’s Enterprise DevOps Report\u003c/a\u003e, organizations that successfully transition to a \u003ca href=\"https://resources.github.com/devops/model/\"\u003eDevOps model\u003c/a\u003e ship code faster and outperform other companies by 4-5x. \nThe number of organizations that meet this bar is climbing fast, too. Between 2018 and 2019, there was a 185% increase in the number of elite DevOps organizations, \u003ca href=\"https://services.google.com/fh/files/misc/state-of-devops-2019.pdf\"\u003eaccording to the 2019 State of DevOps report from DORA\u003c/a\u003e.\nBut becoming an elite DevOps organization requires a seismic cultural shift and the right tools and technologies. \nHow can organizations find success when adapting to and adopting a DevOps practice? At GitHub, we have identified eight common best practices: \u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eBe prepared to change the culture\u003c/strong\u003e: DevOps involves tools, processes, and people—but it also involves a cultural shift to encourage traditionally siloed engineering, IT, and operations teams to come together and work collaboratively. This is a seismic shift from traditional technology practices where specialists such as developers, system administrators, and reliability engineers worked in independent silos. In bringing these once-siloed teams together, DevOps helps organizations bring ideas to market faster while improving production system reliability and security. \u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eEncourage a collaborative environment\u003c/strong\u003e: This cultural change should be aimed at building a collaborative environment that removes “us vs. them” between different roles in a DevOps practice. From planning to developing to building to deploying, every step of the DevOps lifecycle should be collaborative and cross-functional—both in terms of communication and execution. Organizations should also strive to orient themselves around the product instead of projects, taking on a mission-first focus to build end-to-end business solutions. \u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eShift left to adopt \u003ca href=\"https://resources.github.com/devops/fundamentals/ci-cd/integration\"\u003econtinuous integration\u003c/a\u003e and \u003ca href=\"https://resources.github.com/devops/fundamentals/ci-cd/deployment\"\u003edeployment\u003c/a\u003e (CI/CD)\u003c/strong\u003e: CI/CD is a fundamental DevOps practice—and the best CI/CD pipelines incorporate a variety of automated tests through the software development lifecycle to improve code quality, identify bugs, deploy code, and optimize and manage the underlying application infrastructure. They also bake security directly into every step of the SDLC—or “shift left,” in industry parlance. This entails automating tests that check code—and the underlying infrastructure—at all stages from when it’s first committed to when it’s built and shipped. \u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eMonitor the DevOps pipeline and applications with the right metrics\u003c/strong\u003e: The best DevOps practitioners continuously monitor their pipelines and applications and identify key performance and security metrics to track. These can include run-time, speed, failure rates, user experience, and security flaws in the underlying code and infrastructure (like database protection). Practitioners will often leverage a combination of tools, automated tests, always-on logs, and alert systems to monitor deployment frequency, application stability, system security, and time to detection, among other things.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eUse the right tools for the job\u003c/strong\u003e: From version control to CI/CD to infrastructure as code to container management and more, tooling is vital in DevOps. The right tools for the job depend on an organization’s specific needs and preferences. It also depends on how the core software hosting platforms ability to integrate with an ecosystem of tools.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eSwitch from monolithic to microservices architecture\u003c/strong\u003e: Over the past 15 years, there has been a move towards microservices to support increasingly complex web-based and cloud-based applications. \u003cbr /\u003e\u003cbr /\u003eThis stands in contrast to monolithic application architecture where the underlying infrastructure is organized in a single service—ie, if demand on one part of the application spiked, the entire infrastructure needed to scale to meet that demand. Monolithic architectures are also more difficult to iterate upon because when one part of the application is updated, it requires a full redeployment of the full codebase.\u003cbr /\u003e\u003cbr /\u003eMicroservice architectures solve these issues by leveraging individual infrastructure components that run individual application processes. This makes it easier to iterate upon individual components of an application without redeploying the entire codebase; it also makes it easier to scale individual parts of an application to meet real-time demand. \u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cp\u003e\u003cstrong\u003eCollect continuous feedback\u003c/strong\u003e: Continuous feedback gives DevOps practitioners key information they need to build, merge, test, iterate, and ship reliable software. Different roles in a given DevOps practice will benefit from receiving different information. While developers should get real-time alerts about code testing reports, production failures, and security vulnerabilities, operations should get information on system stability, service demands, and points of failure, among other things. The goal is to identify key metrics that matter to your organization and teams and track those metrics to improve your SDLC.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e\u003cbr /\u003e\u003cbr /\u003e\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"//images.ctfassets.net/wfutmusr1t3h/6ODbVQhYMew5p4zQphTbru/c354b012ab6710173f69793e67141da6/DevOps_vs_Agile.png\" alt=\"DevOps vs Agile\" /\u003e\u003c/p\u003e\n\u003ch3\u003eHow is DevOps different from agile?\u003c/h3\u003e\n\u003cp\u003eHere’s a fun fact: In the early 2010s, DevOps was called the second decade of agile development with many seeing it as a natural successor to agile methodology. \u003c/p\u003e\n\u003cp\u003eDespite this, DevOps and agile development aren’t the same thing—but DevOps does build upon and leverage agile methodology, which often leads people to conflate the two practices. \u003c/p\u003e\n\u003cp\u003eAt its simplest, agile development methodology seeks to break large software development projects into smaller chunks of work that teams can quickly build, test, get feedback on, and create the next iteration. \u003c/p\u003e\n\u003cp\u003eBy contrast, \u003ca href=\"https://resources.github.com/devops/methodology/\"\u003eDevOps methodology\u003c/a\u003e fundamentally seeks to bring large, historically siloed teams (developers and operations) together to enable faster software development and release cadences. \u003c/p\u003e\n\u003cp\u003eBut the biggest difference is that DevOps is a whole-business strategy focused on building end-to-end software solutions fast. Agile is by contrast often focused purely on functional software releases.\u003c/p\u003e\n\u003cp\u003e\u003cbr /\u003e\u003cbr /\u003e\u003c/p\u003e\n\u003ch3\u003eBuild your DevOps practice on GitHub\u003c/h3\u003e\n\u003cp\u003eGitHub is an integrated platform that takes companies from idea to planning to production, combining a focused developer experience with powerful, fully managed development, automation, and test infrastructure. \u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pricing\"\u003eCompare pricing plans \u0026gt;\u0026gt;\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cbr /\u003e\u003cbr /\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eGitHub helps the company’s long-standing efforts to accelerate development by breaking down communication barriers, shortening feedback loops, and automating tasks wherever possible. \u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eMike Artis, Director of System Engineering at \u003ca href=\"https://github.com/customer-stories/viacomcbs-streaming\"\u003eViacomCBS\u003c/a\u003e \u003c/p\u003e\n\u003cp\u003e\u003cbr /\u003e\u003cbr /\u003e\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eGo from planning to building\u003c/th\u003e\n\u003cth\u003eIncrease developer velocity\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003ctd\u003eBuild roadmap plans right next to your codebase and quickly assign tasks to team members with powerful project boards and tables that are fully integrated into your project.\u003cbr /\u003e\u003cbr /\u003e \u003ca href=\"https://github.com/features/issues\"\u003eLearn about GitHub Issues \u0026gt;\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eReduce the time to commit. Eliminate environment management and context switching for your developers. Simplify IT procurement and maintenance with a secure, managed space in the cloud. \u003cbr /\u003e\u003cbr /\u003e \u003ca href=\"https://github.com/features/codespaces\"\u003eExplore Codespaces \u0026gt;\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\u003c/table\u003e\n\u003cp\u003e\u003cbr /\u003e\u003cbr /\u003e\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eAutomate everything\u003c/th\u003e\n\u003cth\u003eSecure your code as you write it\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003ctd\u003eAutomate all your software development workflows with GitHub Actions. Scale reliably and securely with powerful development, test, and automation infrastructure, fully managed by GitHub.\u003cbr /\u003e\u003cbr /\u003e \u003ca href=\"https://github.com/features/actions\"\u003eLearn more about GitHub Actions \u0026gt;\u003c/a\u003e\u003c/td\u003e\n\u003ctd\u003eSecure your code, dependencies, tokens, and sensitive data through the entire software development lifecycle and automatically resolve vulnerabilities.\u003cbr /\u003e\u003cbr /\u003e\u003cbr /\u003e \u003ca href=\"https://github.com/features/security/\"\u003eSee how we help you stay secure \u0026gt;\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\u003c/table\u003e\n","lang":"en","resource":{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"wfutmusr1t3h"}},"id":"1UHg6YfXhNIbutCKSVfQTj","type":"Entry","createdAt":"2022-05-25T00:44:34.583Z","updatedAt":"2022-05-25T00:44:34.583Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":1,"contentType":{"sys":{"type":"Link","linkType":"ContentType","id":"article"}},"locale":"en-US"},"fields":{}},"gated":false,"contentForm":{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"wfutmusr1t3h"}},"id":"pmnVmHkijaZ30Z2I2hA7J","type":"Entry","createdAt":"2022-03-12T20:28:08.930Z","updatedAt":"2022-08-08T20:37:16.118Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":7,"contentType":{"sys":{"type":"Link","linkType":"ContentType","id":"form"}},"locale":"en-US"},"fields":{"name":"form-content-reg","eloquaFormName":"ContentReg_TemplateForm","formElements":[{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"wfutmusr1t3h"}},"id":"7ISWNSK4Awj3y7KobgnS7W","type":"Entry","createdAt":"2022-03-12T20:15:23.062Z","updatedAt":"2022-03-12T20:39:15.182Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":4,"contentType":{"sys":{"type":"Link","linkType":"ContentType","id":"formElement"}},"locale":"en-US"},"fields":{"label":"Full name","htmlName":"fullName1","type":"text","placeholder":"First and last name","required":true,"description":""}},{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"wfutmusr1t3h"}},"id":"1oc1nNacqE77XQSuJXaNdl","type":"Entry","createdAt":"2022-03-12T20:17:06.911Z","updatedAt":"2022-08-08T22:33:47.148Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":6,"contentType":{"sys":{"type":"Link","linkType":"ContentType","id":"formElement"}},"locale":"en-US"},"fields":{"label":"Email address","htmlName":"emailAddress","type":"email","placeholder":"you@example.com","required":true,"description":""}},{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"wfutmusr1t3h"}},"id":"40sP3SIDeLJIKo7gAvmAdv","type":"Entry","createdAt":"2022-03-12T20:30:16.766Z","updatedAt":"2022-03-13T19:50:57.169Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":3,"contentType":{"sys":{"type":"Link","linkType":"ContentType","id":"formElement"}},"locale":"en-US"},"fields":{"label":"Job Title","htmlName":"title","type":"text","placeholder":"Job Title","required":true,"description":""}},{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"wfutmusr1t3h"}},"id":"5HOQnFx9120Wj4hlsjXaJn","type":"Entry","createdAt":"2022-03-12T20:19:03.843Z","updatedAt":"2022-03-12T20:38:04.798Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":3,"contentType":{"sys":{"type":"Link","linkType":"ContentType","id":"formElement"}},"locale":"en-US"},"fields":{"label":"Company","htmlName":"company","type":"text","placeholder":"Acme, Inc","required":true,"description":""}},{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"wfutmusr1t3h"}},"id":"5zNCZ4hVsez1AWpp6Fga7h","type":"Entry","createdAt":"2022-03-12T20:23:32.191Z","updatedAt":"2022-08-08T22:33:47.191Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":4,"contentType":{"sys":{"type":"Link","linkType":"ContentType","id":"formElement"}},"locale":"en-US"},"fields":{"htmlName":"elqCustomerGUID","type":"hidden","required":false,"description":""}},{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"wfutmusr1t3h"}},"id":"7a3HDjJcLkWmsPKHATLvna","type":"Entry","createdAt":"2022-03-12T20:24:00.556Z","updatedAt":"2022-08-08T22:33:47.210Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":4,"contentType":{"sys":{"type":"Link","linkType":"ContentType","id":"formElement"}},"locale":"en-US"},"fields":{"htmlName":"elqCookieWrite","type":"hidden","required":false,"defaultValue":"0","description":""}}]}},"seo":{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"wfutmusr1t3h"}},"id":"7mmMmTLhw3PdQP6Af5Y2y0","type":"Entry","createdAt":"2022-05-25T00:45:39.398Z","updatedAt":"2022-09-12T11:42:07.670Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":2,"contentType":{"sys":{"type":"Link","linkType":"ContentType","id":"seo"}},"locale":"en-US"},"fields":{"metaTitle":"DevOps Fundamentals- Defining DevOps Principles - GitHub","metaDescription":"Organizations can benefit from DevOps, but what does that entail? Discover the principles of DevOps, the best practices, and workflows that leads to a successful pipeline.","metaImage":{"metadata":{"tags":[]},"sys":{"space":{"sys":{"type":"Link","linkType":"Space","id":"wfutmusr1t3h"}},"id":"7nFIf9oHIcL0KgbFkHplSZ","type":"Asset","createdAt":"2022-09-12T11:41:58.718Z","updatedAt":"2022-09-12T11:41:58.718Z","environment":{"sys":{"id":"master","type":"Link","linkType":"Environment"}},"revision":1,"locale":"en-US"},"fields":{"title":"DevOps banner 4","description":"","file":{"url":"//web.archive.org/web/20220927140619/https://images.ctfassets.net/wfutmusr1t3h/7nFIf9oHIcL0KgbFkHplSZ/222c96669535b82f5bf237dd41c1f4bf/DevOps_Social_Main_Component__14_.png","details":{"size":1977295,"image":{"width":1200,"height":656}},"fileName":"DevOps Social Main Component (14).png","contentType":"image/png"}}}}},"tags":[{"slug":"devops","label":"DevOps","type":"Topic"},{"slug":"fundamentals","label":"Fundamentals","type":"Topic"},{"slug":"methodology","label":"Methodology","type":"Topic"},{"slug":"pipeline","label":"Pipeline","type":"Topic"},{"slug":"collaboration","label":"Collaboration","type":"Topic"},{"slug":"continuous-integration-and-deployment","label":"CI/CD","type":"Topic"},{"slug":"automation","label":"Automation","type":"Topic"}],"buttonCTA":"Contact GitHub","publicationDate":"2022-05-23T12:00+00:00","hidden":false,"rendersRichText":false,"gatedContent":null,"data":{"readTime":13}},"type":"resource","navClass":"blur-mode"},"__N_SSG":true},"page":"/[...path]","query":{"path":["devops","fundamentals"]},"buildId":"l_IYb_rOrISahb1OvjBGz","isFallback":false,"gsp":true,"scriptLoader":[]}</script></body></html><!-- FILE ARCHIVED ON 14:06:19 Sep 27, 2022 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 20:48:41 Feb 16, 2025. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)). --> <!-- playback timings (ms): captures_list: 1.174 exclusion.robots: 0.058 exclusion.robots.policy: 0.035 esindex: 0.02 cdx.remote: 9.244 LoadShardBlock: 859.814 (3) PetaboxLoader3.datanode: 693.851 (4) PetaboxLoader3.resolve: 135.935 (2) load_resource: 124.639 -->

Pages: 1 2 3 4 5 6 7 8 9 10