{"id":14384,"date":"2018-01-22T16:55:33","date_gmt":"2018-01-22T16:55:33","guid":{"rendered":"http:\/\/blog.intercom.com\/?p=14384"},"modified":"2020-07-30T12:57:05","modified_gmt":"2020-07-30T11:57:05","slug":"building-autonomously","status":"publish","type":"post","link":"https:\/\/www.intercom.com\/blog\/building-autonomously\/","title":{"rendered":"Building autonomously: Improving our production systems in small steps"},"content":{"rendered":"<p class=\"opening_paragraph\">At Intercom, we have a few values that underpin our engineering culture \u2013 moving fast but optimizing for the long term; doing less but doing it better; and taking ownership of our areas of responsibility and the things we build.<\/p>\n<p>These values allow us to be more autonomous as engineers because they provide a structure for us to make better decisions. When you\u2019re used to working with them all the time, they can fade into the background a bit, but they become especially useful when working in isolation from your team.<\/p>\n<p>A few months ago, I was visiting Chicago for personal reasons and so would be working away from my team for two weeks. There wouldn\u2019t be other engineers in my timezone for most of the day, so picking a self-contained project that I could own from start to finish was necessary.<\/p>\n<p>My engineering team, Production Systems, is responsible for the availability, scalability, security and costs of Intercom\u2019s infrastructure. From our backlog an <a href=\"https:\/\/www.intercom.com\/blog\/how-we-build-software\/\" target=\"_blank\" rel=\"noopener noreferrer\">intermission<\/a> stood out: reduce our Amazon Web Service (AWS) costs by up to 50% by maximizing our use of <a href=\"http:\/\/docs.aws.amazon.com\/AWSEC2\/latest\/UserGuide\/using-spot-instances.html\">Spot Instances<\/a>. The cost of this spare AWS computing capacity varies on an hourly basis according to availability and demand.<\/p>\n<p class=\"quote\">We needed to make the useof Spot Instances in Intercom safer and easier.<\/p>\n<p>We manage EC2 hosts with Auto Scaling Groups (ASGs). Amazon Web Services makes launching <a href=\"http:\/\/docs.aws.amazon.com\/autoscaling\/latest\/userguide\/US-SpotInstances.html\">Spot Instances in your ASGs<\/a> quite easy; you just set the maximum spot price you are willing to pay. Sometimes the AWS Spot Market can send the spot price very high and clusters are left without capacity, making it dangerous to use Spot Instances for \u201cnear-realtime\u201d clusters. But if, during these market blips, we could replace Spot Instances with On-Demand Instances, where you only pay for EC2 instances you actually use, we could extend the use of Spot Instances, significantly reducing our AWS operating costs.<\/p>\n<p>At the beginning of the year, the team tried to deploy an open-source project called <a href=\"https:\/\/github.com\/cristim\/autospotting\">Autospotting<\/a>. From the description it seemed to address all our problems, but after deployment, we decided it wouldn&#8217;t work for us as it seems designed for less complex architectures than ours.<\/p>\n<p>We needed to make the use of Spot Instances in Intercom safer and easier and felt we had two options: fork Autospotting to make it work in our environment and get the changes upstreamed later; or build our own implementation of Autospotting with just the bits we needed.<\/p>\n<p>These options presented an interesting technical challenge, relatively small and with a big impact, exactly the type of project that would fit for my trip.<\/p>\n<h2 id=\"reducing-friction\">Reducing friction<\/h2>\n<p>To optimize my two weeks away, I needed agreement from my team on a system design in advance in order to reduce communication friction while in another timezone.<\/p>\n<p class=\"quote quote-left\">Autonomy doesn\u2019t just mean &#8216;working on your own&#8217;.<\/p>\n<p>Autonomy doesn&#8217;t just mean &#8220;working on your own&#8221;. It means you get to choose a project, own the design and set your own success criteria. At Intercom, we don&#8217;t require sign off \u2013 we are expected to do \u201csufficient due diligence\u201d ourselves and bring in other stakeholders and senior engineers as needed.<\/p>\n<p>This means early alignment on a design is critical to enabling engineers\u2019 autonomy. So I evaluated each option and shared my thoughts with the team for feedback. Here\u2019s a summary:<\/p>\n<ul>\n<li><strong>Option 1: Fork Autospotting.<\/strong> Autospotting is a Go binary that runs in Lambda and has some limitations.The use of Go is becoming <a href=\"https:\/\/www.intercom.com\/blog\/making-space-for-engineering-innovations\/\" target=\"_blank\" rel=\"noopener noreferrer\">common in Intercom<\/a> but is not a <a href=\"https:\/\/www.youtube.com\/watch?v=f4p_4YY0ZzU&amp;list=PLbRoZ5Rrl5lcIFf9w5z2s4csaS_nIs3_Z&amp;index=42\">standard technology<\/a> yet. Half of my team has never worked with it, myself included. Patching it would have required that I learn Go, the code base and patch it to match our needs; all this in 2 weeks while away from the team and 6 hours ahead of them.<\/li>\n<li><strong>Option 2: Build our own solution.<\/strong> By having carte blanche, I could have started coding in Ruby from day 1, built only the features I needed, and got the V1 of service into production by the end of week 2.<\/li>\n<\/ul>\n<p>I preferred option 2; this service was going to be a core component of our infrastructure. It had to be reliable and understood by everyone in the team. I wasn\u2019t comfortable with forking and patching Autospotting without having more support from my team. In this case, the tradeoffs were too high to continue trying to implement Autospotting, and I could have more impact, more quickly by building our own implementation.<\/p>\n<p>The team agreed with my plan. I committed to deliver a cupcake of Intercom\u2019s version of Autospotting in a week and left for the Windy City.<\/p>\n<h2 id=\"baking-a-cupcake\">Baking a cupcake<\/h2>\n<p>I wanted to <a href=\"https:\/\/www.intercom.com\/blog\/start-with-a-cupcake\/\" target=\"_blank\" rel=\"noopener noreferrer\">start small<\/a> by building something that confirmed my approach and to prove to myself and my team that building our own solution would work. So on Monday morning, I began prototyping a simple synchronous Ruby service that was going to replace the instances in my test ASG and optimize the cost. I called it ASG-optimizer.<\/p>\n<p>Initially, I could have started designing the perfect service that was going to cover every edge case, perfectly scalable and extremely efficient; but given I had just two weeks to work on the project, I didn\u2019t want to spend time working on problems I didn\u2019t have yet; I wanted to get something working and I had to prove that this \u201coption 2\u201d was truly a reasonable alternative to Autospotting.<\/p>\n<p>By the end of the week I had a single process that was synchronously watching my ASG, taking an On-Demand instance, made a copy of it and swapped them once it passed the EC2 checks. Here\u2019s what my initial commit looked like:<\/p>\n<p><img decoding=\"async\" class=\"small\" src=\"https:\/\/intercom.com\/blog\/wp-content\/uploads\/2018\/01\/ASG_Optimizer_Inline_01.jpg\" alt=\"github\" \/><\/p>\n<h2 id=\"making-a-cake\">Making a cake<\/h2>\n<p>In order to make the ASG-optimizer production ready, the next step was to fix the biggest pain point with the proof-of-concept: scalability. With the initial commit, I could only replace one of thousands of our hosts per minute. That just doesn\u2019t work for an infrastructure of Intercom\u2019s size. So I moved the ASG-optimizer to an asynchronous model and used SQS to split the single-process into three processes:<\/p>\n<ul>\n<li>Process 1 monitored all Auto Scaling Groups with the tag \u201cAsgOptimiser\u201d and add any replacement candidate to a \u2018Spot Instance Creator\u2019 SQS queue.<\/li>\n<li>Process 2 polled the \u2018Spot Instance Creator\u2019 queue, created a Spot Instance, then added [new Spot Instance ID, old On-Demand Instance ID] to the \u2018Instance Swapper\u2019 SQS queue.<\/li>\n<li>Process 3 polled the \u2018Instance Swapper\u2019 SQS queue, waited until the Spot Instance passed EC2 checks, swapped the instances, and terminated the old On-Demand Instance.<\/li>\n<\/ul>\n<p><img decoding=\"async\" class=\"small\" src=\"https:\/\/intercom.com\/blog\/wp-content\/uploads\/2018\/01\/ASG_Optimizer_Inline_02.jpeg\" alt=\"process\" \/><\/p>\n<p>At the end of the second week I deployed the new asynchronous service to production, optimizing a single Auto Scaling Group, prepared a rollout plan for my team and came back to Dublin. Then on the following Monday morning, I shipped it for all our near-realtime clusters and learned that it needed another bit of work, such as reducing the number of API calls to AWS and introducing orphan-instance cleanup.<\/p>\n<p>ASG-optimizer was now enabled for about 140 Auto Scaling Groups replacing about 650 instances every day. This would halve our EC2 bill over time.<\/p>\n<p><img decoding=\"async\" class=\"small\" src=\"https:\/\/intercom.com\/blog\/wp-content\/uploads\/2018\/01\/ASG_Optimizer_Inline_03.jpg\" alt=\"improvement\" \/><\/p>\n<h2 id=\"the-icing-on-the-cake\">The icing on the cake<\/h2>\n<p>Even two weeks of engineering work can have a significant impact on operating costs. But even though ASG-optimizer is now in production, and the project is technically considered done, I\u2019m still discovering ways to improve it.<\/p>\n<p class=\"quote\">ASG-optimizer was built with the intention of scratching an itch that Intercom had.<\/p>\n<p>We recently noticed that the ASG-optimizer is not playing well with our previous cost strategy which used <a href=\"https:\/\/aws.amazon.com\/ec2\/pricing\/reserved-instances\/\">Reserved Instances<\/a> to save money on instances we knew we would need, long-term. We are now using too many spot instances and not fully using our reserved instances. ? To solve this we\u2019ve been thinking of making the service Reserved Instances aware. I\u2019d love to start using Spot Instances not just for batch-processing workers but for user-facing web fleets too.<\/p>\n<p>The ASG-optimizer workflow could also work for updating our custom <a href=\"https:\/\/docs.aws.amazon.com\/AWSEC2\/latest\/UserGuide\/AMIs.html\">Amazon Machine Images<\/a> (AMI) that define the operating system for our EC2 instances. Our continuous integration and continuous deployment system also does our AMI rollouts. AMI rollouts can block deployments as well as put pressure on our datastores when restarting everything. Offloading the work to the ASG-optimizer will help us replace old AMI instances safely as well as removing the duplicate logic and complexity.<\/p>\n<p>ASG-optimizer was built with the intention of scratching an itch that Intercom had, and may not work for everyone, but if there is interest from the community, we are willing to open-source it.<\/p>\n<p>When you work autonomously, getting alignment with your team is critical. Above all, remember that adhering to the same approaches and principles as you do while working as part of the team will bring the best results.<\/p>\n<p class=\"inline-cta-quote\"><a href=\"http:\/\/grnh.se\/38rfdk1?utm_medium=ii-blog&amp;utm_source=recruitment-cta&amp;utm_campaign=20180122ASGoptimiser&amp;utm_content=text-footer\" target=\"_blank\" rel=\"noopener noreferrer\">If this sounds like the sort of place you would like to advance your engineering career, we&#8217;re hiring for systems engineers.<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>At Intercom, we have a few values that underpin our engineering culture \u2013 moving fast but optimizing for the long term; doing less but doing it better; and taking ownership of our areas of responsibility and&hellip;<\/p>\n","protected":false},"author":290,"featured_media":14389,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"category":[12898],"tags":[646,645,644,335,643,146,642],"coauthors":[641],"class_list":["post-14384","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-engineering","tag-autonomy","tag-autospotting","tag-aws","tag-engineering","tag-production-systems","tag-recruitment","tag-systems-engineering"],"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>Building Autonomously: Improving Our Production In Small Steps<\/title>\n<meta name=\"description\" content=\"Strong values allow us to be more autonomous as engineers because they provide a structure for us to make better decisions. Here&#039;s an example of that working in practice.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.intercom.com\/blog\/building-autonomously\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Building autonomously: Improving our production systems in small steps\" \/>\n<meta property=\"og:description\" content=\"Strong values allow us to be more autonomous as engineers because they provide a structure for us to make better decisions. Here&#039;s an example of that working in practice.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.intercom.com\/blog\/building-autonomously\/\" \/>\n<meta property=\"og:site_name\" content=\"The Intercom Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/intercominc\" \/>\n<meta property=\"article:published_time\" content=\"2018-01-22T16:55:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-07-30T11:57:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.intercom.com\/blog\/wp-content\/uploads\/2018\/01\/ASG_Optimizer.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1968\" \/>\n\t<meta property=\"og:image:height\" content=\"932\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Jacopo Scrinzi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@eredi93\" \/>\n<meta name=\"twitter:site\" content=\"@intercom\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jacopo Scrinzi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/building-autonomously\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/building-autonomously\\\/\"},\"author\":{\"name\":\"Jacopo Scrinzi\",\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/#\\\/schema\\\/person\\\/4f84b1510b66e9b5d8d57bcefb8a84d5\"},\"headline\":\"Building autonomously: Improving our production systems in small steps\",\"datePublished\":\"2018-01-22T16:55:33+00:00\",\"dateModified\":\"2020-07-30T11:57:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/building-autonomously\\\/\"},\"wordCount\":1487,\"publisher\":{\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/building-autonomously\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/01\\\/ASG_Optimizer.jpg\",\"keywords\":[\"autonomy\",\"autospotting\",\"AWS\",\"Engineering\",\"production systems\",\"recruitment\",\"systems engineering\"],\"articleSection\":[\"Engineering\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/building-autonomously\\\/\",\"url\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/building-autonomously\\\/\",\"name\":\"Building Autonomously: Improving Our Production In Small Steps\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/building-autonomously\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/building-autonomously\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/01\\\/ASG_Optimizer.jpg\",\"datePublished\":\"2018-01-22T16:55:33+00:00\",\"dateModified\":\"2020-07-30T11:57:05+00:00\",\"description\":\"Strong values allow us to be more autonomous as engineers because they provide a structure for us to make better decisions. Here's an example of that working in practice.\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.intercom.com\\\/blog\\\/building-autonomously\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/building-autonomously\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/01\\\/ASG_Optimizer.jpg\",\"contentUrl\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/wp-content\\\/uploads\\\/2018\\\/01\\\/ASG_Optimizer.jpg\",\"width\":1968,\"height\":932},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/\",\"name\":\"The Intercom Blog\",\"description\":\"Articles and Podcasts on Customer Service, AI and Automation, Product, and more\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/#organization\",\"name\":\"The Intercom Blog\",\"url\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/08\\\/Intercom-logo-sq-black-trans.png\",\"contentUrl\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/08\\\/Intercom-logo-sq-black-trans.png\",\"width\":1000,\"height\":1000,\"caption\":\"The Intercom Blog\"},\"image\":{\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/intercominc\",\"https:\\\/\\\/x.com\\\/intercom\",\"https:\\\/\\\/www.instagram.com\\\/intercom\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/2491343\",\"https:\\\/\\\/www.pinterest.ie\\\/intercom\\\/\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCJG0MvLP03kyzzAkD-w98aQ\",\"https:\\\/\\\/en.wikipedia.org\\\/wiki\\\/Intercom_(company)\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/#\\\/schema\\\/person\\\/4f84b1510b66e9b5d8d57bcefb8a84d5\",\"name\":\"Jacopo Scrinzi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/229552f46d6533197d492f2d4d8d76f4ace7d2fd063e8c832ec616d4ec7bc609?s=96&d=mm&r=pg827af359c39a72ca0413fd4d9e0da335\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/229552f46d6533197d492f2d4d8d76f4ace7d2fd063e8c832ec616d4ec7bc609?s=96&d=mm&r=pg\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/229552f46d6533197d492f2d4d8d76f4ace7d2fd063e8c832ec616d4ec7bc609?s=96&d=mm&r=pg\",\"caption\":\"Jacopo Scrinzi\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/eredi93\"],\"url\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/author\\\/eredi93\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Building Autonomously: Improving Our Production In Small Steps","description":"Strong values allow us to be more autonomous as engineers because they provide a structure for us to make better decisions. Here's an example of that working in practice.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.intercom.com\/blog\/building-autonomously\/","og_locale":"en_US","og_type":"article","og_title":"Building autonomously: Improving our production systems in small steps","og_description":"Strong values allow us to be more autonomous as engineers because they provide a structure for us to make better decisions. Here's an example of that working in practice.","og_url":"https:\/\/www.intercom.com\/blog\/building-autonomously\/","og_site_name":"The Intercom Blog","article_publisher":"https:\/\/www.facebook.com\/intercominc","article_published_time":"2018-01-22T16:55:33+00:00","article_modified_time":"2020-07-30T11:57:05+00:00","og_image":[{"width":1968,"height":932,"url":"https:\/\/www.intercom.com\/blog\/wp-content\/uploads\/2018\/01\/ASG_Optimizer.jpg","type":"image\/jpeg"}],"author":"Jacopo Scrinzi","twitter_card":"summary_large_image","twitter_creator":"@eredi93","twitter_site":"@intercom","twitter_misc":{"Written by":"Jacopo Scrinzi","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.intercom.com\/blog\/building-autonomously\/#article","isPartOf":{"@id":"https:\/\/www.intercom.com\/blog\/building-autonomously\/"},"author":{"name":"Jacopo Scrinzi","@id":"https:\/\/www.intercom.com\/blog\/#\/schema\/person\/4f84b1510b66e9b5d8d57bcefb8a84d5"},"headline":"Building autonomously: Improving our production systems in small steps","datePublished":"2018-01-22T16:55:33+00:00","dateModified":"2020-07-30T11:57:05+00:00","mainEntityOfPage":{"@id":"https:\/\/www.intercom.com\/blog\/building-autonomously\/"},"wordCount":1487,"publisher":{"@id":"https:\/\/www.intercom.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.intercom.com\/blog\/building-autonomously\/#primaryimage"},"thumbnailUrl":"https:\/\/www.intercom.com\/blog\/wp-content\/uploads\/2018\/01\/ASG_Optimizer.jpg","keywords":["autonomy","autospotting","AWS","Engineering","production systems","recruitment","systems engineering"],"articleSection":["Engineering"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.intercom.com\/blog\/building-autonomously\/","url":"https:\/\/www.intercom.com\/blog\/building-autonomously\/","name":"Building Autonomously: Improving Our Production In Small Steps","isPartOf":{"@id":"https:\/\/www.intercom.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.intercom.com\/blog\/building-autonomously\/#primaryimage"},"image":{"@id":"https:\/\/www.intercom.com\/blog\/building-autonomously\/#primaryimage"},"thumbnailUrl":"https:\/\/www.intercom.com\/blog\/wp-content\/uploads\/2018\/01\/ASG_Optimizer.jpg","datePublished":"2018-01-22T16:55:33+00:00","dateModified":"2020-07-30T11:57:05+00:00","description":"Strong values allow us to be more autonomous as engineers because they provide a structure for us to make better decisions. Here's an example of that working in practice.","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.intercom.com\/blog\/building-autonomously\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.intercom.com\/blog\/building-autonomously\/#primaryimage","url":"https:\/\/www.intercom.com\/blog\/wp-content\/uploads\/2018\/01\/ASG_Optimizer.jpg","contentUrl":"https:\/\/www.intercom.com\/blog\/wp-content\/uploads\/2018\/01\/ASG_Optimizer.jpg","width":1968,"height":932},{"@type":"WebSite","@id":"https:\/\/www.intercom.com\/blog\/#website","url":"https:\/\/www.intercom.com\/blog\/","name":"The Intercom Blog","description":"Articles and Podcasts on Customer Service, AI and Automation, Product, and more","publisher":{"@id":"https:\/\/www.intercom.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.intercom.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.intercom.com\/blog\/#organization","name":"The Intercom Blog","url":"https:\/\/www.intercom.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.intercom.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.intercom.com\/blog\/wp-content\/uploads\/2019\/08\/Intercom-logo-sq-black-trans.png","contentUrl":"https:\/\/www.intercom.com\/blog\/wp-content\/uploads\/2019\/08\/Intercom-logo-sq-black-trans.png","width":1000,"height":1000,"caption":"The Intercom Blog"},"image":{"@id":"https:\/\/www.intercom.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/intercominc","https:\/\/x.com\/intercom","https:\/\/www.instagram.com\/intercom\/","https:\/\/www.linkedin.com\/company\/2491343","https:\/\/www.pinterest.ie\/intercom\/","https:\/\/www.youtube.com\/channel\/UCJG0MvLP03kyzzAkD-w98aQ","https:\/\/en.wikipedia.org\/wiki\/Intercom_(company)"]},{"@type":"Person","@id":"https:\/\/www.intercom.com\/blog\/#\/schema\/person\/4f84b1510b66e9b5d8d57bcefb8a84d5","name":"Jacopo Scrinzi","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/229552f46d6533197d492f2d4d8d76f4ace7d2fd063e8c832ec616d4ec7bc609?s=96&d=mm&r=pg827af359c39a72ca0413fd4d9e0da335","url":"https:\/\/secure.gravatar.com\/avatar\/229552f46d6533197d492f2d4d8d76f4ace7d2fd063e8c832ec616d4ec7bc609?s=96&d=mm&r=pg","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/229552f46d6533197d492f2d4d8d76f4ace7d2fd063e8c832ec616d4ec7bc609?s=96&d=mm&r=pg","caption":"Jacopo Scrinzi"},"sameAs":["https:\/\/x.com\/eredi93"],"url":"https:\/\/www.intercom.com\/blog\/author\/eredi93\/"}]}},"jetpack_featured_media_url":"https:\/\/www.intercom.com\/blog\/wp-content\/uploads\/2018\/01\/ASG_Optimizer.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/posts\/14384","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/users\/290"}],"replies":[{"embeddable":true,"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/comments?post=14384"}],"version-history":[{"count":0,"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/posts\/14384\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/media\/14389"}],"wp:attachment":[{"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/media?parent=14384"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/category?post=14384"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/tags?post=14384"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/coauthors?post=14384"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}