<?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: Run [X]</title>
    <description>The latest articles on DEV Community by Run [X] (@run-x).</description>
    <link>https://dev.to/run-x</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%2Forganization%2Fprofile_image%2F4409%2F76a189d4-f217-4a32-a966-9a212ca26023.png</url>
      <title>DEV Community: Run [X]</title>
      <link>https://dev.to/run-x</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/run-x"/>
    <language>en</language>
    <item>
      <title>K8s Pods: Image tags vs. Digest</title>
      <dc:creator>Nočnica Mellifera</dc:creator>
      <pubDate>Wed, 27 Oct 2021 17:41:03 +0000</pubDate>
      <link>https://dev.to/run-x/k8s-pods-image-tags-vs-digest-376b</link>
      <guid>https://dev.to/run-x/k8s-pods-image-tags-vs-digest-376b</guid>
      <description>&lt;p&gt;Image tags are a common source of frustration with the management of Kubernetes pods. How many times have I seen a question like this&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I am unable to see my changes, even though I am using the referencing the image using the Correct Tag.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Or even worse:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I haven't changed the Referenced for the Image, but its behavior changed&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;These are normal problems to face do the basic design of Docker's image management.&lt;/p&gt;

&lt;p&gt;But before diving in, let's see thee terminology that we'll be talking about.&lt;/p&gt;

&lt;h3&gt;
  
  
  Image Tag
&lt;/h3&gt;

&lt;p&gt;Human understandable reference to an Image used to convey information about that variant. An image can be tagged with multiple tags and can be referenced using any.&lt;/p&gt;

&lt;p&gt;Properties:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mutable&lt;/li&gt;
&lt;li&gt;Unique (i.e., the same tag can be used on multiple Images and will reference the last image that was tagged)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Image Digest
&lt;/h3&gt;

&lt;p&gt;Hash reference to an Image.&lt;/p&gt;

&lt;p&gt;Properties:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Immutable&lt;/li&gt;
&lt;li&gt;Created when pushing an Image to the Repository for the first time.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  General Practice
&lt;/h3&gt;

&lt;p&gt;Programmers tend to reference the Images using the Image tags, for the obvious reason of getting a better readability, but in doing so, an important blind spot is missed: an image &lt;strong&gt;I1&lt;/strong&gt; referenced at time &lt;strong&gt;T1&lt;/strong&gt;, may refer to image &lt;strong&gt;I2&lt;/strong&gt; at time &lt;strong&gt;T2&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;This generally happens when the Programmer is referring to generic tags such as &lt;strong&gt;latest&lt;/strong&gt;, or can happen due to &lt;strong&gt;&lt;a href="https://www.whitesourcesoftware.com/free-developer-tools/blog/overcoming-dockers-mutable-image-tags/"&gt;Human error&lt;/a&gt;&lt;/strong&gt;, when you end up tagging Image with an &lt;strong&gt;already used Tag&lt;/strong&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  Use Cases
&lt;/h3&gt;

&lt;p&gt;Using &lt;strong&gt;latest&lt;/strong&gt; to point to latest version always. Some other self-explanatory tags like &lt;strong&gt;qa / dev / prod&lt;/strong&gt;, &lt;strong&gt;versioning tags&lt;/strong&gt; like &lt;strong&gt;x.y.x&lt;/strong&gt; for maintaining versions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Non-deterministic Deployment
&lt;/h3&gt;

&lt;p&gt;When using Image tags for referencing the Image, there is no guarantee that the Tag would refer to the expected Image, because of &lt;strong&gt;Tag Mutability&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Another defect with the non-deterministic deployment is some infrastructure tools which are dependent on the &lt;strong&gt;Stage Changes&lt;/strong&gt;, will not be able to detect the changes when using generic tags and no versioning, or if due to a human error of mutating the tags.&lt;/p&gt;

&lt;p&gt;In order to avoid Non-Deterministic deployment, we should use Immutable Image Identifier &lt;strong&gt;Image Digest&lt;/strong&gt; should be used. But this way, we lose the Human readability. In order to have &lt;strong&gt;Human Readability&lt;/strong&gt;, as well as &lt;strong&gt;Deterministic Deployment&lt;/strong&gt;, we can refer to the Image using both Image Tag and Image Digest. Docker gives us the capability to integrate both and refer to the Image.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Image Reference: &amp;lt;image_name&amp;gt;:&amp;lt;image_tag&amp;gt;@&amp;lt;image_digest&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Deployment Image with Tag vs Digest&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Different ways of referencing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Accessing a resource from a collection of similar resources is always easy when there is a versioning attached to it. It helps users to have a better control the specific resource that they are using. This is useful when versioning attached to the resources is immutable. But at times, situations arise where one wants to have even more readability, for ex., using the latest version ever of the resource every time or raising a small patch so that it reflects in the version. In such cases, we would require the tags to be mutable.&lt;/p&gt;

&lt;p&gt;This is the usability around which the K8s Pods were build. Having mutable tags gives the ability to have named versions, something which makes a lot of sense because things are kept easier on the pipelines, like take the &lt;strong&gt;latest&lt;/strong&gt; image, use the &lt;strong&gt;dev&lt;/strong&gt; image, or maybe when a fix is so small that it doesn’t require a version update.&lt;/p&gt;

&lt;p&gt;So, now that the versions, a.k.a., tags, are mutable. So, does that mean that is nothing immutable that can be used to get the same Image again and again. This is where the Digest comes into the picture. This is a hash key that is created based on what all base images are used for constructing the image and this is unique for every different image. Digest can be used to reference the same image again and again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Now let’s get into some techie stuff&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why are tags important?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Tags are human understandable reference to an Image used to convey information about that variant. An image can be tagged with multiple tags and can be referenced using any. Importantly, a &lt;em&gt;tag can be changed to different images&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Non-deterministic Deployment?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When using Image tags for referencing the Image, there is no guarantee that the Tag would refer to the expected Image, because of &lt;strong&gt;Tag Mutability&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This drawback is for the Infrastructure Tools, which depend on &lt;strong&gt;State Changes&lt;/strong&gt;, as the tools will not be able to find the difference in the state, if the Tag refers to a different image or not.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So, how do we make this deterministic?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In order to get the best of both the worlds, that is human understandable reference as well as deterministic deployments, there needs to be a &lt;strong&gt;Dynamic Mapping&lt;/strong&gt; between &lt;strong&gt;Image Tag&lt;/strong&gt; and &lt;strong&gt;Image Digest&lt;/strong&gt; which can be used when deploying images. While pushing to a repository, we can tag the image and then once the digest is created, use that to deploy the images.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How can OPTA help?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Opta?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Opta is a platform for running containerised workloads in the cloud. It abstracts away the complexity of networking, IAM, K8s, and various other components - giving you a clean cloud agnostic interface to deploy and run your containers. It’s all configuration driven so you always get a repeatable copy of your infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How does Opta help?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Deploy option of Opta with an image tag input would automatically create the Dynamic Mapping between the Image uploaded to the Repository and use the Image digest to deploy the Image.&lt;/p&gt;

