<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Garen Torikian</title>
    <description>The latest articles on DEV Community by Garen Torikian (@gjtorikian).</description>
    <link>https://dev.to/gjtorikian</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F142345%2F46b033b1-56b8-4918-9010-4b223e7ec9fa.jpg</url>
      <title>DEV Community: Garen Torikian</title>
      <link>https://dev.to/gjtorikian</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gjtorikian"/>
    <language>en</language>
    <item>
      <title>Seven *more* DevOps things Heroku does (so you don't have to!)</title>
      <dc:creator>Garen Torikian</dc:creator>
      <pubDate>Wed, 11 Dec 2019 16:31:20 +0000</pubDate>
      <link>https://dev.to/heroku/seven-more-devops-things-heroku-does-so-you-don-t-have-to-1g1n</link>
      <guid>https://dev.to/heroku/seven-more-devops-things-heroku-does-so-you-don-t-have-to-1g1n</guid>
      <description>&lt;p&gt;A few weeks ago, I published a post about &lt;a href="https://dev.to/heroku/eight-devops-things-heroku-does-so-you-don-t-have-to-4o0b"&gt;eight different DevOps chores that Heroku handles for you&lt;/a&gt;. There are, of course, many more things which Heroku takes care of, so that you can focus on building your application and not worry about your operations or infrastructure. We're going to continue our list with seven &lt;em&gt;more&lt;/em&gt; things that &lt;a href="https://www.heroku.com/"&gt;Heroku&lt;/a&gt; does, this time focusing on networking, workflows, and integrating with other tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Easily attach external systems
&lt;/h2&gt;

&lt;p&gt;You're probably already aware that &lt;a href="https://elements.heroku.com/addons/"&gt;Heroku provides a marketplace with hundreds of add-ons&lt;/a&gt;.  These are (typically) third-party services that can be tightly integrated with your application which provide third-party solutions for various extensions, such as logging, databases, search, job queueing, and more.&lt;/p&gt;

&lt;p&gt;Heroku believes that offering a choice in external dependencies in a marketplace like this is a good thing. They've vetted the list to ensure that only the highest quality add-ons are available for applications hosted on Heroku. What's more, scaling these dependencies &lt;a href="https://devcenter.heroku.com/articles/heroku-cli-commands#heroku-addons-upgrade-addon-plan"&gt;up&lt;/a&gt; or &lt;a href="https://devcenter.heroku.com/articles/heroku-cli-commands#heroku-addons-downgrade-addon-plan"&gt;down&lt;/a&gt; to account for changing traffic demands can be executed through a single command: &lt;code&gt;heroku addons:upgrade ADDON [PLAN]&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Automatic security updates for add-ons
&lt;/h2&gt;

&lt;p&gt;Much like the safeties guaranteed for your language or framework, Heroku regularly rolls out updates for add-ons to address critical issues; for example, &lt;a href="https://blog.heroku.com/rolling-redis-fleet"&gt;here's one done for Redis&lt;/a&gt; a while back. Heroku takes security seriously, and takes a proactive approach to patching software like this so you don't have to worry about staying on top of vulnerabilities.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Manages access rights and security levels
&lt;/h2&gt;

&lt;p&gt;In order to establish access rights in the name of privacy, some application hosts require you to configure complicated ACLs for each and every aspect of your application and its dependencies.&lt;/p&gt;

&lt;p&gt;Heroku provides &lt;a href="https://devcenter.heroku.com/articles/app-permissions"&gt;a handful of permissions categories&lt;/a&gt;, within which you can group individuals or entire &lt;a href="https://devcenter.heroku.com/articles/heroku-teams"&gt;teams&lt;/a&gt;. The granularity of abilities for these permissions range from read-only access to an app, to managing the code, to full administrative ownership. They are simple enough to reason about, and flexible enough to protect users, whether they're a start-up or an enterprise-level organization.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Load testing for Apache Kafka
&lt;/h2&gt;

&lt;p&gt;If you're making use of Apache Kafka on Heroku, you can actually &lt;a href="https://devcenter.heroku.com/articles/kafka-on-heroku#node-failure-exercise"&gt;trigger one of your nodes to intentionally fail&lt;/a&gt;. The purpose of this is to observe how the message stream behaves under an unexpected disaster. The goal is to provide peace of mind, by demonstrating that your app will suffer no performance issues or degradation as a result, since we end up automatically rerouting data to another node. Regularly invoking this sort of chaos testing can help verify that your application operates successfully in the event of a real (though unlikely!) disaster.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Tracking deployments for individual environments
&lt;/h2&gt;

&lt;p&gt;You've coded a feature, opened up a pull request, and are looking for feedback from others on your team. An easy way to enable a frictionless discussion is to set up &lt;a href="https://devcenter.heroku.com/articles/pipelines"&gt;a pipeline&lt;/a&gt; with a &lt;a href="https://devcenter.heroku.com/articles/github-integration-review-apps"&gt;Review App&lt;/a&gt;. For any new PR that's opened up, Heroku can build a Review App, which is a disposable app with a unique URL. Review Apps can quickly demonstrate the value of new changes, without requiring others to pull your branch or even have a development environment set up on their machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Network isolation with managed VPCs
&lt;/h2&gt;

&lt;p&gt;For apps with sensitive access to data, you may need to limit its exposure to the public Internet. Normally, this might involve setting up a VPC, with subnets defining the range of IP addresses that your app can communicate over. For an app which requires high availability, this also involves establishing separate VPCs per geographic region.&lt;/p&gt;

&lt;p&gt;Heroku abstracts away all of the hassle with &lt;a href="https://devcenter.heroku.com/categories/private-space-infrastucture-networking"&gt;Private Spaces&lt;/a&gt;. This allows you to establish secure, site-to-site connections between a Heroku app and your company's Intranet. As can be expected, this too can be established just through the command-line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;heroku spaces:create my-space-name --team my-team-name --region tokyo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  7. Configure SSL
&lt;/h2&gt;

&lt;p&gt;Last, but certainly not least, Heroku will secure your domain with &lt;a href="https://devcenter.heroku.com/articles/ssl"&gt;an SSL certificate&lt;/a&gt;. Better yet, your apps can enable automated certificate management, to automatically provisions and renew SSL certificates over time. This guarantees that your certs are regularly kept up-to-date.&lt;/p&gt;

&lt;h2&gt;
  
  
  Want more?
&lt;/h2&gt;

&lt;p&gt;Are you curious about any other differences between Heroku and other PaaS providers that can be highlighted in a future post? Let me know in the comments!&lt;/p&gt;

</description>
      <category>heroku</category>
      <category>devops</category>
      <category>paas</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Eight DevOps things Heroku does (so you don't have to!)</title>
      <dc:creator>Garen Torikian</dc:creator>
      <pubDate>Tue, 15 Oct 2019 16:25:13 +0000</pubDate>
      <link>https://dev.to/heroku/eight-devops-things-heroku-does-so-you-don-t-have-to-4o0b</link>
      <guid>https://dev.to/heroku/eight-devops-things-heroku-does-so-you-don-t-have-to-4o0b</guid>
      <description>&lt;p&gt;You might know—vaguely, roughly, innately—that deploying an application to Heroku's Platform-as-a-Service would be a good choice to make. It'll save you from the struggles of setting up networks, managing infrastructure, and configuring services, freeing up time to focus on building features for your application, to deliver value to your customers. But maybe you aren't really sure &lt;em&gt;how&lt;/em&gt; Heroku does those things. Or maybe (&lt;em&gt;gulp&lt;/em&gt;) you don't think Heroku can help you out much.&lt;/p&gt;

&lt;p&gt;Heroku takes care of so many DevOps-y chores for you that its simplicity tends to obfuscate the number of concerns involved in deploying and maintaining a production-grade app. So in this post, we're going to take a look at just eight ways in which Heroku makes your development life just a little bit easier.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Manage machine images
&lt;/h2&gt;

&lt;p&gt;Your application is more than just the code you've written. It also relies on the packages you've explicitly imported, the programming language you're writing in, and the operating system your code runs on. You know what that all adds up to? Maintenance. You've got to be on the lookout to make sure that your operating system is patched from security flaws and your programming language is updated for performance improvements, constantly.&lt;/p&gt;

&lt;p&gt;Instead of sorting through package security updates, or figuring out how to take your site down and update to the latest Ubuntu, Heroku will take care of all of the security overhead for you. &lt;a href="https://devcenter.heroku.com/changelog-items/1649"&gt;Here’s a recent blog post&lt;/a&gt; demonstrating what the process for the end user is to receive critical security updates (hint: it’s nothing).&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Deploy a stack to multiple environments
&lt;/h2&gt;

&lt;p&gt;The problem of machine maintenance scales linearly as you add more servers to your workflow, typically by way of needing more environments. If you need to introduce a staging environment into your setup, you may already have some automation scripts to set up that infrastructure, but now you need to pay close attention to their system dependencies as well.&lt;/p&gt;

&lt;p&gt;Deploying the entire stack of a Heroku application is as simple as a &lt;code&gt;git push&lt;/code&gt; to a new Heroku app. Rather than spending time re-provisioning the minutiae of your servers' needs onto staging servers, you can &lt;a href="https://devcenter.heroku.com/articles/multiple-environments"&gt;just link your different environments and push your code out&lt;/a&gt; to a new environment instantaneously.&lt;/p&gt;

&lt;p&gt;But maybe you have many environments, and you don’t want to keep entering commands to deploy the app to all of them. That’s fine; you can &lt;a href="https://devcenter.heroku.com/articles/pipelines"&gt;set up a pipeline&lt;/a&gt; instead. A pipeline allows you to promote your app through various environments: development, review, staging, production. &lt;/p&gt;

&lt;p&gt;When it comes to environment variables, you can &lt;a href="https://devcenter.heroku.com/articles/config-vars"&gt;get and set these through the command line&lt;/a&gt;, too:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# set for production (by default)&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;heroku config:set &lt;span class="nv"&gt;APP_SECRET&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;XXX
&lt;span class="c"&gt;# set for staging&lt;/span&gt;
&lt;span class="nv"&gt;$ &lt;/span&gt;heroku config:set &lt;span class="nv"&gt;APP_SECRET&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;YYY &lt;span class="nt"&gt;--remote&lt;/span&gt; staging
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3. Administration and tuning your databases
&lt;/h2&gt;

&lt;p&gt;Databases are at the heart of every application, from the very simple to the very complex. Applications rely on the presence of a database from which to store and retrieve essential information. If connections to this service stop flowing, it can completely kill your application. Tweaking the database engine itself can also eke out some performance gains, which can be critical for high-traffic sites.&lt;/p&gt;

&lt;p&gt;Let Heroku's database administrators ensure that the installations are well-tuned, so that your engineers can work on other issues. They'll upgrade the database, automatically apply security patches, migrate you off of bad instances, and more. While your team is iterating on improvements, Heroku's DBAs will optimize your database for gains you didn't even know you needed.&lt;/p&gt;

&lt;p&gt;Frequent maintenance of your backend isn’t just lip-service: &lt;a href="https://blog.heroku.com/frequent-maintenances-for-secure-heroku-data-services"&gt;it’s a core value Heroku prides itself on&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Log everything across every environment
&lt;/h2&gt;

&lt;p&gt;Logs: they're not just for lumberjacks anymore! You're likely tracking various actions across the lifecycle of requests, whether that's to your web app, its worker queues, system components, or any backing services. Configuring all of those sources of information can be a challenge, and aggregating into something that can be consumed could be even harder.&lt;/p&gt;

&lt;p&gt;Heroku's &lt;a href="https://devcenter.heroku.com/articles/logplex"&gt;Logplex&lt;/a&gt; will not only slurp up information from any source you tell it to, it'll also spit it back out in a format that you expect, whether that's for long-term storage, a terminal somewhere, or any API endpoint. You can &lt;a href="https://devcenter.heroku.com/articles/logplex#sources-and-drains"&gt;build your own pipeline&lt;/a&gt;, or &lt;a href="https://elements.heroku.com/addons/categories/logging"&gt;tap into the existing add-on ecosystem&lt;/a&gt; for log routing.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Monitoring and alerting
&lt;/h2&gt;

&lt;p&gt;As you might expect from its extensive and flexible logging setup, Heroku's also got &lt;a href="https://devcenter.heroku.com/categories/monitoring-metrics"&gt;a phenomenally beautiful monitoring system&lt;/a&gt;. Although you can choose to integrate with third-parties on this, in many cases, you won't need to. Heroku's dashboard will show you much of what you need to know, from memory health (via GC times and overall usage), to HTTP request/response times, and even the overall health of your server's interaction with its resources. There are also &lt;a href="https://elements.heroku.com/addons/categories/monitoring"&gt;plenty of external integrations to choose from&lt;/a&gt; if you’d prefer to hook into an external system like New Relic or Graphite.&lt;/p&gt;

&lt;p&gt;For Professional dynos, you can also &lt;a href="https://devcenter.heroku.com/articles/metrics#threshold-alerting"&gt;set up alerts directly from the Heroku Dashboard&lt;/a&gt;. As you're configuring your thresholds, Heroku will tell you how many times it would've triggered notifications to your time, and advise you to adjust the metrics if they're too sensitive. There's also a native integration with PagerDuty.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Backups and recovery
&lt;/h2&gt;

&lt;p&gt;Have you got a backup strategy for your application and its infrastructure? &lt;em&gt;And are you sure it works?&lt;/em&gt; With dependencies that your system might need—Redis, Postgres, Kafka—you have to set up data backup and recovery strategies, configure the granularity of its retention, and make sure that you've always got enough disk space on hand to keep the backups you need.&lt;/p&gt;

&lt;p&gt;Since Heroku's on your side, and probably more nervous about data loss than you are, they've already thought through a thousand different disaster scenarios, and are able to store and restore your data in the safest manner possible. For example, &lt;a href="https://devcenter.heroku.com/articles/heroku-postgres-rollback"&gt;a single command through your terminal&lt;/a&gt; can rollback your database to a previous state; if a Kafka node fails, &lt;a href="https://devcenter.heroku.com/articles/kafka-on-heroku#node-failure-exercise"&gt;Heroku's automated systems will work to restore it&lt;/a&gt; to its normal operation.&lt;/p&gt;

&lt;p&gt;For your Postgres database, you can even &lt;a href="https://devcenter.heroku.com/articles/heroku-postgres-backups#scheduling-backups"&gt;set a schedule for the backups&lt;/a&gt; to be taken outside of peak hours. Redis backups/forks can also be set &lt;a href="https://devcenter.heroku.com/articles/heroku-redis#migrating-to-heroku-redis"&gt;through the command line&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Automatically respawn a downed server
&lt;/h2&gt;

&lt;p&gt;It's not uncommon for applications to require the need of a process manager, in order to restart stalled—or completely crashed—applications. But as with backups, ensuring that this daemon is doing the right thing can be tough, especially considering that it "works" only when everything else doesn't.&lt;/p&gt;

&lt;p&gt;In the event of the unexpected, Heroku will &lt;a href="https://devcenter.heroku.com/articles/dynos#automatic-dyno-restarts"&gt;restart your servers for you&lt;/a&gt;, whether that's due to resource exhaustion, a segfault, or just a plain logic bug. While attempting to recover, the runtime also has a cool-off period of several minutes to gracefully resume normal operations.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Forking primary databases
&lt;/h2&gt;

&lt;p&gt;If your application is highly available, it needs to be in more places than one, which means more of everything--including databases. In the average HA setup, all data writes go to a primary database, and several region-specific secondaries are distributed across the world. Ensuring the proper throughout from the primary to the secondary is a bundle of networking and latency issues, chief among them being to ensure that your application does not read data that has become stale.&lt;/p&gt;

&lt;p&gt;For Postgres (&lt;a href="https://dev.to/heroku/postgres-is-underrated-it-handles-more-than-you-think-4ff3"&gt;The One True Database™️&lt;/a&gt;), Heroku provides &lt;a href="https://devcenter.heroku.com/articles/heroku-postgres-follower-databases"&gt;the ability to fork your primary database&lt;/a&gt; more easily than you might believe possible. By creating a database through the command-line, and providing the &lt;code&gt;--follow&lt;/code&gt; flag, you can create a read-only follower of your primary database. Changes from the primary are streamed in real-time, allowing for seamless migrations, data redundancy, and a hot standby.&lt;/p&gt;

&lt;h2&gt;
  
  
  Concentrate on your needs, not your infrastructure
&lt;/h2&gt;

&lt;p&gt;When you spend less time setting up and executing on your production needs, you’ll have more time for your users’ needs. Heroku runs eight million apps at 25 billion requests per day, and the developers building those apps benefit from a DevOps workflow that's managed for them.&lt;/p&gt;

</description>
      <category>heroku</category>
      <category>devops</category>
      <category>paas</category>
      <category>webdev</category>
    </item>
    <item>
      <title>The PaaS Advantage</title>
      <dc:creator>Garen Torikian</dc:creator>
      <pubDate>Mon, 17 Jun 2019 14:15:17 +0000</pubDate>
      <link>https://dev.to/heroku/the-paas-advantage-26kk</link>
      <guid>https://dev.to/heroku/the-paas-advantage-26kk</guid>
      <description>&lt;p&gt;I've been thinking a lot recently about how modern applications are developed and deployed. A lot of my experience with this stems from having worked at large corporations, at early stage startups, and simply trying to make goofy projects on my own time.&lt;/p&gt;

&lt;p&gt;When I was at larger organizations many years ago, there was a strict release workflow: you checked in your code, documentation, and assets by an agreed upon deadline—something like Tuesdays at 11pm PST. Then, all of that was bundled up and released to the world by an operations team whose sole responsibility was to make sure everything went smoothly. If there was an infrastructure issue with the deploy, a release manager worked with the operations team to solve it. For example, if there was some replication lag in production, the ops team needed to investigate which patch from all the weekly changes caused that problem and fix it. Obviously, this is unfair and not ideal. As a developer working on an application, I was ignorant of what the operations team handled. I had no clue as to the amount of stress they worked through, and how their role was to suss out from hundreds of changelists where a problem might've been introduced. Looking back, this was all completely erroneous: had the developers known what the operations team was dealing with, we would have probably agreed to more ownership and responsibility, in order to avoid introducing issues in the first place. These infrastructure problems were sometimes caused by code that didn't fully grasp how the underlying systems worked, a problem that was, in a sense, abstracted away by organizational hierarchies.&lt;/p&gt;

&lt;p&gt;During my time working at a couple of startups, the responsibility of the code and infrastructure operating correctly was distributed amongst everyone working on the product. If, on a deploy, there was an issue with the database, or if storage space ran out, or if timeouts were increasing as a result of unexpected behavior, no one was going to save you. It was your change and yours to fix. This was an immense learning opportunity, and one that I'm definitely grateful for, but it swung too far in the opposite direction. Now, in addition to building features, I was also in charge of controlling the underlying server behavior. While developers should have a grasp as to how their code behaves in production in order to mitigate performance and resource issues, I don't think it's the best use of an application developer's time to constantly wade into these operational details.&lt;/p&gt;

&lt;p&gt;In my personal projects, I've struggled to set up modern services that my applications have required. In order to set up a Rails site on a vanilla infrastructure-as-a-service model, one needs to be familiar with the packages available on their Ubuntu base image, an understanding of how to map their nginx server to their domain, setting up services that start when the server does, and securing all of them. This ends up being too much mental overhead. I mean, it &lt;em&gt;can&lt;/em&gt; be done, but it takes a few hours and dozens of outdated help articles written over various years by various authors to figure it all out. And once it's set up correctly, how to handle continuous deployments is a Sisyphean task. It turns out that it's actually quite complicated to establish them. For example, which deployment tool should I even use? Is &lt;a href="https://capistranorb.com/"&gt;Capistrano&lt;/a&gt; still a good choice? I've heard good things about &lt;a href="https://github.com/mina-deploy/mina"&gt;Mina&lt;/a&gt;, which is newer and something else to learn. If I decide to write my next project in Node, I'll need to learn and configure a whole new tool, like &lt;a href="http://pm2.keymetrics.io/docs/tutorials/capistrano-like-deployments"&gt;PM2&lt;/a&gt;. And what if, against all odds, the project takes off? Suddenly I'll need to think about the appropriate resources for scaling, load balancing requests, and maybe introducing new dependencies, like Redis for caching.&lt;/p&gt;

&lt;h2&gt;
  
  
  Know what you need to (and forget the rest)
&lt;/h2&gt;

&lt;p&gt;In recent years, there's been a shift towards embracing DevOps as a methodology. In a nutshell, DevOps means applying long-established principles, such as writing tests or using version control, to your infrastructure setup. You can automate the resources, services, and networking essentials that your application needs, roll them back if problems are introduced, or discuss them with others in a pull request, just like any other piece of code. For example, a DevOps workflow would advocate that your changes include tests for how your code behaves for the end user and on your infrastructure.&lt;/p&gt;

&lt;p&gt;However, there's an immense learning curve to achieving proficiency in operational management. You may find that you're spending more time tweaking configuration files than actually writing code for your application. DevOps tends to conflate the roles of developing an application with running its infrastructure; that to be a developer, you must know how to plan, build, and satisfy your user's needs, &lt;em&gt;as well as&lt;/em&gt; know how to architect, setup, and scale a server's needs. No one would assume that a backend Ruby developer be also savvy enough in frontend CSS and JavaScript, yet that's more or less what an overemphasis on server management suggests.&lt;/p&gt;

&lt;p&gt;I believe that DevOps &lt;em&gt;is&lt;/em&gt; a great idea—for companies that are at an immense scale. I'm talking Google/Netflix/Facebook scale, applications that receive millions of requests a second, who host their own data centers (or at least, crucially rely on dedicated servers). A mistake or inefficiency in their operational setup could affect hundreds of thousands of people in an instant, so it makes sense for them to rely on technologies that reduce the possibility for error.&lt;/p&gt;

&lt;p&gt;As an application developer, I don't want to think about provisioning servers and CPUs or tweaking processes and deployments. It doesn't much matter whether a project is just me or me and a group of friends or me and an entire organization. Our main concern—and frankly, our main interest—is to build something that people use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Simple is easier
&lt;/h2&gt;

&lt;p&gt;For the rest of us, there's really no need to make the responsibility of building something that people use more complicated than it already is. Deploying to a platform-as-a-service takes the burden of servicing operations and places it on experts whose sole responsibility is to keep your site up. While PaaS models tend to be pricier than DIY infrastructure-as-a-service models, the trade-off is that you won't be paying engineers to fine-tune your networks, nor will your application developers juggle their focus between features that grow your business and managing an application's underlying services.&lt;/p&gt;

&lt;p&gt;Not only is the cognitive overload alleviated, platforms like Heroku (for complete applications), Zeit (for simpler microservices), or Netlify (for static sites) are just easier to work with. Rather than learning a new configuration language or stringing together Unix commands, you can work in a faster continuous deployment cycles through a &lt;code&gt;git push&lt;/code&gt;  without worrying about the details of getting the site online during its many iterations. If a new feature depends upon a new service, you can attach it to the app through a command-line sequence as easy as &lt;code&gt;addons kafka:standard-1&lt;/code&gt; and rest assured knowing that best practices are provided for you. As your site grows, you can just drag a slider on the administration page to handle any scaling issues. Even if an infrastructure problem is introduced as a result of a code change, you can temporarily adjust the infrastructure via your PaaSes UI while working on a fix in the application.&lt;/p&gt;

&lt;p&gt;The web has become more complicated as it has grown, and over the years, communities have continued to develop tooling that satisfies their intricate needs. I think application developers would do well to take a step back and ask what problems they're trying to solve, and then pick a development strategy that solves them in the simplest way possible. It may well be that taking control of your infrastructure and operational management is essential for your application and organization, but if it's not, it's better to focus on what's important—delivering features that your users need from you.&lt;/p&gt;

</description>
      <category>heroku</category>
      <category>devops</category>
      <category>paas</category>
      <category>yagni</category>
    </item>
  </channel>
</rss>
