{"id":56103,"date":"2021-02-04T12:30:03","date_gmt":"2021-02-04T20:30:03","guid":{"rendered":"https:\/\/github.blog\/?p=56103"},"modified":"2022-02-04T10:24:09","modified_gmt":"2022-02-04T18:24:09","slug":"extending-gitops-to-reliability-as-code-with-github-and-stackpulse","status":"publish","type":"post","link":"https:\/\/github.blog\/enterprise-software\/devops\/extending-gitops-to-reliability-as-code-with-github-and-stackpulse\/","title":{"rendered":"Extending GitOps to reliability-as-code with GitHub and StackPulse"},"content":{"rendered":"<p><em>This is a partner post by <a href=\"https:\/\/github.com\/leonidbelkind\" target=\"_blank\" rel=\"noopener\">Leonid Belkind<\/a>, the Co-Founder and CTO at <a href=\"https:\/\/stackpulse.com\/\" target=\"_blank\" rel=\"noopener\">StackPulse<\/a><\/em><\/p>\n<p>Over the past decade, engineering-led practices have replaced traditional IT operations across the software development lifecycle. This has allowed developers to build, test and deploy software services faster than ever before possible. Consider the following examples:<\/p>\n<p><img data-recalc-dims=\"1\" decoding=\"async\" loading=\"lazy\" class=\"alignnone size-large wp-image-56106\" src=\"https:\/\/github.blog\/wp-content\/uploads\/2021\/02\/106926699-35f8fd00-66c6-11eb-96a6-6e51c626fab1.png?w=1024&#038;resize=1024%2C287\" alt=\"Chart showing changes to traditional SDLC\" width=\"1024\" height=\"287\" srcset=\"https:\/\/github.blog\/wp-content\/uploads\/2021\/02\/106926699-35f8fd00-66c6-11eb-96a6-6e51c626fab1.png?w=3481 3481w, https:\/\/github.blog\/wp-content\/uploads\/2021\/02\/106926699-35f8fd00-66c6-11eb-96a6-6e51c626fab1.png?w=300 300w, https:\/\/github.blog\/wp-content\/uploads\/2021\/02\/106926699-35f8fd00-66c6-11eb-96a6-6e51c626fab1.png?w=768 768w, https:\/\/github.blog\/wp-content\/uploads\/2021\/02\/106926699-35f8fd00-66c6-11eb-96a6-6e51c626fab1.png?w=1024 1024w, https:\/\/github.blog\/wp-content\/uploads\/2021\/02\/106926699-35f8fd00-66c6-11eb-96a6-6e51c626fab1.png?w=1536 1536w, https:\/\/github.blog\/wp-content\/uploads\/2021\/02\/106926699-35f8fd00-66c6-11eb-96a6-6e51c626fab1.png?w=2048 2048w, https:\/\/github.blog\/wp-content\/uploads\/2021\/02\/106926699-35f8fd00-66c6-11eb-96a6-6e51c626fab1.png?w=3000 3000w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>In each instance, a mostly manual process has been replaced with automation, removing bottlenecks and increasing deployment velocity. But when it comes to ensuring the reliability of software services in production, the process is still predominantly manual. Even in the most advanced technological organizations, when a production monitoring system produces an alert, what follows is mostly manual process of going through the following steps:<\/p>\n<p><img data-recalc-dims=\"1\" decoding=\"async\" loading=\"lazy\" class=\"alignnone size-large wp-image-56107\" src=\"https:\/\/github.blog\/wp-content\/uploads\/2021\/02\/106926705-372a2a00-66c6-11eb-9ee8-629adf7e3e56.png?w=1024&#038;resize=1024%2C353\" alt=\"Diagram showing traditional alert workflow: enrich, identify, and remediate or resolve\" width=\"1024\" height=\"353\" srcset=\"https:\/\/github.blog\/wp-content\/uploads\/2021\/02\/106926705-372a2a00-66c6-11eb-9ee8-629adf7e3e56.png?w=3477 3477w, https:\/\/github.blog\/wp-content\/uploads\/2021\/02\/106926705-372a2a00-66c6-11eb-9ee8-629adf7e3e56.png?w=300 300w, https:\/\/github.blog\/wp-content\/uploads\/2021\/02\/106926705-372a2a00-66c6-11eb-9ee8-629adf7e3e56.png?w=768 768w, https:\/\/github.blog\/wp-content\/uploads\/2021\/02\/106926705-372a2a00-66c6-11eb-9ee8-629adf7e3e56.png?w=1024 1024w, https:\/\/github.blog\/wp-content\/uploads\/2021\/02\/106926705-372a2a00-66c6-11eb-9ee8-629adf7e3e56.png?w=1536 1536w, https:\/\/github.blog\/wp-content\/uploads\/2021\/02\/106926705-372a2a00-66c6-11eb-9ee8-629adf7e3e56.png?w=2048 2048w, https:\/\/github.blog\/wp-content\/uploads\/2021\/02\/106926705-372a2a00-66c6-11eb-9ee8-629adf7e3e56.png?w=3000 3000w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>Additionally, throughout the above steps, there is always a matter of communicating the current state and the planned steps\/time-lines to relevant stakeholders, inviting additional stakeholders to participate in the process, and so on.<\/p>\n<h2 id=\"turning-operations-into-code\"><a class=\"heading-link\" href=\"#turning-operations-into-code\">Turning operations into code<span class=\"heading-hash pl-2 text-italic text-bold\" aria-hidden=\"true\"><\/span><\/a><\/h2>\n<p><a href=\"https:\/\/stackpulse.com\" target=\"_blank\" rel=\"noopener\">StackPulse<\/a> is a platform that allows defining the above processes and steps as code\u2014to an extent similar to defining testing or deployment procedures as one. The code, leveraging software engineering best practices, can be modular, generic, with clear interfaces between modules, allowing its developers to model operational processes the same way they would do it with business logic. It allows the operational process to be subjected to versioning, testing and review cycles, ensuring that it \u201cdelivers on its promise\u201d when being executed in production.<\/p>\n<p>Let\u2019s take a concrete example for an operational process\u2014every time we receive an alert on a database server being slower than usual to respond to requests, we would start handling it by taking the following actions:<\/p>\n<ul>\n<li>Understand which database server is responsible for originating the alert.<\/li>\n<li>Check if all database requests are equally slow or only specific ones and group them by source, data type, operation, etc.<\/li>\n<li>Check if the services impacted by the database slowness are failing to deliver their responses according to their expectations and which business processes are impacted by it.<\/li>\n<\/ul>\n<p>Similarly, we could define the following steps of remediating and resolving various issues and creating well-defined processes both for generic remediations and for handling very specific situations.<\/p>\n<p>We could also approach describing the above mentioned steps as a process defined similarly to the below:<\/p>\n<pre><code>apiVersion: stackpulse.io\/v1\nkind: Playbook\nmetadata:\nname: enrich-and-diagnose-database-alerts\ndescription: This playbook enriches alerts related to database services and tries to identify most common sources of possible problems\nparameters:\n- name: database_server\ntype: var\ndescription: Address of the database server\n\nsteps:\n\n# Retrieve general information about the database server\n- name: stackpulse\/general_db_info\nid: get_db_info\nenv:\nDATABASE: '{{ $.params.database_server }}'\nAUTH: '{{ secret \"database_access_key\" }}'\n\n# Get a breakdown of database requests latency for the past 30 minutes\n- name: stackpulse\/db_requests_latency_analysis\nid: get_db_latency\nenv:\nDATABASE: '{{ $.params.database_server }}'\nAUTH: '{{ secret \"database_access_key\" }}'\nTIME: \"30m\n\n* * *<\/code><\/pre>\n<p>The above code is an expression of an operational process, consisting of well-defined steps each receiving arguments and performing a certain action. In this case, the actions are taken during the enrichment phase of the incident, but the principle is not limited in any way to this stage.<\/p>\n<p>When building the platform that would allow expressing processes as code it was important for us to maintain some important basic principles:<\/p>\n<ul>\n<li>Building such processes as code should be very easy and should allow focusing on the logic of the process<\/li>\n<li>Expressing logical connections between various steps should be possible, in order to translate multi-step processes into as code equivalents<\/li>\n<li>The result should be portable between various environments to allow re-use<\/li>\n<\/ul>\n<p>By turning the definition of our operational processes into a specialized version of software, we can now subject it to the same software development lifecycle principles already adopted by the organization to ensure high quality and efficient delivery.<\/p>\n<h2 id=\"enabling-sdlc-for-reliability\"><a class=\"heading-link\" href=\"#enabling-sdlc-for-reliability\">Enabling SDLC for reliability<span class=\"heading-hash pl-2 text-italic text-bold\" aria-hidden=\"true\"><\/span><\/a><\/h2>\n<p>The moment our processes become another form of software code, leveraging an existing infrastructure that is in place for managing other forms of software can ensure that developing, maintaining and reviewing them becomes yet another pillar in software development.<\/p>\n<p>For example, every GitHub repository containing business logic modules, in addition to containing the automated tests and deployment logic for these modules, can now add the representation of enrichment, diagnostics and remediation processes required to operationalize the relevant module.<\/p>\n<p>These processes can rely on generic components provided as a shared infrastructure or be completely unique. Modifying these processes can be done in branches, where merging them into production will take a form of pull requests and subsequent GitHub Actions pipelines. Versioning of the processes can be clearly tracked via the repositories, requests for changes can be submitted via issues, and pace of changes can be seen via Insights. Just as with any other form of software code.<\/p>\n<p>Some of these processes may remain private, whereas others, related to operationalizing common open source components or libraries can be shared with peers, with the help of public repositories, enabling collaboration and driving to operational excellence not only within a single organization, but across the whole industry.<\/p>\n<p>To sum up, turning operational processes into code allows developers to leverage practices of agile development, continuous integration\/deployment and GitOps to manage the processes ensuring reliability of their services\u2014taking the next evolutionary step in the adoption of \u201cYou build it, you run it\u201d principle and guaranteeing meeting SLOs.<\/p>\n<ul>\n<li>Sample processes can be found in the <a href=\"https:\/\/github.com\/stackpulse\/playbooks\" target=\"_blank\" rel=\"noopener\">StackPulse public playbooks repository<\/a><\/li>\n<li>GitHub Action enabling GitOps flows can be found in the <a href=\"https:\/\/github.com\/marketplace\/actions\/stackpulse-apply-playbook\" target=\"_blank\" rel=\"noopener\">GitHub Actions Marketplace<\/a><\/li>\n<li><a href=\"https:\/\/stackpulse.com\/get-started\/\" target=\"_blank\" rel=\"noopener\">Get started<\/a> with the free edition of StackPulse today<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>This is a partner post by Leonid Belkind, the Co-Founder and CTO at StackPulse Over the past decade, engineering-led practices have replaced traditional IT operations across the software development lifecycle.&hellip;<\/p>\n","protected":false},"author":1845,"featured_media":56105,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_gh_post_show_toc":"no","_gh_post_is_no_robots":"","_gh_post_is_featured":"no","_gh_post_is_excluded":"","_gh_post_is_unlisted":"","_gh_post_related_link_1":"","_gh_post_related_link_2":"","_gh_post_related_link_3":"","_gh_post_sq_img":"","_gh_post_sq_img_id":"","_gh_post_cta_title":"Get free access to GitHub Enterprise","_gh_post_cta_text":"Choose from two trial plans designed to help your business grow. ","_gh_post_cta_link":"https:\/\/github.com\/organizations\/enterprise_plan?ref_page=\/blog&ref_cta=Start%20a%20free%20enterprise%20trial&ref_loc=sidebar","_gh_post_cta_button":"Start a free trial","_gh_post_recirc_hide":"","_gh_post_recirc_col_1":"","_gh_post_recirc_col_2":"","_gh_post_recirc_col_3":"","_gh_post_recirc_col_4":"","_featured_video":"","_gh_post_additional_query_params":"","_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false,"_links_to":"","_links_to_target":""},"categories":[3317,3313],"tags":[1910],"coauthors":[2050],"class_list":["post-56103","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops","category-enterprise-software","tag-github-partners"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Extending GitOps to reliability-as-code with GitHub and StackPulse - The GitHub Blog<\/title>\n<meta name=\"description\" content=\"Turning operational processes into code is the next step in the adoption of \u201cYou build it, you run it\u201d principle, and guaranteeing meeting the SLOs.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/github.blog\/enterprise-software\/devops\/extending-gitops-to-reliability-as-code-with-github-and-stackpulse\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Extending GitOps to reliability-as-code with GitHub and StackPulse\" \/>\n<meta property=\"og:description\" content=\"Turning operational processes into code is the next step in the adoption of \u201cYou build it, you run it\u201d principle, and guaranteeing meeting the SLOs.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/github.blog\/enterprise-software\/devops\/extending-gitops-to-reliability-as-code-with-github-and-stackpulse\/\" \/>\n<meta property=\"og:site_name\" content=\"The GitHub Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-04T20:30:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-02-04T18:24:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/github.blog\/wp-content\/uploads\/2021\/02\/106931228-334cd680-66cb-11eb-877e-83d472438626.png?fit=1200%2C630\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"GitHub Partnerships\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/github.blog\/wp-content\/uploads\/2021\/02\/106931228-334cd680-66cb-11eb-877e-83d472438626.png?fit=1200%2C630\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"GitHub Partnerships\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/github.blog\\\/enterprise-software\\\/devops\\\/extending-gitops-to-reliability-as-code-with-github-and-stackpulse\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/github.blog\\\/enterprise-software\\\/devops\\\/extending-gitops-to-reliability-as-code-with-github-and-stackpulse\\\/\"},\"author\":{\"name\":\"GitHub Partnerships\",\"@id\":\"https:\\\/\\\/github.blog\\\/#\\\/schema\\\/person\\\/eaa5eda85af71bd2cdec8c9bcb613491\"},\"headline\":\"Extending GitOps to reliability-as-code with GitHub and StackPulse\",\"datePublished\":\"2021-02-04T20:30:03+00:00\",\"dateModified\":\"2022-02-04T18:24:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/github.blog\\\/enterprise-software\\\/devops\\\/extending-gitops-to-reliability-as-code-with-github-and-stackpulse\\\/\"},\"wordCount\":832,\"image\":{\"@id\":\"https:\\\/\\\/github.blog\\\/enterprise-software\\\/devops\\\/extending-gitops-to-reliability-as-code-with-github-and-stackpulse\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/github.blog\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/106931228-334cd680-66cb-11eb-877e-83d472438626.png?fit=1200%2C630\",\"keywords\":[\"GitHub Partners\"],\"articleSection\":[\"DevOps\",\"Enterprise software\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/github.blog\\\/enterprise-software\\\/devops\\\/extending-gitops-to-reliability-as-code-with-github-and-stackpulse\\\/\",\"url\":\"https:\\\/\\\/github.blog\\\/enterprise-software\\\/devops\\\/extending-gitops-to-reliability-as-code-with-github-and-stackpulse\\\/\",\"name\":\"Extending GitOps to reliability-as-code with GitHub and StackPulse - The GitHub Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/github.blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/github.blog\\\/enterprise-software\\\/devops\\\/extending-gitops-to-reliability-as-code-with-github-and-stackpulse\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/github.blog\\\/enterprise-software\\\/devops\\\/extending-gitops-to-reliability-as-code-with-github-and-stackpulse\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/github.blog\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/106931228-334cd680-66cb-11eb-877e-83d472438626.png?fit=1200%2C630\",\"datePublished\":\"2021-02-04T20:30:03+00:00\",\"dateModified\":\"2022-02-04T18:24:09+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/github.blog\\\/#\\\/schema\\\/person\\\/eaa5eda85af71bd2cdec8c9bcb613491\"},\"description\":\"Turning operational processes into code is the next step in the adoption of \u201cYou build it, you run it\u201d principle, and guaranteeing meeting the SLOs.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/github.blog\\\/enterprise-software\\\/devops\\\/extending-gitops-to-reliability-as-code-with-github-and-stackpulse\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/github.blog\\\/enterprise-software\\\/devops\\\/extending-gitops-to-reliability-as-code-with-github-and-stackpulse\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/github.blog\\\/enterprise-software\\\/devops\\\/extending-gitops-to-reliability-as-code-with-github-and-stackpulse\\\/#primaryimage\",\"url\":\"https:\\\/\\\/github.blog\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/106931228-334cd680-66cb-11eb-877e-83d472438626.png?fit=1200%2C630\",\"contentUrl\":\"https:\\\/\\\/github.blog\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/106931228-334cd680-66cb-11eb-877e-83d472438626.png?fit=1200%2C630\",\"width\":1200,\"height\":630,\"caption\":\"GitHub Actions and StackPulse logos together on blue background\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/github.blog\\\/enterprise-software\\\/devops\\\/extending-gitops-to-reliability-as-code-with-github-and-stackpulse\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/github.blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Enterprise software\",\"item\":\"https:\\\/\\\/github.blog\\\/enterprise-software\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"DevOps\",\"item\":\"https:\\\/\\\/github.blog\\\/enterprise-software\\\/devops\\\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Extending GitOps to reliability-as-code with GitHub and StackPulse\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/github.blog\\\/#website\",\"url\":\"https:\\\/\\\/github.blog\\\/\",\"name\":\"The GitHub Blog\",\"description\":\"Updates, ideas, and inspiration from GitHub to help developers build and design software.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/github.blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/github.blog\\\/#\\\/schema\\\/person\\\/eaa5eda85af71bd2cdec8c9bcb613491\",\"name\":\"GitHub Partnerships\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2240c8783177c47cb06737635a8aff57e65a1d6c4b65e5160ef3528c1317cd0d?s=96&d=mm&r=g1d6d53e158bd4258b887f8a2ec0ebefc\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2240c8783177c47cb06737635a8aff57e65a1d6c4b65e5160ef3528c1317cd0d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2240c8783177c47cb06737635a8aff57e65a1d6c4b65e5160ef3528c1317cd0d?s=96&d=mm&r=g\",\"caption\":\"GitHub Partnerships\"},\"url\":\"https:\\\/\\\/github.blog\\\/author\\\/partnerships\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Extending GitOps to reliability-as-code with GitHub and StackPulse - The GitHub Blog","description":"Turning operational processes into code is the next step in the adoption of \u201cYou build it, you run it\u201d principle, and guaranteeing meeting the SLOs.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/github.blog\/enterprise-software\/devops\/extending-gitops-to-reliability-as-code-with-github-and-stackpulse\/","og_locale":"en_US","og_type":"article","og_title":"Extending GitOps to reliability-as-code with GitHub and StackPulse","og_description":"Turning operational processes into code is the next step in the adoption of \u201cYou build it, you run it\u201d principle, and guaranteeing meeting the SLOs.","og_url":"https:\/\/github.blog\/enterprise-software\/devops\/extending-gitops-to-reliability-as-code-with-github-and-stackpulse\/","og_site_name":"The GitHub Blog","article_published_time":"2021-02-04T20:30:03+00:00","article_modified_time":"2022-02-04T18:24:09+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/github.blog\/wp-content\/uploads\/2021\/02\/106931228-334cd680-66cb-11eb-877e-83d472438626.png?fit=1200%2C630","type":"image\/png"}],"author":"GitHub Partnerships","twitter_card":"summary_large_image","twitter_image":"https:\/\/github.blog\/wp-content\/uploads\/2021\/02\/106931228-334cd680-66cb-11eb-877e-83d472438626.png?fit=1200%2C630","twitter_misc":{"Written by":"GitHub Partnerships","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/github.blog\/enterprise-software\/devops\/extending-gitops-to-reliability-as-code-with-github-and-stackpulse\/#article","isPartOf":{"@id":"https:\/\/github.blog\/enterprise-software\/devops\/extending-gitops-to-reliability-as-code-with-github-and-stackpulse\/"},"author":{"name":"GitHub Partnerships","@id":"https:\/\/github.blog\/#\/schema\/person\/eaa5eda85af71bd2cdec8c9bcb613491"},"headline":"Extending GitOps to reliability-as-code with GitHub and StackPulse","datePublished":"2021-02-04T20:30:03+00:00","dateModified":"2022-02-04T18:24:09+00:00","mainEntityOfPage":{"@id":"https:\/\/github.blog\/enterprise-software\/devops\/extending-gitops-to-reliability-as-code-with-github-and-stackpulse\/"},"wordCount":832,"image":{"@id":"https:\/\/github.blog\/enterprise-software\/devops\/extending-gitops-to-reliability-as-code-with-github-and-stackpulse\/#primaryimage"},"thumbnailUrl":"https:\/\/github.blog\/wp-content\/uploads\/2021\/02\/106931228-334cd680-66cb-11eb-877e-83d472438626.png?fit=1200%2C630","keywords":["GitHub Partners"],"articleSection":["DevOps","Enterprise software"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/github.blog\/enterprise-software\/devops\/extending-gitops-to-reliability-as-code-with-github-and-stackpulse\/","url":"https:\/\/github.blog\/enterprise-software\/devops\/extending-gitops-to-reliability-as-code-with-github-and-stackpulse\/","name":"Extending GitOps to reliability-as-code with GitHub and StackPulse - The GitHub Blog","isPartOf":{"@id":"https:\/\/github.blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/github.blog\/enterprise-software\/devops\/extending-gitops-to-reliability-as-code-with-github-and-stackpulse\/#primaryimage"},"image":{"@id":"https:\/\/github.blog\/enterprise-software\/devops\/extending-gitops-to-reliability-as-code-with-github-and-stackpulse\/#primaryimage"},"thumbnailUrl":"https:\/\/github.blog\/wp-content\/uploads\/2021\/02\/106931228-334cd680-66cb-11eb-877e-83d472438626.png?fit=1200%2C630","datePublished":"2021-02-04T20:30:03+00:00","dateModified":"2022-02-04T18:24:09+00:00","author":{"@id":"https:\/\/github.blog\/#\/schema\/person\/eaa5eda85af71bd2cdec8c9bcb613491"},"description":"Turning operational processes into code is the next step in the adoption of \u201cYou build it, you run it\u201d principle, and guaranteeing meeting the SLOs.","breadcrumb":{"@id":"https:\/\/github.blog\/enterprise-software\/devops\/extending-gitops-to-reliability-as-code-with-github-and-stackpulse\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/github.blog\/enterprise-software\/devops\/extending-gitops-to-reliability-as-code-with-github-and-stackpulse\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/github.blog\/enterprise-software\/devops\/extending-gitops-to-reliability-as-code-with-github-and-stackpulse\/#primaryimage","url":"https:\/\/github.blog\/wp-content\/uploads\/2021\/02\/106931228-334cd680-66cb-11eb-877e-83d472438626.png?fit=1200%2C630","contentUrl":"https:\/\/github.blog\/wp-content\/uploads\/2021\/02\/106931228-334cd680-66cb-11eb-877e-83d472438626.png?fit=1200%2C630","width":1200,"height":630,"caption":"GitHub Actions and StackPulse logos together on blue background"},{"@type":"BreadcrumbList","@id":"https:\/\/github.blog\/enterprise-software\/devops\/extending-gitops-to-reliability-as-code-with-github-and-stackpulse\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/github.blog\/"},{"@type":"ListItem","position":2,"name":"Enterprise software","item":"https:\/\/github.blog\/enterprise-software\/"},{"@type":"ListItem","position":3,"name":"DevOps","item":"https:\/\/github.blog\/enterprise-software\/devops\/"},{"@type":"ListItem","position":4,"name":"Extending GitOps to reliability-as-code with GitHub and StackPulse"}]},{"@type":"WebSite","@id":"https:\/\/github.blog\/#website","url":"https:\/\/github.blog\/","name":"The GitHub Blog","description":"Updates, ideas, and inspiration from GitHub to help developers build and design software.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/github.blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/github.blog\/#\/schema\/person\/eaa5eda85af71bd2cdec8c9bcb613491","name":"GitHub Partnerships","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/2240c8783177c47cb06737635a8aff57e65a1d6c4b65e5160ef3528c1317cd0d?s=96&d=mm&r=g1d6d53e158bd4258b887f8a2ec0ebefc","url":"https:\/\/secure.gravatar.com\/avatar\/2240c8783177c47cb06737635a8aff57e65a1d6c4b65e5160ef3528c1317cd0d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2240c8783177c47cb06737635a8aff57e65a1d6c4b65e5160ef3528c1317cd0d?s=96&d=mm&r=g","caption":"GitHub Partnerships"},"url":"https:\/\/github.blog\/author\/partnerships\/"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/github.blog\/wp-content\/uploads\/2021\/02\/106931228-334cd680-66cb-11eb-877e-83d472438626.png?fit=1200%2C630","jetpack_shortlink":"https:\/\/wp.me\/pamS32-eAT","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/posts\/56103","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/users\/1845"}],"replies":[{"embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/comments?post=56103"}],"version-history":[{"count":10,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/posts\/56103\/revisions"}],"predecessor-version":[{"id":56111,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/posts\/56103\/revisions\/56111"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/media\/56105"}],"wp:attachment":[{"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/media?parent=56103"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/categories?post=56103"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/tags?post=56103"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/github.blog\/wp-json\/wp\/v2\/coauthors?post=56103"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}