&lt;p&gt;For more information on how to use Opta, use this: &lt;a href="https://docs.opta.dev/getting-started/"&gt;https://docs.opta.dev/getting-started/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>k8s</category>
      <category>pods</category>
      <category>devops</category>
    </item>
    <item>
      <title>[Video] Running your cloud locally: Opta's Open source Infrastructure as Code</title>
      <dc:creator>Nočnica Mellifera</dc:creator>
      <pubDate>Mon, 11 Oct 2021 18:56:15 +0000</pubDate>
      <link>https://dev.to/run-x/video-running-your-cloud-locally-opta-s-open-source-infrastructure-as-code-1f91</link>
      <guid>https://dev.to/run-x/video-running-your-cloud-locally-opta-s-open-source-infrastructure-as-code-1f91</guid>
      <description>&lt;p&gt;Opta is a way to get started deploying services in the cloud without having to understand the nitty-gritty of permissions and connection settings between components.&lt;/p&gt;

&lt;p&gt;In this quick video, Sachin demonstrates how you can run Opta locally before you deploy to AWS.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/xKIxolcVvTs"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;The goal with Opta Local is to let you preview how your application code is running from your laptop without having to deploy to the cloud for every code change&lt;/p&gt;

</description>
      <category>aws</category>
      <category>deployment</category>
      <category>cicd</category>
    </item>
    <item>
      <title>Can we build a better Terraform? The story of Opta</title>
      <dc:creator>Nočnica Mellifera</dc:creator>
      <pubDate>Wed, 29 Sep 2021 12:39:12 +0000</pubDate>
      <link>https://dev.to/run-x/can-we-build-a-better-terraform-the-story-of-opta-288l</link>
      <guid>https://dev.to/run-x/can-we-build-a-better-terraform-the-story-of-opta-288l</guid>
      <description>&lt;p&gt;&lt;em&gt;cover image by By Daein Ballard -  &lt;a href="https://commons.wikimedia.org/w/index.php?curid=5068482"&gt;CC BY-SA 3.0&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
Managing to distributed systems is... difficult. You can find guides and recommendations everywhere that say if you don't have to do a distributed workload you shouldn't.&lt;/p&gt;

&lt;p&gt;An article from last year by yours truly argued that &lt;a href="https://increment.com/containers/primer-on-containerization/"&gt;containers and container orchestration&lt;/a&gt; have very different futures: It makes sense that almost everyone will be working with containers in the future, but it's not as clear that container orchestration knowledge will be de rigueur.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1358307866961084422-274" src="https://platform.twitter.com/embed/Tweet.html?id=1358307866961084422"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1358307866961084422-274');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1358307866961084422&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;As we've faced this complexity of modern distributed workloads a number of companies have tried to make this work easier. These tools tend to fall into three categories:&lt;/p&gt;

&lt;h2&gt;
  
  
  "We have an okay tool, but hire us and we'll deliver your whole cloud"
&lt;/h2&gt;

&lt;p&gt;When tools are sold with strict SLA's and mandatory professional services, you're often &lt;em&gt;really&lt;/em&gt; purchasing Kubernetes expertise rather than great software&lt;/p&gt;

&lt;h2&gt;
  
  
  "Our Tool is Free! (for 90 days)"
&lt;/h2&gt;

&lt;p&gt;Often a partially-open-source-tool that inevitably requires some Software-as-a-Service component to really work, a number of tools will lock you into their platform, never give you all the tools, &lt;em&gt;and&lt;/em&gt; rarely offer you any support if things go wrong&lt;/p&gt;

&lt;h2&gt;
  
  
  Actual Open Source
&lt;/h2&gt;

&lt;p&gt;These are teams releasing tools as Open Source Software that can be used, start to finish, on your own. Multiple teams see the growth potential in Kubernetes and other distributed workloads and just want to grow with the industry. They offer professional services or hosted servers in addition to free tools, but you can do the whole thing start to finish yourself.&lt;/p&gt;

&lt;p&gt;While this third option sounds a lot better for the user, it can still hit pitfalls. The industry standard Terraform is currently &lt;a href="https://www.theregister.com/2021/09/07/hashicorp_pause/"&gt;struggling to keep up with community PRs&lt;/a&gt; and is in danger of falling behind users needs.&lt;/p&gt;

&lt;p&gt;This isn't a new story: Large-ish companies can struggle to justify the cost of maintaining an open source tool, and once  they grow to that medium size it's hard to find the time to maintain a tool everyone wants but no one has time to update.&lt;/p&gt;

&lt;h1&gt;
  
  
  Trying to build a better Terraform
&lt;/h1&gt;

&lt;p&gt;Enter RunX, a small team focused on trying to build a fully modern tool for deploying distributed workloads. We're a small team of just 8, laser focused on reducing toil for cloud engineers. &lt;a href="https://techcrunch.com/2021/09/28/runx-announces-4-1m-seed-to-simplify-cloud-infrastructure-deployment-for-developers/"&gt;We just raised 4 million in funding&lt;/a&gt;, and we'd love you to try out &lt;a href="https://github.com/run-x/opta"&gt;Opta, the easier way to deploy.&lt;/a&gt;&lt;/p&gt;

</description>
      <category>terraform</category>
      <category>devops</category>
      <category>kubernetes</category>
      <category>aws</category>
    </item>
    <item>
      <title>Can Kubernetes Save You Money?</title>
      <dc:creator>Nočnica Mellifera</dc:creator>
      <pubDate>Fri, 24 Sep 2021 16:52:49 +0000</pubDate>
      <link>https://dev.to/run-x/can-kubernetes-save-you-money-584j</link>
      <guid>https://dev.to/run-x/can-kubernetes-save-you-money-584j</guid>
      <description>&lt;p&gt;&lt;em&gt;cover image: detail from Hieronymus Bosch - Death and the Miser&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Kubernetes is not known as a particularly economic option. If you're migrating to a distributed architecture from a simple virtual machine, you're likely to see an increase in hosting costs and hours spent on setup at first. &lt;/p&gt;

&lt;p&gt;A recent article on our RunX blog talked about how you can &lt;a href="https://blog.runx.dev/how-to-save-60-cost-by-migrating-from-heroku-to-opta-on-aws-2df53bbb7e2a"&gt;save money using Opta&lt;/a&gt; to deploy the same project to AWS you previously would have hosted on Heroku.&lt;/p&gt;

&lt;p&gt;I'm curious if you've seen overall cost savings by switching to Kubernetes, either from an older distributed compute tool or a monolithic architecture.&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>discuss</category>
      <category>healthydebate</category>
    </item>
    <item>
      <title>Tesla Bot is a great example of how NOT to develop a product</title>
      <dc:creator>Nočnica Mellifera</dc:creator>
      <pubDate>Wed, 22 Sep 2021 19:02:16 +0000</pubDate>
      <link>https://dev.to/run-x/tesla-bot-is-a-great-example-of-how-not-to-develop-a-product-4i5i</link>
      <guid>https://dev.to/run-x/tesla-bot-is-a-great-example-of-how-not-to-develop-a-product-4i5i</guid>
      <description>&lt;p&gt;&lt;em&gt;Image by u/Kruzat, available via &lt;a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode"&gt;Creative Commons Attribution-ShareAlike 4.0 International License&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;As I’m sure many of you have already seen, Elon Musk has announced Tesla Bot, a humanoid robot intended to&lt;a href="https://www.forbes.com/sites/johnkoetsier/2021/08/20/tesla-bot-elon-musk-reveals-humanoid-tesla-robot-which-is-apparently-not-a-joke/"&gt;“automate repetitive tasks”&lt;/a&gt;. The CEO announced Tesla Bot not with a working prototype or even a partial proof-of-concept, but with a dancer dressed in a modified morphe suit who &lt;a href="https://www.cnbc.com/2021/08/19/elon-musk-teases-tesla-bot-humanoid-robot-for-repetitive-tasks.html"&gt;“gyrated wildly on stage”&lt;/a&gt; before the presentation. The robot has a vague timetable, with Musk claiming a prototype will be out sometime next year, and an ambitious set of (at this point hypothetical) specifications: the ability to not only understand and interpret voice commands, but carry out tasks ranging from factory assembly to grocery shopping. Musk has announced that a universal basic income will be necessary to support the people unemployed by his imagined product.&lt;/p&gt;

&lt;p&gt;While claims of this magnitude are pretty rare, the bones of the scenario are pretty universal: the boss overpromises on a product that the actual development team knows will be impossible to roll out by the deadline. So what do you do when your boss overcommits your team to building, say, a fully-autonomous robot that can work at Amazon in one year?&lt;/p&gt;

&lt;p&gt;Allison Green of Ask A Manager has &lt;a href="https://www.askamanager.org/2020/08/how-to-disagree-with-your-boss.html"&gt;advice&lt;/a&gt; for pushing back on a boss’s decision. “A good boss does want to know when you disagree with something, especially if you feel strongly and especially if you have information or context she might not have considered,” Green says. She says to consider whether you have information that your boss doesn’t have that might make them reconsider, or when a course of action might have consequences that your boss isn’t aware of yet. Executive coach &lt;a href="https://tribunecontentagency.com/article/dealing-with-a-boss-who-overpromises/"&gt;Daneen Skube&lt;/a&gt; also says that you can put the onus on your boss to give you the roadmap to achieving what they’ve come up with. “Don’t let your boss get away with platitudes and grand concepts,” she says. “Keep looking confused as you query him about how to implement his noble goals.”&lt;/p&gt;

&lt;p&gt;Green and Skube agree that if your boss decides to keep overpromising, your chances of dissuading them are limited, and you should consider the importance of the issue to you. If you work at a company, for example, that has a &lt;a href="https://gizmodo.com/elon-musks-boring-company-cancels-los-angeles-tunnel-fo-1830707724"&gt;history&lt;/a&gt; of &lt;a href="https://www.cnbc.com/2018/09/24/tesla-solar-roof-tiles-where-are-they.html"&gt;pushing&lt;/a&gt; &lt;a href="https://www.foxnews.com/auto/elon-musk-explains-tesla-cybertruck-window-fail"&gt;nonviable products&lt;/a&gt;, within that company culture it might not be possible as an individual to “manage up” by correcting your boss--especially if your boss is &lt;a href="https://www.theguardian.com/technology/2018/jun/21/tesla-whistleblower-sabotage-elon-musk-gigafactory-martin-tripp"&gt;known&lt;/a&gt; to &lt;a href="https://www.bbc.com/news/world-us-canada-50695593"&gt;take criticism poorly&lt;/a&gt;. An individual who continues to vocally disagree after the boss has shut that disagreement down could come across as hostile, even if their concerns are valid and serious.&lt;/p&gt;

&lt;p&gt;When a boss is unlikely to respond well to one person pushing back, another choice is to push back as a group. Green has &lt;a href="https://www.askamanager.org/2018/02/how-to-speak-up-as-a-group-at-work.html"&gt;specific suggestions&lt;/a&gt; for how to handle that. She says the important thing is to make sure that you and the rest of your group are on the same page about it, and to address the boss together, rather than appointing a spokesperson. It’s also worth remembering that a particularly self-aggrandizing or hostile boss might try to divide and conquer--it might be worth practicing the conversation beforehand, with one of your coworkers playing the boss.&lt;/p&gt;

&lt;p&gt;And finally: if your company routinely overpromises and fails publicly, it might be worth looking for a new job. No amount of prestige is worth the headache of having a boss who chronically oversells and then makes it your problem when the product can’t live up to the hype.&lt;/p&gt;

</description>
      <category>career</category>
      <category>ai</category>
      <category>watercooler</category>
      <category>tesla</category>
    </item>
    <item>
      <title>Embrace Remote Work or Perish</title>
      <dc:creator>Nočnica Mellifera</dc:creator>
      <pubDate>Thu, 16 Sep 2021 13:34:03 +0000</pubDate>
      <link>https://dev.to/run-x/embrace-remote-work-or-perish-3h1j</link>
      <guid>https://dev.to/run-x/embrace-remote-work-or-perish-3h1j</guid>
      <description>&lt;p&gt;&lt;em&gt;cover image by Matt.c.28 - Own work, CC BY-SA 4.0&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Recently our team at RunX was &lt;a href="https://www.mercurynews.com/2021/09/08/silicon-valley-finds-remote-work-is-easier-to-begin-than-end/"&gt;featured in a piece on remote work&lt;/a&gt; that has proven something of a rorschach test: in comments on the article and social media sites like LinkedIn, people have seen remote work as difficult, dangerous, a godsend, the future, or an effect of the pandemic that will soon be shaken off. &lt;/p&gt;

&lt;p&gt;I wanted to take the opportunity to talk about how RunX has succeeded by embracing remote work, and why other startups will need to let go of locality if they don’t want to limit their growth.&lt;/p&gt;

&lt;h1&gt;
  
  
  The Limiting factor in cloud growth: people
&lt;/h1&gt;

&lt;p&gt;In 2018 I gave a few talks about the difficulties in hiring experts in containerization, which included the throwaway line: “talk to any CTO and they’ll tell you that it’s hard to hire qualified people, when’s the last time a CTO complained they couldn’t find enough RAM?”&lt;/p&gt;

&lt;p&gt;Sadly that little quip is a bit less timely given the current chip shortage, but even if you’ve been waiting six months for a GPU, the point still stands. Where once hardware purchasing could present a hard limit on your IT Operations growth, now the limiting factor is almost always the trouble of staffing and maintaining a team of skilled operations engineers.&lt;/p&gt;

&lt;p&gt;Wait, what does any of this have to do with remote work?&lt;br&gt;
I know this has been a hard year and a half for all of us. And for some of us, part of the pain of this time, along with the constant fear and knowledge that western liberal democracies don’t care about the welfare of their citizens, being cooped up in our homes wasn’t always fun. But for those of us lucky enough to still have jobs, and homes, remote work has meant a major upgrade to a previous commute heavy existence.&lt;/p&gt;

&lt;p&gt;As our children return to school we’re able to spend an extra hour with them every single day. And our trips to school can happen with any parent now that we don’t have to get to a downtown office. &lt;/p&gt;

&lt;p&gt;Days where you have two meetings, one at 8 am and the second at 3pm, can be spent in relative leisure rather than furtively reloading twitter at your desk. And if a day has more than 8 hours of work stuffed into it, well at least you’re home to have dinner with your family.&lt;/p&gt;

&lt;p&gt;But as the pandemic stretches into its second year, people’s lives are shifting more fundamentally. People are re-locating to homes that more suit their daily lives. More than one of my own co-workers has gone from semi-urban wasteland to bucolic bliss, complete with solar panels and a goat herd. Others are living closer to family, while still others are planning multi-year global tours. &lt;/p&gt;

&lt;p&gt;As numerous large tech companies prepare to ramp up their long-silent offices, they have little to offer in compensation for these lost benefits beyond K-cups and artisan burritos. Major players like Apple and Facebook have shown more willingness to force their employees to commute. Their confidence stems possibly from the knowledge that, paying the highest salaries in the industry, their employees will need to take a pay cut to leave.&lt;/p&gt;

&lt;h1&gt;
  
  
  Go Big and Go Home
&lt;/h1&gt;

&lt;p&gt;Now perhaps you see the connection between remote work and the difficulty of hiring and keeping good people. If you are incapable of paying half a million dollars for every engineer as the FAANG companies do, you will be hard pressed to keep them if you insist they fight for domestic real estate in the bay area.&lt;/p&gt;

&lt;p&gt;But the most successful teams won’t just say ‘remote OK’ and leave it at that. I’m working next on a piece about how remote teams differentiate themselves. In the meantime, comment down below with what benefits you expect in a remote team.&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>healthydebate</category>
      <category>remote</category>
      <category>career</category>
    </item>
    <item>
      <title>Docker Images in Kubernetes : Image tags vs. Digest</title>
      <dc:creator>Nilesh Sarupriya</dc:creator>
      <pubDate>Tue, 14 Sep 2021 18:07:17 +0000</pubDate>
      <link>https://dev.to/run-x/docker-images-in-kubernetes-image-tags-vs-digest-4hl5</link>
      <guid>https://dev.to/run-x/docker-images-in-kubernetes-image-tags-vs-digest-4hl5</guid>
      <description>&lt;h4&gt;
  
  
  Ever faced below problems with Images
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;I am unable to see my changes, even though I am using the referencing the image using the Correct Tag.&lt;br&gt;
- Software Engineer developing something&lt;/p&gt;

&lt;p&gt;I haven't changed the Referenced for the Image, but its behaviour changed.&lt;br&gt;
- Software Engineer using something&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  What is Referencing?
&lt;/h4&gt;

&lt;p&gt;Accessing a resource from a collection of similar resources is always easy when there is a versioning attached to it. It helps users to have a better control the specific resource that they are using. &lt;/p&gt;

&lt;p&gt;This is useful when versioning attached to the resources is immutable. But at times, situations arise where one wants to have even more readability, for ex., using the latest version of the resource every time or raising a small patch so that it reflects in the version. In such cases, we would require the tags to be mutable.&lt;/p&gt;

&lt;h4&gt;
  
  
  Referencing in Docker Image in K8s
&lt;/h4&gt;

&lt;p&gt;The usability around which the &lt;a href="https://docs.docker.com/registry/spec/api/#docker-registry-http-api-v2"&gt;Docker Registry HTTP API V2&lt;/a&gt; was built was to have Immutable references to the Images.&lt;/p&gt;

&lt;p&gt;Having mutable tags gives the ability to have named versions, something which makes a lot of sense because things are kept easier on the pipelines, like take the latest image, use the dev image, or maybe when a fix is so small that it doesn’t require a version update.&lt;/p&gt;

&lt;p&gt;So, now that the versions, a.k.a., tags, are mutable, does that mean there is nothing immutable that can be used to get the same Image again and again. This is where the Digest comes into the picture. This is a hash key that is created based on what all base images are used for constructing the image and this is unique for every different image. Same Digest can be used to reference the same image again and again.&lt;/p&gt;

&lt;h4&gt;
  
  
  Now let’s get into some techie stuff
&lt;/h4&gt;

&lt;h5&gt;
  
  
  Why are tags important?
&lt;/h5&gt;

&lt;p&gt;Tags are human understandable reference to an Image used to convey information about that variant. An image can be tagged with multiple tags and can be referenced using any. Importantly, a tag can be changed to different images.&lt;/p&gt;

&lt;h5&gt;
  
  
  What is Non-deterministic Deployment?
&lt;/h5&gt;

&lt;p&gt;When using Image tags for referencing the Image, there is no guarantee that the Tag would refer to the expected Image, because of Tag Mutability.&lt;/p&gt;

&lt;p&gt;This drawback is for the Infrastructure Tools, which depend on State Changes, as the tools will not be able to find the difference in the state, if the Tag refers to a different image or not.&lt;/p&gt;

&lt;h5&gt;
  
  
  So, how do we make this deterministic?
&lt;/h5&gt;

&lt;p&gt;In order to get the best of both the worlds, that is human understandable reference as well as deterministic deployments, there needs to be a Dynamic Mapping between Image Tag and Image Digest which can be used when deploying images. While pushing to a repository, we can tag the image and then once the digest is created, use that to deploy the images.&lt;/p&gt;

&lt;h4&gt;
  
  
  How can OPTA help?
&lt;/h4&gt;

&lt;h5&gt;
  
  
  What is Opta?
&lt;/h5&gt;

&lt;p&gt;Opta is a platform for running containerized workloads in the cloud. It abstracts away the complexity of networking, IAM, K8s, and various other components - giving you a clean cloud agnostic interface to deploy and run your containers. It’s all configuration driven so you always get a repeatable copy of your infrastructure.&lt;/p&gt;

&lt;h5&gt;
  
  
  How does Opta help?
&lt;/h5&gt;

&lt;p&gt;The "deploy" option of Opta with an image tag input would automatically create the Dynamic Mapping between the Image uploaded to the Repository and use the Image digest to deploy the Image. This guarantees that the new image is used every time regardless of the tag.&lt;/p&gt;

&lt;p&gt;For more information on how to use Opta, please visit: &lt;a href="https://docs.opta.dev/getting-started/"&gt;https://docs.opta.dev/getting-started/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>docker</category>
      <category>kubernetes</category>
      <category>devops</category>
      <category>containers</category>
    </item>
    <item>
      <title>How to Deploy Wordpress to Kubernetes on AWS</title>
      <dc:creator>Nočnica Mellifera</dc:creator>
      <pubDate>Tue, 14 Sep 2021 14:04:27 +0000</pubDate>
      <link>https://dev.to/run-x/how-to-deploy-wordpress-to-kubernetes-on-aws-o5p</link>
      <guid>https://dev.to/run-x/how-to-deploy-wordpress-to-kubernetes-on-aws-o5p</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;The first time someone suggested adding Wordpress to the &lt;a href="https://github.com/run-x/awesome-kubernetes" rel="noopener noreferrer"&gt;Awesome Kubernetes&lt;/a&gt; list, I was surprised! I didn't think of Wordpress as something that needed a distributed workload tool. So many readers mentioned it that I put together this brief tutorial.&lt;/p&gt;

&lt;p&gt;This article analyzes available paths for migrating a WordPress website to AWS, and the architecture components for AWS-hosted WordPress. This instruction to covers how &lt;a href="https://github.com/run-x/opta" rel="noopener noreferrer"&gt;Opta&lt;/a&gt; can be used to provide shared storage on the AWS EKS platform for a WordPress CMS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Overview of WordPress
&lt;/h2&gt;

&lt;p&gt;WordPress is a simple (CMS) content management system, a process of posting articles and media to a website. WordPress was born as a blogging platform but has grown to support the creation of all kinds of websites. It is free and open-source. It was launched in 2003. It has mainly two basic elements that are the front end and the back end. WordPress provides a spontaneous user interface for this purpose for show text, images, and other media to the web. Anything users see on the website has been uploaded to the webserver. As of 2021, more than 42% of the top 10 million websites are running WordPress.&lt;/p&gt;

&lt;h2&gt;
  
  
  Alternatives for WordPress on AWS
&lt;/h2&gt;

&lt;p&gt;WordPress has been developed to combine CMS competence that integrates with modern elastic, scalable, and cloud-native architecture. The WordPress group has attempted to develop modules that enable the creations of WordPress sites that exploit AWS Cloud contributions.&lt;/p&gt;

&lt;p&gt;AWS provides a large-scale cloud platform that improves performance, control, scalability, and reliability for WordPress websites. The Amazon web services Elastic Kubernetes Service grant the company to build, manage and scale Kubernetes clusters on AWS cloud or local tools.&lt;/p&gt;

&lt;p&gt;There are the following options in AWS when going for WordPress hosting as per utilization cases changes:&lt;br&gt;
&lt;strong&gt;a. AmazonEC2&lt;/strong&gt; -- The EC2 virtual machine system is the classic way to own your own virtualized server on AWS. But the smooth scaling and automated restarting of instances aren't included&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F36hvgzyjel29efgqwanj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F36hvgzyjel29efgqwanj.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;b. Amazon LightSail&lt;/strong&gt; -- It is simple to apply a single-instance virtual private server that abstracts all instances needed to run a simple workload or quick deployment. &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fifirrlaibzua9xn16h70.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fifirrlaibzua9xn16h70.png" alt="Picture2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Image Source: &lt;a href="https://aws.amazon.com/blogs/" rel="noopener noreferrer"&gt;https://aws.amazon.com/blogs/&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For small WordPress websites, it acts as a perfect starting point that can scale later with its growth.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;c. AWS marketplace&lt;/strong&gt; --It includes different pre-configured WordPress images that can be deployed into AWS EC2 in quick time. That single-click deployments are tailored to unique work and come in an adjustable combination of packages and plugins for efficient use of computing resources.&lt;/p&gt;
&lt;h1&gt;
  
  
  WordPress Hosting Components
&lt;/h1&gt;

&lt;p&gt;While most WordPress organizations utilize speedy begins to enable automated arrangements dependent on best procedures, comprehend the parts that make up a working WordPress application in AWS cloud.&lt;br&gt;
WordPress app. requires components to perform four functionalities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Static Host Content&lt;/li&gt;
&lt;li&gt;Dynamic host content&lt;/li&gt;
&lt;li&gt;Blog/site store content/data&lt;/li&gt;
&lt;li&gt;On the file system store uploaded files and images.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now there we will discuss how above each functionality can be managed for AWS. &lt;/p&gt;
&lt;h2&gt;
  
  
  Stateless Web Tier
&lt;/h2&gt;

&lt;p&gt;In a stateless web tier, the server does not keep any data from one request to the next. The user needs to do its work in a series of simple transactions, and the client has to keep track of what happens between requests. While sessions are maintained by cookies on the end-user’s web browsers, so the WordPress core is stateless.&lt;/p&gt;
&lt;h2&gt;
  
  
  Scaling Web Tier
&lt;/h2&gt;

&lt;p&gt;It is defined as having the capability to link resources to a system that increases its performance (decrease output times or increase throughput). The number of compute instances includes by AWS that can be used to evolve single-server applications into scalable architecture.&lt;br&gt;
There are about five main components included by scalable web tier to handle scaling for dynamic content:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon Machine Images (AMIs)&lt;/li&gt;
&lt;li&gt;Amazon EC2 Instances&lt;/li&gt;
&lt;li&gt;Load Balancing&lt;/li&gt;
&lt;li&gt;Automatic Scaling&lt;/li&gt;
&lt;li&gt;Health Checkup&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Shared Storage
&lt;/h2&gt;

&lt;p&gt;Mostly all WordPress Installation files, and client customizations should be handled in a shared platform as this eases the strain on web servers. Amazon web services having the Elastic File System (EFS) which gives a scalable, highly networked file system for different compute instances.&lt;br&gt;
Data Tier&lt;br&gt;
When the WordPress installation data files and setups are moved into a common Network File System (NFS), and static resources are being served on S3, stateful parts are hosted on WordPress Databases. Amazon Aurora is the top solution for running stateful workloads for AWS applications. Both MySQL and PostgreSQL are compatible with this stage. In Opta we will use PostgreSQL.&lt;/p&gt;
&lt;h1&gt;
  
  
  What is Opta?
&lt;/h1&gt;

&lt;p&gt;Opta is a stage for running containerized jobs in the cloud. It abstracts away the intricacy of networking, IAM, Kubernetes, and different parts - giving you a perfect cloud skeptic interface to deploy and run your containers. It's all arrangement or configuration driven so you generally get a repeatable duplicate of your foundation.&lt;/p&gt;
&lt;h2&gt;
  
  
  Setting up Opta
&lt;/h2&gt;

&lt;p&gt;Before starting with WordPress, we need to set up Opta. For this article, we will be used Opta.&lt;br&gt;
To set up Opta, install Opta by using the following command in a Linux distro like Ubuntu.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/bin/bash -c "$(curl -fsSL https://docs.opta.dev/install.sh)"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Set-up environment Creation&lt;br&gt;
An organization like AWS or Azure, we will set up an environment by executing the following commands:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;opta init env (AWS)&lt;/code&gt;&lt;br&gt;
Creating a file opta.yml to describe an environment that you will create. Using the below command and hit then a description of the environment will start showing and a cluster will be created.&lt;br&gt;
Cluster Creation&lt;br&gt;
Using the below command, we can create yml file that is responsible for the initial configuration for your environment and architecture setup.&lt;br&gt;
&lt;code&gt;cat opta.yml&lt;/code&gt;&lt;br&gt;
We have seen the first part we will mention about the AWS region and create account id through AWS console, now the second next part we will link modules through setting up Kubernetes or k8s cluster and created several nodes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;aws&lt;/span&gt;
&lt;span class="na"&gt;org_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;XXXX&lt;/span&gt;
&lt;span class="na"&gt;providers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;aws&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;region&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ca-central-1&lt;/span&gt; 
    &lt;span class="na"&gt;account_id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;XXXXXXXXX254&lt;/span&gt;
&lt;span class="na"&gt;modules&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;base&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;k8s-cluster&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;k8s-base&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After that execute the command &lt;code&gt;opta apply&lt;/code&gt;&lt;br&gt;
When the above command gets executed, we will create an EKS cluster for you and configure VPC, networking, and different other infrastructure pieces.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F653fnxkqayghjuank8lm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F653fnxkqayghjuank8lm.png" alt="Picture3"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementing WordPress on AWS using Opta
&lt;/h2&gt;

&lt;p&gt;Kubernetes empowers quick scaling of web applications utilizing on-request Horizontal Pod Autoscaling (HPA) approaches. An increment in workload pushes Kubernetes to plan extra reproductions utilizing extra PODs hosting comparative data content. Kubernetes also utilizes rollback arrangement systems to aid in seamless updates for content, client uploaded files. that is the reason a WordPress hosting application on the AWS Elastic Kubernetes Service improves to implementation of scalable, high accessibility websites.&lt;br&gt;
Now we will learn and understand how to provide shared storage to WordPress sites running on EKS which require access to shared volumes.&lt;/p&gt;

&lt;p&gt;Kubernetes Access Mode is a specification of a Persistent Volume that defines how it is mounted on a host. Various storage providers help various capabilities and the mode for each Persistent Volume is set to the specific combination of access modes it supports. &lt;br&gt;
There are four types of access mode supported by Kubernetes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read-only Memory&lt;/li&gt;
&lt;li&gt;Read WriteOnce&lt;/li&gt;
&lt;li&gt;Readwritemany&lt;/li&gt;
&lt;li&gt;ReadwriteoncePod &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In this article you have learned &lt;a href="https://www.runx.dev/" rel="noopener noreferrer"&gt;what opta is&lt;/a&gt; and how it is involved with deployment process, and this article explained from basic to the concept behind the deployment of WordPress on AWS using opta. If you have any trouble with the process please comment down below or &lt;a href="https://join.slack.com/t/opta-group/shared_invite/zt-r1p9k1iv-4MP1IMZCT9mwwwdJH0HRyA" rel="noopener noreferrer"&gt;join the opta slack&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>kubernetes</category>
      <category>opta</category>
      <category>aws</category>
    </item>
    <item>
      <title>DevOps Is Not Automation</title>
      <dc:creator>Nočnica Mellifera</dc:creator>
      <pubDate>Wed, 08 Sep 2021 09:42:46 +0000</pubDate>
      <link>https://dev.to/run-x/devops-is-not-automation-2amo</link>
      <guid>https://dev.to/run-x/devops-is-not-automation-2amo</guid>
      <description>&lt;p&gt;&lt;em&gt;Image by Kharnagy, shared via &lt;a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode"&gt;CC Attribution-ShareAlike 4.0 International License&lt;/a&gt;.&lt;/em&gt;&lt;br&gt;
The Puppet 2021 State of Devops Report highlights that DevOps is now cemented as standard industry practice, whereas previously it had been the product of a “vibrant, enthusiastic,&lt;br&gt;
and productive community, vigorously debating and sharing methodologies.” DevOps becoming an institution is in some ways a great thing, but it also makes it important for teams attempting to incorporate DevOps practices to remember that DevOps is not (or at least not just) automation. &lt;/p&gt;

&lt;p&gt;As the report highlights: plenty of teams and companies use a high level of automation but are still not achieving the goal of DevOps, which is continuous production. The 2021 report points out that a highly evolved DevOps team using automation can roll out new software changes in under an hour with a very low failure rate. Meanwhile, miid-evolution teams, which often report a high level of automation, are lagging significantly behind that, rolling out changes in days or weeks. So why might two highly-automated teams differ so widely in terms of their ability to deploy?&lt;/p&gt;

&lt;p&gt;The answer is culture. A highly-evolved DevOps team isn’t just about automating processes; it’s about eliminating production roadblocks. Automating processes without making changes to how your teams communicate is just moving the roadblocks around. &lt;/p&gt;

&lt;p&gt;A key first step to truly effective DevOps is to synchronize development and operations teams--teams that in traditional tech culture are siloed--and in fact, often at odds. &lt;a href="https://fortegrp.com/what-are-the-core-devops-principles/"&gt;Forte Group&lt;/a&gt; points out that that typically, development teams are incentivized to push things forward (get their deliverables in on time) and quality assurance teams and system administrators are incentivized to minimize disruptions (which often means pushing back deadlines to focus on a quality product). In order to create a culture where continuous development is possible, these teams have to think of their work as sharing an objective. Additionally, they need to communicate frequently and effectively.&lt;/p&gt;

&lt;p&gt;DevOps also requires a shift from one big deliverable at the end of a long development period to small, incremental deployments that happen regularly and are constantly being monitored and adjusted. The principle of &lt;a href="https://resources.github.com/ci-cd/"&gt;CI/CD&lt;/a&gt;, requires a big shift in company culture. While automation is a part of CI/CD (especially if continuous deployment is also part of your structure), the principle that allows CI/CD to succeed is &lt;a href="https://www.atlassian.com/devops/what-is-devops/devops-culture"&gt;the ability to make mistakes&lt;/a&gt;. Expecting a certain amount of failure and building in a margin of error represents a big change from trying to put out a perfect product and then assigning blame when the product inevitably isn’t as perfect as anticipated. This model of releasing things as long as they are within an exceptional margin of error, and testing them in the field, can be emotionally challenging. If it’s going to work, teams and managers have to get good at not punishing each other for the inevitable failures that are part of this iterative process.&lt;/p&gt;

&lt;p&gt;These changes can be a big shift for a company that typically operates on a more traditional model. &lt;a href="https://cio.economictimes.indiatimes.com/news/corporate-news/gartner-highlights-5-key-steps-to-delivering-an-agile-io-culture/47014075"&gt;Gartner, Inc&lt;/a&gt; states that it can be best to introduce the principles of DevOps to a few select teams first, to allow them to model behavior for the rest of the company later. They state that leaders should “focus their efforts on an initial, small [DevOps] team, establish the values and behaviors needed, and take incremental efforts to recognize and reinforce desired outcomes prior to scaling." This prevents a situation in which a CEO imposes DevOps principles on a whole company from the top down without taking the time to see how DevOps mixes into the existing company culture. Changing incentives and manager behavior takes time even if everyone on the actual team is onboard, and having one success story can be a selling point for adopting the principles company-wide. &lt;/p&gt;

&lt;p&gt;So: if your CEO is expecting a pivot to DevOps without laying out a clear plan for how incentives and communication are expected to change, it’s likely that your company will be in the majority that won’t get the benefits of rolling out DevOps correctly--faster delivery, acceptable margins of error, efficient use of automation, and strong collaboration. Any company that’s going to get to “highly evolved” DevOps is going to need to examine what they reward and penalize, and how teams talk to one another.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>productivity</category>
      <category>startup</category>
      <category>automation</category>
    </item>
    <item>
      <title>Do you love programming?</title>
      <dc:creator>Nočnica Mellifera</dc:creator>
      <pubDate>Thu, 02 Sep 2021 17:47:25 +0000</pubDate>
      <link>https://dev.to/run-x/do-you-love-programming-293c</link>
      <guid>https://dev.to/run-x/do-you-love-programming-293c</guid>
      <description>&lt;p&gt;&lt;em&gt;cover image by Chrys Omori &lt;a href="https://creativecommons.org/licenses/by/2.0"&gt;CC BY 2.0&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I've talked before about &lt;a href="https://dev.to/run-x/why-do-companies-ask-for-passion-46dp"&gt;how passion shouldn't be a job requirement&lt;/a&gt;. Now I just want to ask you personally, do you love programming? Or is it more of just a job?&lt;/p&gt;

&lt;p&gt;I love programming on my own projects. My toys, my own interesting things, that's super fun.&lt;/p&gt;

&lt;p&gt;I don't particularly care for programming when it's pumping out features as part of a corporate shop. &lt;/p&gt;

&lt;p&gt;What about you?&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>healthydebate</category>
    </item>
    <item>
      <title>Is your microservice architecture just a monolith wearing a bunch of smaller trench coats?</title>
      <dc:creator>Nočnica Mellifera</dc:creator>
      <pubDate>Tue, 31 Aug 2021 16:20:32 +0000</pubDate>
      <link>https://dev.to/run-x/is-your-microservice-architecture-just-a-monolith-wearing-a-bunch-of-smaller-trench-coats-1ig5</link>
      <guid>https://dev.to/run-x/is-your-microservice-architecture-just-a-monolith-wearing-a-bunch-of-smaller-trench-coats-1ig5</guid>
      <description>&lt;p&gt;&lt;em&gt;Image by Frycenty, shared via &lt;a href="https://creativecommons.org/licenses/by-sa/4.0/legalcode"&gt;Attribution-ShareAlike 4.0 International&lt;/a&gt;.&lt;/em&gt;&lt;br&gt;
If you’re migrating to a microservice architecture, it’s possible you’ll run into this issue: your services are all going down at the same time, which you were promised wouldn’t happen if you moved away from a monolith model. Why is this happening? Where are the benefits of the microservice model that you were promised? It’s worth examining whether your microservices are actually as siloed as you think that they are.&lt;/p&gt;

&lt;p&gt;First, some background. The key difference between a monolith and microservices is that the monolith model creates a cohesive single programming ecosystem that has everything it it that you need to run your whole setup. So if you’re designing a web store, your product search function is dependent on your inventory system, which is dependent on your pricing and billing system. The benefit of the monolith model, of course, is that it’s simpler to build and test. You just run the program, and see if everything works. However, &lt;a href="https://articles.microservices.com/monolithic-vs-microservices-architecture-5c4848858f59"&gt;if you change one thing in that chain, it affects everything else&lt;/a&gt;. DevOps aims to get away from the monolith model because it means that in order to launch, your product needs to be flawless, or as close to flawless as it’s ever going to get. In a monolith, updates are a pain because of interdependency--you have to redeploy the whole application with every update and then see if it works, rather than constantly iterating on specific services. And if you want to adopt a new technology or framework, you have to do it across the whole application: effectively a whole new version, when really you just wanted to update one function.&lt;/p&gt;

&lt;p&gt;A microservice model aims to decouple a product’s functions from one another so that they can run independently and be managed separately. You could, in this model, take your billing software offline for an hour or two without disrupting your whole operation, or even have a version of your billing software running on some of your servers while you test out the new billing program on others. This is what allows &lt;a href="https://resources.github.com/ci-cd/"&gt;CI/CD&lt;/a&gt; to happen.&lt;/p&gt;

&lt;p&gt;But you might notice that if implemented incorrectly, your microservice model has all of the redundancy of microservices and all of the interdependency of a monolith--meaning that effectively you just spent a bunch of extra time developing separate services that still crash when everything else crashes. What gives? &lt;/p&gt;

&lt;p&gt;The answer may be in your coupling. A loosely coupled chain of microservices is not interdependent, and should “know” as little about the other services in the chain as possible--i.e., your billing service should not be dependent on anything happening in your search function to work, although it may need to receive input from your purchasing service.  As &lt;a href="https://www.yusufdagtekin.com/2020/07/the-importance-of-loose-coupling-in-microservice-architecture/"&gt;Yusuf Dagtekin&lt;/a&gt; points out, “When microservices are not split in the right way, this creates tightly coupled microservices that will have all the disadvantages of a monolith and all the complexities of microservices, aka a distributed monolith.” He points out that a frequent source of tight coupling is any requirement for synchronous communication between services--that, effectively, makes everything you do dependent on the slowest service in the chain.&lt;/p&gt;

&lt;p&gt;There is a case to be made for specific instances of a &lt;a href="https://www.simplicityitself.io/our_team/2016/03/11/the-minilith-tightly-coupled-microservices.html"&gt;“minilith”&lt;/a&gt; as David Dawson calls it--tightly coupling some services that function as a unit. However, he points out that this makes them “effectively version locked”, reducing some of the benefits of using the microservice model. This might be worth it for a few services within a larger architecture, but if you’re tightly coupling everything, you might as well make it a monolith.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>api</category>
      <category>devops</category>
      <category>productivity</category>
    </item>
    <item>
      <title>I made a list of Awesome Kubernetes libraries, what should I add?</title>
      <dc:creator>Nočnica Mellifera</dc:creator>
      <pubDate>Thu, 26 Aug 2021 20:52:33 +0000</pubDate>
      <link>https://dev.to/run-x/i-made-a-list-of-awesome-kubernetes-libraries-what-should-i-add-4j26</link>
      <guid>https://dev.to/run-x/i-made-a-list-of-awesome-kubernetes-libraries-what-should-i-add-4j26</guid>
      <description>&lt;p&gt;&lt;em&gt;Cover image by Christian Ferrer / Wikimedia Commons, CC BY-SA 4.0&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We're pleased to share with the world our &lt;a href="https://github.com/run-x/awesome-kubernetes"&gt;awesome Kubernetes list&lt;/a&gt;. The focus of this list is for Kubernetes developers looking to build production applications.&lt;/p&gt;

&lt;p&gt;For context, it's a running theme on Github to release documentation-only repositories with your favorite content on a language or framework. Here's a &lt;a href="https://github.com/sindresorhus/awesome"&gt;list of awesome lists.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It was an "awesome" list that gave me my first tour of a number of GraphQL tools, so I'm excited to share my own.&lt;/p&gt;

&lt;p&gt;Some highlights:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/gravitational/teleport"&gt;Teleport&lt;/a&gt; allows engineers and security professionals to unify access for SSH servers, Kubernetes clusters, web applications, and databases across all environments.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cert-manager.io/"&gt;Certmanager&lt;/a&gt; provides 'certificates as a service' securely to developers and applications working within your cluster.&lt;/p&gt;

&lt;p&gt;Here's a talk we really enjoyed: &lt;a href="https://www.youtube.com/watch?v=ZqQTEdHVaCw&amp;amp;t=45s"&gt;Keynote: In Search of the Kubernetes "Rails" Moment - Bryan Liles&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check out our awesome list here: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/run-x/awesome-kubernetes"&gt;https://github.com/run-x/awesome-kubernetes&lt;/a&gt;&lt;/p&gt;

</description>
      <category>github</category>
      <category>discuss</category>
      <category>kubernetes</category>
      <category>k8s</category>
    </item>
  </channel>
</rss>
