<?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: jameslaneovermind</title>
    <description>The latest articles on DEV Community by jameslaneovermind (@jameslaneovermind).</description>
    <link>https://dev.to/jameslaneovermind</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%2F1045311%2F41b5b8f3-4ee6-4fdf-aed7-c0a62bda84de.jpeg</url>
      <title>DEV Community: jameslaneovermind</title>
      <link>https://dev.to/jameslaneovermind</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jameslaneovermind"/>
    <language>en</language>
    <item>
      <title>Of course monolith infrastructure is cheaper than serverless</title>
      <dc:creator>jameslaneovermind</dc:creator>
      <pubDate>Wed, 09 Aug 2023 14:38:19 +0000</pubDate>
      <link>https://dev.to/jameslaneovermind/of-course-monolith-infrastructure-is-cheaper-than-serverless-3oe1</link>
      <guid>https://dev.to/jameslaneovermind/of-course-monolith-infrastructure-is-cheaper-than-serverless-3oe1</guid>
      <description>&lt;p&gt;In recent years, teams have been buzzing about microservices, with many organisations jumping on the bandwagon. Even the US Air Force &lt;a href="https://thenewstack.io/how-the-u-s-air-force-deployed-kubernetes-and-istio-on-an-f-16-in-45-days/"&gt;now&lt;/a&gt; runs its latest fighter jets on k8s. However, just like Agile, SCRUM, or the ‘latest’ software development methodology, success isn’t guaranteed. What we are seeing is a realisation that the complexity of Kubernetes has a cost. A cost that is not always beneficial unless running at a larger, more complex scale or team topology. This is why &lt;a href="https://www.primevideotech.com/video-streaming/scaling-up-the-prime-video-audio-video-monitoring-service-and-reducing-costs-by-90"&gt;some&lt;/a&gt; teams are now making a reversal, returning to the monolithic architecture they once left behind.&lt;/p&gt;

&lt;p&gt;Splitting applications up with APIs gives us a defined separation of responsibility. It’s hard for 100+ people to cooperate together to build a monolith application. But if you had 10+ teams of 10 people deploying their own microservices it’s easier to decouple and to deliver at the pace each team needs.&lt;/p&gt;

&lt;p&gt;The problem…&lt;br&gt;
Getting everyone to agree on what these individual services should look like is where problems arise. Do you assign a team to a single function, or is it based on business unit requirements? For APIs, who is deciding the definitions and are they being documented? Conway’s Law states that the design of a system mirrors the structure of the organisation responsible for creating it. While microservices can offer better separation between teams, this advantage may not always be realised due to the inherent team structure or even culture of an organisation. In such a situation, monolithic architecture may start to look more attractive.&lt;/p&gt;

&lt;p&gt;So it’s not surprising to anyone that articles like Amazon Prime Video’s “Microservices to monoliths” will emerge from time to time. However, in this example, they needed to handle multiple state transitions per second as part of video streaming data. That’s really not a great match for serverless and led to some impressive cost savings for Amazon. However some question remain:&lt;/p&gt;

&lt;p&gt;Isn’t this something that should have been made apparent in the upfront design?&lt;br&gt;
Was this an example of jumping in headfirst and developing without thinking through the problem? Analysis paralysis is a real thing organisations face but could they of over-corrected on that a bit.&lt;br&gt;
Or would you argue employing serverless technology for rapid product testing was a smart initial move? There’s value in just getting things out the door and iterating, but it seemed that could be happening with less and less foresight, leading to bigger issues and larger refactors/iterations.&lt;br&gt;
In this example, the issue arose when they failed to recognise the expenses associated with step transitions, which then led to the subsequent optimisation step of transitioning from a step function to a single EC2 component.&lt;/p&gt;

&lt;p&gt;With that being said, the original post from Prime Video Tech contains numerous gaps, leading to confusion and a seemingly inaccurate title of “From distributed microservices to a monolith application”. The process appears to be more of a refactoring rather than a complete transformation.&lt;/p&gt;

&lt;p&gt;Deciphering the Monolith Puzzle&lt;br&gt;
So where does that leave us? Choosing the right architecture for your organisation is a balancing act. It’s possible to maintain the separation of concerns and scale different APIs using a monolithic architecture while still enjoying the benefits of microservices.&lt;/p&gt;

&lt;p&gt;To decide whether you need to move back to a monolithic architecture or fix issues in a distributed monolith consider:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The trade-offs and timeframe.&lt;/li&gt;
&lt;li&gt;Analyse the pain and productivity loss from microservices over time and weigh it against the cost of migrating to a monolith. Taking into account factors like Conway’s law, team size/ topology, experience, and expertise.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://teamtopologies.com/book"&gt;Team Topologies&lt;/a&gt; — by Matthew Skelton and Manuel Pais does an excellent job at providing a framework (grounded in Conway’s Law) for structuring teams to meet the needs of users and align with the architecture of the systems you’re building.‍&lt;/p&gt;




&lt;p&gt;&lt;a href="https://overmind.tech"&gt;Overmind&lt;/a&gt; is a SaaS Terraform impact analysis tool. It discovers your AWS infrastructure so that it can calculate the blast radius of an application change, including resources managed outside of Terraform. Helping you to identify the causes of outages by showing you which changes caused which problems. While also helping you to deploy changes faster by giving an impact analysis report before any change is made. From this report you can understand if the change can be confidently made, or held back if it’s too risky, preventing outages in the first place.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>cloud</category>
      <category>aws</category>
    </item>
    <item>
      <title>Solving Meta's top 4 outage causes: 1/4 Unexpected Dependencies</title>
      <dc:creator>jameslaneovermind</dc:creator>
      <pubDate>Mon, 07 Aug 2023 15:18:23 +0000</pubDate>
      <link>https://dev.to/jameslaneovermind/solving-metas-top-4-outage-causes-14-unexpected-dependencies-m7k</link>
      <guid>https://dev.to/jameslaneovermind/solving-metas-top-4-outage-causes-14-unexpected-dependencies-m7k</guid>
      <description>&lt;p&gt;In 2022 Francois Richard deliver an excellent &lt;a href="https://www.youtube.com/watch?v=17MAeF_MU8M"&gt;talk&lt;/a&gt; at SRECon EMEA about how Meta drained every backbone router simultaneously (you remember, it was &lt;em&gt;that&lt;/em&gt; outage). Here were their top 4 trending root causes of outages:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Configuration updates&lt;/li&gt;
&lt;li&gt;System Overload&lt;/li&gt;
&lt;li&gt;Unexpected Dependencies&lt;/li&gt;
&lt;li&gt;Complexity Migrations&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Unexpected Dependencies
&lt;/h3&gt;

&lt;p&gt;Let's start with unexpected dependencies and why they are so difficult to identify even for companies like Meta. The problem starts at the tool stack, observability tools are usually the first line of defence however they measure outputs such as metrics, logs &amp;amp; traces. While useful they require a good mental model and a deep understanding of the application in order to interpret them. But what we are talking about is unexpected issues, which often fall outside of our own mental model and/or observability tools. &lt;/p&gt;

&lt;p&gt;When these type of outages happen, they can be complex to resolve as the system's behaviour contradicts out understanding of how it should work. This leads to confusion and requires individuals rebuild their mental model of the system on the fly, as mentioned in the brilliant STELLA report. In Meta's case services went down globally for close to six hours.&lt;/p&gt;

&lt;h3&gt;
  
  
  The solution? Blast Radius.
&lt;/h3&gt;

&lt;p&gt;By measuring config changes (inputs) instead of outputs we can:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Ensure that the configuration and current state of a system are readily accessible.&lt;/li&gt;
&lt;li&gt;Enabling users to easily discover the potential impact of their intended changes and what areas might be affected.&lt;/li&gt;
&lt;li&gt;Providing users with the means to validate that their modifications have not caused any issues downstream.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--j7-As_7m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4y276o4bwh3hlgzlyguk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--j7-As_7m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4y276o4bwh3hlgzlyguk.png" alt="Image description" width="800" height="678"&gt;&lt;/a&gt;&lt;br&gt;
Using our GitHub action (or doing it manually) you can go from Terraform Plan → Blast Radius. The blast radius is based on your live AWS state, not Terraform, which lets you see what might break:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Includes resources not managed by Terraform&lt;/li&gt;
&lt;li&gt;Discovers dependencies even if they were created manually&lt;/li&gt;
&lt;li&gt;Shows live data, not out-of-date CMDB data&lt;/li&gt;
&lt;li&gt;Does all of this with read-only access, no agents, no telemetry, and no input from you. If you had to tell us how your apps are architected, we're hardly going to find unexpected dependencies are we?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This means that before making a change, you would be able to identify any potential unexpected dependencies in the blast radius. &lt;/p&gt;

&lt;h4&gt;
  
  
  What's next? (2/4) Configuration Updates
&lt;/h4&gt;

&lt;p&gt;We're not stopping with just blast radius. Once you've decided to apply your changes, track them with Overmind. Since we've already worked out all the dependencies, we can tell you if your changes has broken something downstream, even if you didn't know it existed.&lt;br&gt;
Want to try it?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://overmind.tech"&gt;Sign up&lt;/a&gt; and start calculating blast radius now! It's free for individuals, if you're interested in a team plan contact us. &lt;/p&gt;




&lt;p&gt;Overmind is a SaaS Terraform impact analysis tool. It discovers your AWS infrastructure so that it can calculate the blast radius of an application change, including resources managed outside of Terraform. Helping you to identify the causes of outages by showing you which changes caused which problems. While also helping you to deploy changes faster by giving an impact analysis report before any change is made. From this report you can understand if the change can be confidently made, or held back if it's too risky, preventing outages in the first place.&lt;/p&gt;

&lt;p&gt;Note: This is beta software &amp;amp; we'd love any feedback. Either by Discord, or book a meeting.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>cloud</category>
    </item>
    <item>
      <title>What’s the difference between Terraform Graph and Overmind?</title>
      <dc:creator>jameslaneovermind</dc:creator>
      <pubDate>Wed, 12 Jul 2023 14:26:51 +0000</pubDate>
      <link>https://dev.to/jameslaneovermind/whats-the-difference-between-terraform-graph-and-overmind-mkd</link>
      <guid>https://dev.to/jameslaneovermind/whats-the-difference-between-terraform-graph-and-overmind-mkd</guid>
      <description>&lt;p&gt;When making changes understanding the output from your Terraform plan is critical to ensuring that there is no unintentional impact from your changes. Because of this Terraform uses terraform graph that helps users to visualise these changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Terraform Graph?
&lt;/h2&gt;

&lt;p&gt;‍&lt;br&gt;
The terraform graph command is used to generate a visual representation of either a configuration or execution plan. The output is in the DOT format, which can then be used to generate charts.&lt;/p&gt;

&lt;p&gt;The recommended program that can read this format is GraphViz, but many web services are also available to read this format. Some add extra formatting to the outputs so that&lt;/p&gt;

&lt;p&gt;These are some of the online services:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.webgraphviz.com/"&gt;http://www.webgraphviz.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dreampuf.github.io/GraphvizOnline/"&gt;https://dreampuf.github.io/GraphvizOnline/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/mdaines/viz.js"&gt;https://github.com/mdaines/viz.js&lt;/a&gt; → emscripten → &lt;a href="http://viz-js.com/"&gt;http://viz-js.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://sketchviz.com/new"&gt;https://sketchviz.com/new&lt;/a&gt;
‍
### Usage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;First thing install graphviz (example on Mac OS):&lt;/p&gt;

&lt;p&gt;&lt;code&gt;brew install graphviz&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;Then generate a graph output using:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;terraform graph [options]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;-type&lt;/code&gt; flag can be used to control the type of graph shown. Terraform creates different graphs for different operations. The default type is "plan" if a configuration is given, and "apply" if a plan file is passed as an argument.&lt;/p&gt;

&lt;h3&gt;
  
  
  Generating Images
&lt;/h3&gt;

&lt;p&gt;The output of terraform graph is in the DOT format, which can easily be converted to an image by making use of dot provided by GraphViz:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ terraform graph | dot -Tsvg &amp;gt; graph.svg&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;Here is an example graph output using graphviz:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--S8J_jGNs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iopo2z3pnwsccsx0i7nq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--S8J_jGNs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iopo2z3pnwsccsx0i7nq.png" alt="GraphViz Example" width="800" height="536"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As mentioned above, there are other services that can convert the provided dot. With these you typically upload the output to the online service and can modify it within the interface.&lt;/p&gt;

&lt;p&gt;Heres an example from &lt;a href="https://dreampuf.github.io/GraphvizOnline/"&gt;dreampuf.github.&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Tf50H-Qh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kwpkcr6i24vt8jdjm72i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Tf50H-Qh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kwpkcr6i24vt8jdjm72i.png" alt="Dreampuf example" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Overmind?
&lt;/h2&gt;

&lt;p&gt;Overmind is a SaaS Terraform impact analysis tool. It discovers your AWS infrastructure so that it can calculate the blast radius of a change including those resources outside of Terraform. &lt;/p&gt;

&lt;h3&gt;
  
  
  Usage
&lt;/h3&gt;

&lt;p&gt;‍&lt;br&gt;
To get started with Overmind you need to create a account by signing up on the website. Once signed up you'll need to configure a AWS source. Overmind uses a read-only role to query the AWS api to generate the blast radius.&lt;/p&gt;

&lt;p&gt;There are two ways of creating a source:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Using Cloud Formation (Automatic):&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8NVz5o2i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lhewil9g2ebhejsadtth.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8NVz5o2i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lhewil9g2ebhejsadtth.png" alt="Ovemrind Cloud formation" width="800" height="544"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Using IAM role (Manual):&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dUaRHGo0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/blhjj9iifbkvuwzizoy2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dUaRHGo0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/blhjj9iifbkvuwzizoy2.png" alt="Overmind AWS role" width="800" height="661"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once your source is configured you are ready to create your first change.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HgkFp1qU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s5gqbb136ypu3tv6udbf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HgkFp1qU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s5gqbb136ypu3tv6udbf.png" alt="Overmind Create change" width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you’ve added the context of the change you need to select the resources that you will be changing. Currently you can do this manually by selecting one or more resource types. A GitHub action is planned to be released soon that will allow you to parse the plan output automatically into Overmind.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gsyJHfN2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fhonqjb9ohm6bzpqzehv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gsyJHfN2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fhonqjb9ohm6bzpqzehv.png" alt="Overmind" width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you’ve selected your types you can then select the individual items you are going to change. Overmind populates these from your AWS source that you configured earlier.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--A-CBXnEh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/um9tzxg6dr86t0mrmiyc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--A-CBXnEh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/um9tzxg6dr86t0mrmiyc.png" alt="Overmind resources" width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you’re done selecting the items the final step is to then calculate the blast radius.&lt;/p&gt;

&lt;h3&gt;
  
  
  Blast Radius
&lt;/h3&gt;

&lt;p&gt;Blast radius queries your AWS infrastructure understanding the relationships and dependencies between different resources and items. From this it can then calculate the impact of your change (or the blast radius).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--B_chO-td--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cv4vj90y813289wq04su.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--B_chO-td--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cv4vj90y813289wq04su.png" alt="Overmind relationships" width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you’ve got the blast radius you can then have a look and see if your change unintentionally impacts anything. By navigating the calculated graph you can explore the links and dive into the meta data to get some context on its configuration.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xPIF37Yq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4nrnmqrpci6o2ru8mklb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xPIF37Yq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4nrnmqrpci6o2ru8mklb.png" alt="Overmind metadata" width="800" height="919"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Terraform Graph vs Overmind?
&lt;/h3&gt;

&lt;p&gt;‍&lt;br&gt;
Before jumping into a comparison of the two it is worth providing some context to the application we are going to be making changes to.  It is Kubernetes cluster that manages some API gateways using AWS services such as EKS, EFS &amp;amp; Route53.&lt;/p&gt;

&lt;p&gt;Let’s take a look at what this change would look like as a Terraform Graph output. Due to image dimension restrictions the below is a screenshot of a much larger Terraform Graph output.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5-Bh-9vM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6khm0wrqqbvrpxju33tl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5-Bh-9vM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6khm0wrqqbvrpxju33tl.png" alt="Terraform Plan Output" width="800" height="566"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Within Overmind, by selecting the resource/s that we will be changing, we get the following blast radius.&lt;br&gt;
‍&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--u9Ict7Vv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ew3ly75j5vrsmx4okblu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--u9Ict7Vv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ew3ly75j5vrsmx4okblu.png" alt="Overmind Blast Radius" width="800" height="496"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;In this example the output was a 3.5mb svg file or a image with the dimensions 256925px by 3802px. If you were to convert pixels to cm's it's about as it's about as wide as The Wingspan of a 747 (68 metres). Dealing with such a large file is not easy and as you can see from the above screenshot it is not easily readable.&lt;/p&gt;

&lt;p&gt;However, Terraform graph can still be a great tool when working with smaller, more manageable changes or if you simply want something to run on CLI. But when you ultimately need to make some larger, more complex changes it is when Overmind would come in to its own. Allowing you to only see the affected resources.&lt;/p&gt;

&lt;p&gt;Both tools are freely available:&lt;/p&gt;

&lt;p&gt;Terrafrom Graph - docs &lt;a href="https://developer.hashicorp.com/terraform/cli/commands/graph"&gt;here&lt;/a&gt;.&lt;br&gt;
Overmind - You can sign up &lt;a href="https://overmind.tech/coming-soon"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>terraform</category>
      <category>devops</category>
    </item>
    <item>
      <title>What’s the difference between Rover and Overmind?</title>
      <dc:creator>jameslaneovermind</dc:creator>
      <pubDate>Wed, 28 Jun 2023 11:58:31 +0000</pubDate>
      <link>https://dev.to/jameslaneovermind/whats-the-difference-between-rover-and-overmind-4kdk</link>
      <guid>https://dev.to/jameslaneovermind/whats-the-difference-between-rover-and-overmind-4kdk</guid>
      <description>&lt;p&gt;When using Terraform the output from terraform plan can be used to help understand the impact your infrastructure changes. Terraform has terraform graph to help visualise these changes however when dealing with large or complex infrastructures this can quickly become difficult to navigate. Because of this several visualisation tools have emerged both open source and enterprise.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Rover?
&lt;/h2&gt;

&lt;p&gt;Rover is an example of a open source tool that enables users to visualise their Terraform plan. Rover is a interactive Terraform Plan visualiser that helps users explore their state and configuration. Rover is open source and runs locally on your machine. This means that your Terraform state stays local and isn't sent to a remote server for processing. In addition, Rover uses the plan file to generate the state. So in addition to visualising the current infrastructure state, you're able to view any changes to the resources (creation, modification, or deletion).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nEx9Xjfs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7qyuiv4smwe5h8g4z7ar.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nEx9Xjfs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7qyuiv4smwe5h8g4z7ar.png" alt="Rover Overview" width="800" height="752"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Usage‍
&lt;/h3&gt;

&lt;p&gt;Rover does this by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generating a plan file and parsing the configuration in the user’s root directory.&lt;/li&gt;
&lt;li&gt;Parsing the plan and configuration files to generate three items: the resource overview (RSO), the resource map (map), and the resource graph (graph).&lt;/li&gt;
&lt;li&gt;Rover then consumes the RSO, map, and graph to generate an interactive configuration and state visualisation hosted on localhost:9000&lt;/li&gt;
&lt;li&gt;The quickest way to get up and running with Rover is by using Docker.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Run the following command in any Terraform workspace to generate a visualisation. This command copies all the files in your current directory to the Rover container and exposes port :9000&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker run --rm -it -p 9000:9000 -v $(pwd)/plan.json:/src/plan.json  im2nguyen/rover:latest -planJSONPath=plan.json&lt;/code&gt;  &lt;/p&gt;

&lt;p&gt;Once Rover is running on localhost:9000, navigate to it in a browser to find the visualisation.&lt;/p&gt;

&lt;p&gt;From here you can then explore the visualisation of your terraform plan output. The legend on the left hand side shows you the different categorisations of resources and other items. With rover you are able to export the generated graph as .SVG file.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Overmind?
&lt;/h2&gt;

&lt;p&gt;Overmind is a SaaS Terraform impact analysis tool. It understands all of the dependencies across your AWS infrastructure which means it can calculate the blast radius of a change, even for those resources outside of Terraform.&lt;/p&gt;

&lt;h3&gt;
  
  
  Usage
&lt;/h3&gt;

&lt;p&gt;To get started with Overmind you need to create a account by signing up on the website. Once signed up you need to add a AWS source. Overmind uses a read-only role to query the AWS api to generate the blast radius.&lt;/p&gt;

&lt;p&gt;There are two ways of creating a source:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Using Cloud Formation (Automatic):
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aRHyKnXR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i37tyrr03r8x3oo8eglr.png" alt="Overmind Cloud Formation Setup" width="800" height="544"&gt;
&lt;/li&gt;
&lt;li&gt;Using IAM role (Manual):
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MRV-Kd6w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3bd2bnuozgwuss5ibvj3.png" alt="Overmind Manual IAM role" width="800" height="661"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once your source is configured you are ready to create your first change.&lt;/p&gt;

&lt;p&gt;You will need to give your change a:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Name&lt;/li&gt;
&lt;li&gt;Description&lt;/li&gt;
&lt;li&gt;Ticket link&lt;/li&gt;
&lt;li&gt;Owner&lt;/li&gt;
&lt;li&gt;CC emails (Optional)
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Fv5XNgl4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x2k453xq3m8fchkdvlt6.png" alt="Overmind blast radius creating a change" width="800" height="409"&gt;
Now you’ve added the context of the change you need to select the resources that you will be changing. Currently you can do this manually by selecting one or more resource types. A GitHub action is planned to be released soon that will allow you to parse the plan output automatically into Overmind.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BLF58QeW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g8m1m3fb0cmr0tph8wxr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BLF58QeW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g8m1m3fb0cmr0tph8wxr.png" alt="Overmind blast radius change selecting types" width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you’ve selected your types you can then select the individual items you are going to change. Overmind populates these from your AWS source that you configured earlier.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dlMPMRdU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/66s55qmai0y7p0krv1eg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dlMPMRdU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/66s55qmai0y7p0krv1eg.png" alt="Overmind blast radius change selecting items" width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you’re done selecting the items the final step is to then calculate the blast radius.&lt;/p&gt;

&lt;h3&gt;
  
  
  Blast Radius
&lt;/h3&gt;

&lt;p&gt;Blast radius queries your AWS infrastructure understanding the relationships and dependencies between different resources and items. From this it can then calculate the impact of your change (or the blast radius).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HIpv3EkW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9thx0nfdprmvquxq5kko.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HIpv3EkW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9thx0nfdprmvquxq5kko.png" alt="Overmind Blast Radius" width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you’ve got the blast radius you can then have a look and see if your change unintentionally impacts anything. By navigating the calculated graph you can explore the links and dive into the meta data to get some context on its configuration.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZqhaXtle--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/joacd8kdrluapooor9hd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZqhaXtle--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/joacd8kdrluapooor9hd.png" alt="Overmind Blast Radius metadata" width="800" height="919"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Rover vs Overmind?‍
&lt;/h2&gt;

&lt;p&gt;Before jumping into a comparison of the two it is worth providing some context to the application we are going to be making changes to.  It is Kubernetes cluster that manages some API gateways using AWS services such as EKS, EFS &amp;amp; Route53.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6njKpjTV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5fhqmedjybs7p1lcdat6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6njKpjTV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5fhqmedjybs7p1lcdat6.png" alt="Terraform Plan Output" width="800" height="204"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let’s take a look at what this change would look like within Rover. By taking that same Terraform plan output and running it through Rover we get the below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DUTryID5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hpwk51y8njex4p2t0srn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DUTryID5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hpwk51y8njex4p2t0srn.png" alt="Rover Example" width="800" height="617"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Within Overmind, by selecting the resource that we will be changing, we get the following blast radius. We are able to see the items related to this resource that we are changing, meaning that we are informed on the impact of this change.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--o281T-EZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vgckfdpi3p2g7bdcfmv3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--o281T-EZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vgckfdpi3p2g7bdcfmv3.png" alt="Overmind Blast Radius" width="800" height="496"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;To compare the two, Rover does a great job at visually showing you the output of your Terraform plan. However it can be quite complex to understand with the various dependencies. As Overmind only shows what you will be impacted it is easier to navigate therefore you’re more likely to identify any issues ahead of time.&lt;/p&gt;

&lt;p&gt;Both tools are freely available:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rover&lt;/strong&gt; - you can find the github repo &lt;a href="https://github.com/im2nguyen/rover"&gt;here&lt;/a&gt;.&lt;br&gt;
&lt;strong&gt;Overmind&lt;/strong&gt; - You can sign up &lt;a href="https://overmind.tech/coming-soon"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>aws</category>
      <category>cloud</category>
    </item>
    <item>
      <title>What’s the difference between Terraform Plan and Overmind Blast Radius?</title>
      <dc:creator>jameslaneovermind</dc:creator>
      <pubDate>Wed, 31 May 2023 16:19:12 +0000</pubDate>
      <link>https://dev.to/jameslaneovermind/whats-the-difference-between-terraform-plan-and-overmind-blast-radius-2f46</link>
      <guid>https://dev.to/jameslaneovermind/whats-the-difference-between-terraform-plan-and-overmind-blast-radius-2f46</guid>
      <description>&lt;h3&gt;
  
  
  Blast radius is not another Terraform plan visualisation tool
&lt;/h3&gt;

&lt;p&gt;If you’re familiar with Terraform then there’s a good chance you’ve used the Terraform plan command. It compares your current state to your desired state. Building a ‘plan’ that contains a ‘diff’ between both. The output gives us what resources will be created and destroyed along with any modifications before then executing the apply command.&lt;/p&gt;

&lt;p&gt;Within the Terraform CLI you’ll see a plan output looking something like this:&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%2Fva3k6rdjeqpd7o9rm02n.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%2Fva3k6rdjeqpd7o9rm02n.png" alt="Terraform plan output"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And there’s some great tools out there to help you both format and visualise the output so that it is easier to interpret:&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%2Ftcyzx5irtcjxm9b10g7j.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%2Ftcyzx5irtcjxm9b10g7j.png" alt="Terraform Plan visualization tools"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.pluralith.com/" rel="noopener noreferrer"&gt;Pluralith&lt;/a&gt;, &lt;a href="https://www.runatlantis.io/" rel="noopener noreferrer"&gt;Runalantis&lt;/a&gt; &amp;amp; &lt;a href="https://github.com/dmlittle/scenery" rel="noopener noreferrer"&gt;Scenery&lt;/a&gt; are just some of the great tools out there you can use.&lt;/p&gt;

&lt;h2&gt;
  
  
  So what’s the problem?
&lt;/h2&gt;

&lt;p&gt;Terraform plan will tell you about the things it’s going to change:&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%2F5zt9fyabfs6lucvpupxp.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%2F5zt9fyabfs6lucvpupxp.png" alt="Single Jenga Block"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’ll even tell you if it’s going to change multiple things:&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%2Fuvmvv8zacg813hvv6423.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%2Fuvmvv8zacg813hvv6423.png" alt="Multiple Jenga Blocks"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But it won’t tell you the context of those things within the wider application/infrastructure:&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%2F5gbkw6zgar75krajw3m0.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%2F5gbkw6zgar75krajw3m0.png" alt="Jenga tower showing the difference between blocks"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You need to be told which pieces you’re touching, sure, and terraform plan is a brilliant way to do that. But you also need to know where those pieces sit in the Jenga tower that is your infrastructure, and what effect removing them might have. That’s what Overmind’s blast radius does.&lt;/p&gt;

&lt;h2&gt;
  
  
  Overmind blast radius
&lt;/h2&gt;

&lt;p&gt;Overmind understands all of the dependencies within your AWS infrastructure, so we can calculate the blast radius of a change, even for those resources outside of Terraform. Showing you the consequences of your changes, not just the changes themselves.&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%2Fnuv0fmiei9ks7fs8w76f.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%2Fnuv0fmiei9ks7fs8w76f.png" alt="Overmind and github change"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Start by opening a Terraform pull request and Overmind will discover the dependencies of the things you’re going to change.&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%2Fx1gkwdm01oeru7hyuqg3.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%2Fx1gkwdm01oeru7hyuqg3.png" alt="Blast Radius"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Based on what you're changing, Overmind will calculate blast radius of the affected items. Use the graph to explore relationships and dependencies between these items.&lt;/p&gt;

&lt;p&gt;The blast radius contains:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What infrastructure will be affected.&lt;/li&gt;
&lt;li&gt;What applications rely on that infrastructure.&lt;/li&gt;
&lt;li&gt;What health checks those applications have.&lt;/li&gt;
&lt;/ol&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%2Fl0kriguhdis1m2bouw4s.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%2Fl0kriguhdis1m2bouw4s.png" alt="Comparing the Diff"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After Merging the PR, you’ll automatically get alerted if your change breaks something, Including a diff of exactly what changed, how it's related, and how to change it back.&lt;/p&gt;

&lt;h3&gt;
  
  
  We need your help
&lt;/h3&gt;

&lt;p&gt;After a successful early access program where we discovered over 600k AWS resources and mapped 1.7 million dependencies. We are now looking for innovators to join our design partner program to help test impact analysis (only for AWS infrastructure at the moment).&lt;/p&gt;

&lt;p&gt;If you're interested in getting access before anyone else and influencing the direction of what we're building register &lt;a href="https://app.reclaim.ai/m/dylan-overmind/design-partner-chat" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Or if you want to be notified the minute we go live join our waiting list &lt;a href="https://overmind.tech/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>terraform</category>
      <category>aws</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Preventing Outages: Limitations of Even the Best Observability and Monitoring Tools</title>
      <dc:creator>jameslaneovermind</dc:creator>
      <pubDate>Thu, 25 May 2023 14:28:02 +0000</pubDate>
      <link>https://dev.to/jameslaneovermind/preventing-outages-limitations-of-even-the-best-observability-and-monitoring-tools-2f6g</link>
      <guid>https://dev.to/jameslaneovermind/preventing-outages-limitations-of-even-the-best-observability-and-monitoring-tools-2f6g</guid>
      <description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=3Xk7QRimngk&amp;amp;t=2125s"&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/3Xk7QRimngk?start=2125"&gt;
&lt;/iframe&gt;
&lt;/a&gt;&lt;br&gt;
It was a Friday afternoon and we had planned to roll out a big change that we’d been working on and testing on all week. We knew this was a bad idea, but we were confident! Firstly the change was related to the way the backend UNIX fleet authenticated user logins so should have been fairly innocuous, and we had done all the testing we possibly could, but there was still some risk.&lt;/p&gt;

&lt;p&gt;So we pressed the button and rolled out the change. The results came back all green, we could log into the servers, and all that we needed to do was wait. As we waited for all the results to come back, the phone rang.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“Hey, nobody in the department can save PDFs anymore.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The whole department is at a standstill because they can't save PDFs. We haven’t touched any laptops though, how could we possibly have broken the ability to save PDFs? We started frantically looking into it and it turns out that they aren’t clicking Print -&amp;gt; Save as PDF as you’d expect, they have an actual printer called “PDF Printer” that they print to instead, which we’ve managed to break somehow.&lt;/p&gt;

&lt;p&gt;We then tried the easiest things first:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ask if anyone knows what it is:&lt;/strong&gt; nobody does&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check if it exists in the CMDB:&lt;/strong&gt; it doesn’t&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check the wiki:&lt;/strong&gt; no mention of it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the end, it turned out that about 10 years ago somebody put a physical server in a data center. And the job of that server was to pretend to be a printer. Meaning that when somebody prints it, it saves it to a pdf, and then it runs a script that picks up that PDF and moves it to a mount point. It didn’t make sense to me at the time, and it still doesn’t, but that’s what we had.&lt;/p&gt;

&lt;p&gt;In the end, we managed to get the “printer” working again, but not before everyone in the affected department had already gone home for the weekend without being able to finish their work for the week.&lt;/p&gt;

&lt;h3&gt;
  
  
  What does this story tell us about the limitations of observability and monitoring tools?
&lt;/h3&gt;

&lt;p&gt;No matter how reliable your systems are or how thoroughly you monitor them, outages can and will occur. Monitoring tools are only as effective as the data points they can access. They can provide valuable insights into system performance but they may not capture everything needed when making a change or finding a root cause fix. A lack of data can make it difficult to pinpoint the cause of an outage, especially when the issue is complex. Often involving multiple systems that can be outside our mental model. These unknown unknowns can be particularly challenging to diagnose and resolve leading to lengthy downtimes.&lt;/p&gt;

&lt;h2&gt;
  
  
  The typical (&lt;em&gt;wrong&lt;/em&gt;) response: Risk Management Theatre
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--g8cyJCLH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8o9e400kaawz2gdu0g7o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--g8cyJCLH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8o9e400kaawz2gdu0g7o.png" alt="Risk management Theatre" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When an outage occurs, a common response is to implement more risk management processes in an attempt to stop the outage from happening again. However, this increased focus on risk management processes results in a substantial increase in lead time. Puppet’s &lt;a href="https://www.puppet.com/resources/history-of-devops-reports"&gt;State of DevOps report&lt;/a&gt; found that low-performing companies that engaged heavily in risk management theatre had 440x longer lead-times than high-performing organisations.&lt;/p&gt;

&lt;p&gt;Companies with these long lead times make 46x fewer changes, meaning that each change needs to be much larger in order to keep up. Less practice, and larger changes means that they are five times more likely to experience failures. When failures do occur, the consequences are much more severe. &lt;/p&gt;

&lt;p&gt;The combination of larger changes, decreased frequency, and limited experience in handling such situations leads to a mean-time-to-recovery almost 100x longer than that of high-performing organisations. And remember that it was large outages that caused this in the first place, so the process feeds back on itself, making the company slower and slower.&lt;/p&gt;

&lt;h2&gt;
  
  
  Answer = Inputs
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5NLtoQeo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ou9c16ip03ons0e7us4p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5NLtoQeo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ou9c16ip03ons0e7us4p.png" alt="Inputs vs Outputs" width="800" height="738"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Observability tools that measure outputs such as metrics, logs &amp;amp; traces require a good mental model and a deep understanding of the application in order to interpret them. But as we’ve already seen, outages are often caused by unexpected issues outside of our own mental model. When this happens, the system’s behaviour contradicts out understanding of how it &lt;em&gt;should&lt;/em&gt; work. This leads to confusion and requires individuals rebuild their mental model of the system on the fly, as mentioned in the brilliant STELLA report (Woods DD. STELLA: Report from the SNAFUcatchers Workshop on Coping With Complexity. Columbus, OH: The Ohio State University, 2017).&lt;/p&gt;

&lt;p&gt;To address this challenge, we should shift our focus toward measuring inputs. This enables engineers to create new mental models as needed, whether during the planning stage of a change or in response to an outage. Current tools do not adequately support this type of work. When constructing a mental model, we typically rely on "primal" low-level interactions with the system, often accomplished through the command line, which demands a great deal of expertise and time. To resolve this issue, we must find a way to expedite the process of building mental models by measuring input or configuration changes instead.&lt;/p&gt;

&lt;p&gt;If we are to solve this, we must make building mental models much faster, meaning:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Ensuring that the configuration and current state of a system are readily accessible.&lt;/li&gt;
&lt;li&gt;Enabling users to easily discover the potential impact of their intended changes and what areas might be affected.&lt;/li&gt;
&lt;li&gt;Providing users with the means to validate that their modifications have not caused any issues downstream.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By measuring config changes (inputs) instead we can understand context on demand and have the confidence that our changes won’t have any unintended negative impacts. &lt;/p&gt;

&lt;h2&gt;
  
  
  Impact analysis
&lt;/h2&gt;

&lt;p&gt;At Overmind, we’ve been building a solution that addresses these challenges. By making the system's configuration and state easily accessible empowering users to confidently make changes without the fear of things going wrong. &lt;/p&gt;

&lt;h3&gt;
  
  
  Open a pull request
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gpiOg2l---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fsh92r9m9fx11d6zdy1p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gpiOg2l---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fsh92r9m9fx11d6zdy1p.png" alt="Pull Request" width="800" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Start by opening a Terraform pull request and Overmind will discover the dependencies of the things you’re going to change. No lengthy scanning processes or agents involved in the setup.&lt;/p&gt;

&lt;h3&gt;
  
  
  Calculate blast radius
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--c_eFNcIW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sxltd0sm86o1ngbpn5fa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--c_eFNcIW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sxltd0sm86o1ngbpn5fa.png" alt="Calculating blast radius" width="800" height="544"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Based on what you're changing, Overmind will calculate blast radius of the affected items. Use the graph to explore relationships and dependencies between these items.&lt;/p&gt;

&lt;p&gt;The blast radius contains:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What infrastructure will be affected.&lt;/li&gt;
&lt;li&gt;What applications rely on that infrastructure.&lt;/li&gt;
&lt;li&gt;What health checks those applications have.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  View diffs &amp;amp; validate health
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--N14r-jID--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cbvk7s1wy1lhnvofuoae.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--N14r-jID--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cbvk7s1wy1lhnvofuoae.png" alt="Change Review" width="800" height="751"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Automatically get alerted if your change breaks something. Including a diff of exactly what changed, how it's related, and how to change it back.  Spend less time on validation and letting changes “bake” meaning a faster time to production.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Quickly identify which changes caused a problem.&lt;/li&gt;
&lt;li&gt;Compare the difference between configurations to uncover the root cause.&lt;/li&gt;
&lt;li&gt;Minimise downtime caused by application breaking changes.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Design Partner Program
&lt;/h2&gt;

&lt;p&gt;After a successful &lt;a href="https://www.linkedin.com/feed/update/urn:li:activity:7059173979755819008"&gt;early access program&lt;/a&gt; where we discovered over 600,000 AWS resources and mapped 1.7 million dependencies. We are now looking for innovators to join our design partner program to help test impact analysis.&lt;/p&gt;

&lt;p&gt;Start by sharing your impact analysis goals with the Overmind team, and see if our program is the perfect fit for you.&lt;/p&gt;

&lt;p&gt;If you're interested in getting access before anyone else and influencing the direction of what we're building register &lt;a href="https://app.reclaim.ai/m/dylan-overmind/design-partner-chat"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Or find out more about Overmind and join our general waiting list &lt;a href="https://overmind.tech/coming-soon"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>aws</category>
      <category>cloud</category>
      <category>terraform</category>
    </item>
    <item>
      <title>8 Effective Tips to Reduce Your EC2 Spending</title>
      <dc:creator>jameslaneovermind</dc:creator>
      <pubDate>Mon, 22 May 2023 15:40:16 +0000</pubDate>
      <link>https://dev.to/jameslaneovermind/8-effective-tips-to-reduce-your-ec2-spending-128j</link>
      <guid>https://dev.to/jameslaneovermind/8-effective-tips-to-reduce-your-ec2-spending-128j</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;If you're running a business that relies heavily on Amazon &lt;a href="https://overmind.tech/types/ec2-instance"&gt;EC2&lt;/a&gt;, you're probably well aware of the costs that come along with it. Cloud infrastructure can be expensive, and EC2 is no exception. However, there are a number of proven best practices that you can implement to help reduce your EC2 spending. In this article, we'll explore those practices in detail.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Identify Amazon EC2 instances with low utilisation and reduce cost by stopping or rightsizing‍
&lt;/h3&gt;

&lt;p&gt;One of the most impactful ways to reduce AWS EC2 costs is to right-size your instances.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use AWS Cost Resource Optimization to get a report of EC2 instances that are either idle or have low utilisation.&lt;/li&gt;
&lt;li&gt;Reduce costs by either stopping or downsizing these instances.&lt;/li&gt;
&lt;li&gt;Use AWS Instance Scheduler to automatically stop instances.&lt;/li&gt;
&lt;li&gt;Use AWS Operations Conductor to automatically resize the &lt;a href="https://overmind.tech/types/ec2-instance"&gt;EC2&lt;/a&gt; instances (based on the recommendations report from Cost Explorer).&lt;/li&gt;
&lt;li&gt;Use AWS Compute Optimizer to look at instance type recommendations beyond downsizing within an instance family.
‍
### 2. Use Compute Savings Plans to reduce EC2, Fargate and Lambda costs‍&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Compute Savings Plans automatically apply to EC2 instance usage regardless of instance family, size, AZ, region, OS or tenancy, and also apply to &lt;a href="https://overmind.tech/types/fargate-profile"&gt;Fargate&lt;/a&gt; and &lt;a href="https://overmind.tech/types/lambda-layer"&gt;Lambda&lt;/a&gt; usage.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use one year, no upfront Compute Savings Plans to get a discount of up to 54% compared to On-Demand pricing.&lt;/li&gt;
&lt;li&gt;Use the recommendations provided in AWS Cost Explorer, and ensure that you have chosen compute, one year, no upfront options.&lt;/li&gt;
&lt;li&gt;Once you sign up for Savings Plans, your compute usage is automatically charged at the discounted Savings Plans prices.
‍&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Use Amazon EC2 Spot Instances for AWS Cost Reduction‍
&lt;/h3&gt;

&lt;p&gt;If your workload is fault-tolerant, using Spot Instances can reduce EC2 costs by up to 90% and is a key strategy for AWS cost reduction.&lt;/p&gt;

&lt;p&gt;The main caveat is that spot instances can be interrupted at two minutes’ notice.&lt;/p&gt;

&lt;p&gt;Examples of typical workloads include big data, containerised workloads, CI/CD, web servers, and development/testing.&lt;/p&gt;

&lt;p&gt;Amazon provides the Spot Fleet feature, which lets you run both on-demand and spot instances in the same Auto Scaling group, letting you reserve some on-demand instances which cannot be interrupted, for critical components.&lt;br&gt;
‍&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Analyse and attribute expenditure‍
&lt;/h3&gt;

&lt;p&gt;Clouds can help you accurately identify the cost and usage of systems, allowing transparent attribution of IT costs to the individual workload owners.&lt;/p&gt;

&lt;p&gt;It enables you to measure return on investment (ROI) and helps workload owners optimise resources and reduce costs.&lt;br&gt;
‍&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Use the latest instance types‍
&lt;/h3&gt;

&lt;p&gt;Switching your EC2 Instance to the latest Instance types can reduce AWS cost up to 6%. This is because they typically provide higher efficiency or better performance at a lower price.&lt;br&gt;
‍&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Purchase reserved instances for a reasonable period of time‍
&lt;/h3&gt;

&lt;p&gt;Simply put, if you don't need an instance, don't keep it longer than necessary.&lt;br&gt;
‍&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Schedule instances to ensure they run only during business hours or when needed‍
&lt;/h3&gt;

&lt;p&gt;You can achieve this automatically using AWS Instance Scheduler or other tools.&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Adopt a consumption model‍
&lt;/h3&gt;

&lt;p&gt;AWS recommends paying only for the required computing resources and increasing or decreasing usage according to business needs.&lt;/p&gt;

&lt;p&gt;For example, staff typically use development and testing environments eight hours per day during a workweek. You can potentially achieve 75% cost savings by stopping these resources when they are not used.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Reducing AWS EC2 costs is an essential aspect of optimising your cloud infrastructure and maximising your ROI. By implementing these 8 best practices, you can ensure that you’re only spending what you need too.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>beginners</category>
    </item>
    <item>
      <title>6 Ways to Verify IP Addresses Across Your AWS Accounts</title>
      <dc:creator>jameslaneovermind</dc:creator>
      <pubDate>Thu, 18 May 2023 12:47:34 +0000</pubDate>
      <link>https://dev.to/jameslaneovermind/6-ways-to-verify-ip-addresses-across-your-aws-accounts-3ba1</link>
      <guid>https://dev.to/jameslaneovermind/6-ways-to-verify-ip-addresses-across-your-aws-accounts-3ba1</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Verifying IP addresses used across multiple AWS accounts is important for maintaining IP reputation and customer whitelisting. To collect information about networking resources in a multi-account AWS environment, there are several scalable options including IPAM, AWS Config, and building an automated solution using the AWS CLI or SDKs.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Instance Metadata API‍
&lt;/h3&gt;

&lt;p&gt;‍Use the Instance Metadata API on the instance to retrieve the AWS account ID associated with the instance. The API can be accessed by running the following command on the instance:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;curl http://your-ip-address/latest/dynamic/instance-identity/document&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The command will return a JSON object that contains the account ID in the accountId field.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. AWS CLI and Network Interfaces‍
&lt;/h3&gt;

&lt;p&gt;Use the AWS CLI to find the network interface that owns the IP address. The following command can be run:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;aws ec2 describe-network-interfaces --filters Name=addresses.private-ip-address,Values=&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Replace &lt;code&gt;&amp;lt;IPv4 address&amp;gt;&lt;/code&gt; with the IP address that needs to be investigated. The output of the command will include the description of the network interface, which can be used to identify the resource that owns the IP address.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Amazon VPC IP Address Manager (IPAM)
&lt;/h3&gt;

&lt;p&gt;Use &lt;a href="https://aws.amazon.com/blogs/networking-and-content-delivery/collecting-aws-networking-information-in-large-multi-account-environments/"&gt;Amazon VPC IP Address Manager (IPAM) &lt;/a&gt;to monitor and audit IP addresses at scale. IPAM is a VPC feature that makes it easier to plan, track, and monitor IP addresses for AWS workloads. From a centralised dashboard, IPAM can monitor IP address space that's in use and use the IP historical data to search for the status change of IP addresses or CIDRs. IPAM can be integrated with AWS organisations to activate the Amazon VPC IPAM service to manage and monitor networking resources created by all AWS organisations member accounts.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Automating with AWS Config Aggregator
&lt;/h3&gt;

&lt;p&gt;Automate multi-account network information capture with AWS Config aggregator. AWS Config records AWS resource configurations and allows reviewing changes in configurations and relationships between AWS resources. Networking resource types collected by AWS Config include internet gateways, NAT gateways, load balancers, VPC CIDRs, and subnets. AWS Config data from multiple accounts and &lt;a href="https://overmind.tech/types/region"&gt;AWS Regions&lt;/a&gt; can be aggregated into a single account using multi-account, multi-Region data aggregation.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Automatic Report Generation with aws-sts-network-query-tool‍
&lt;/h3&gt;

&lt;p&gt;Automatically generate a multi-account network resources report using aws-sts-network-query-tool. This script uses AWS CLI to collect networking-related information for multiple accounts and outputs the information in a CSV. It can be run by specifying a list of member accounts to scan. The script can collect information about internet gateways, &lt;a href="https://overmind.tech/types/nat-gateway"&gt;NAT gateways&lt;/a&gt;, load balancers, VPC CIDRs, subnets, elastic IP addresses, and elastic network interfaces.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Overmind‍
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://overmind.tech"&gt;Overmind&lt;/a&gt; makes it easy to search IP addresses across accounts while getting all important related content and metadata about its usage. Within Explore, you can start by listing all &lt;a href="https://overmind.tech/types/ec2-address"&gt;ec2-address&lt;/a&gt; types. From there you can expand outwards discovering any related types including DNS entries, &lt;a href="https://overmind.tech/types/ec2-network-interface"&gt;ec2-network-interfaces&lt;/a&gt; or IPs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rqkxz2UT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/syy9kauuhx7ddhgsvpn2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rqkxz2UT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/syy9kauuhx7ddhgsvpn2.png" alt="Using Overmind to discover your ip addresses and context" width="800" height="509"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To do this across multiple accounts simply those accounts as new sources. Once you have added these sources you will be able to search across all of them by making sure the scope is set to ‘*’.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choosing the Right Option‍
&lt;/h2&gt;

&lt;p&gt;Choosing the option depends on the specific use case and the available infrastructure.&lt;/p&gt;

&lt;p&gt;For a list of VPC CIDRs, subnets, elastic network interfaces, elastic IP addresses, and IP usage within CIDRs, IPAM can be used.&lt;/p&gt;

&lt;p&gt;If internet gateways, NAT gateways, and load balancers within accounts need to be listed, along with the resources elastic IP addresses are attached to, AWS Config aggregator or aws-sts-network-query-tool can be used.&lt;/p&gt;

&lt;p&gt;If the accounts are not within an AWS organisation, aws-sts-network-query-tool would be the best option.&lt;br&gt;
‍&lt;/p&gt;

&lt;h3&gt;
  
  
  FAQs
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;What is the Instance Metadata API, and how does it help in verifying IP address usage?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To verify IP address usage, you can utilise the instance metadata to get the instance ID and other relevant details. The instance metadata is available in all Amazon EC2 instances at the following address: /latest/meta-data/. In there, you can find quite a lot of useful information, including the instance ID, which can be used to verify IP address usage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I use the AWS CLI to find the owner of an IP address in AWS?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes, you can use the AWS CLI to find the owner of an IP address in AWS. The docs link can be found here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which option should I choose if I need to monitor IP addresses within VPCs and track their usage?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To monitor IP addresses within VPCs and track their usage, the best option is to use Amazon VPC IP Address Manager (IPAM).&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Calling out for all those who work with AWS</title>
      <dc:creator>jameslaneovermind</dc:creator>
      <pubDate>Tue, 16 May 2023 14:10:31 +0000</pubDate>
      <link>https://dev.to/jameslaneovermind/calling-out-for-all-those-who-work-with-aws-45ll</link>
      <guid>https://dev.to/jameslaneovermind/calling-out-for-all-those-who-work-with-aws-45ll</guid>
      <description>&lt;h2&gt;
  
  
  What is Overmind? &lt;em&gt;(In a nutshell)&lt;/em&gt;
&lt;/h2&gt;

&lt;p&gt;Make AWS changes with confidence. Start by submitting a pull request → discover the blast radius → track and validate that your change has not broken anything. Using read-only AWS access and no other inputs from you.&lt;/p&gt;

&lt;h3&gt;
  
  
  What are we looking for?
&lt;/h3&gt;

&lt;p&gt;After a successful &lt;a href="https://www.linkedin.com/feed/update/urn:li:activity:7059173979755819008"&gt;early access program&lt;/a&gt; where we discovered over 600k AWS resources and mapped 1.7 million dependencies. We are now looking for innovators to join our design partner program. &lt;/p&gt;

&lt;p&gt;Whether you're making just a couple of tweaks or a few hundred changes in AWS, our design partner program is for those who are seeking innovation and the opportunity to shape the future of application changes.&lt;/p&gt;

&lt;p&gt;By becoming part of the program, you'll join a community of brilliant minds, all driven by the same passion for tech. Together, you’ll get to try the latest version before anyone else.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do I get started?
&lt;/h3&gt;

&lt;p&gt;Start by sharing your impact analysis goals with the Overmind team, and see if our program is the perfect fit for you.&lt;/p&gt;

&lt;p&gt;If you're interested in getting access before anyone else and influencing the direction of what we're building register here: &lt;a href="https://app.reclaim.ai/m/dylan-overmind/design-partner-chat"&gt;https://app.reclaim.ai/m/dylan-overmind/design-partner-chat&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or find out more about Overmind and join our waiting list here: &lt;a href="https://overmind.tech"&gt;https://overmind.tech&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>devops</category>
    </item>
    <item>
      <title>How to choose the right EC2 Instance for your application</title>
      <dc:creator>jameslaneovermind</dc:creator>
      <pubDate>Thu, 11 May 2023 14:02:01 +0000</pubDate>
      <link>https://dev.to/jameslaneovermind/how-to-choose-the-right-ec2-instance-for-your-application-1n8p</link>
      <guid>https://dev.to/jameslaneovermind/how-to-choose-the-right-ec2-instance-for-your-application-1n8p</guid>
      <description>&lt;p&gt;&lt;strong&gt;TLDR&lt;/strong&gt;: With over 400 instances to choose from its not easy. These 6 things will help make narrowing down your decision that bit easier.&lt;/p&gt;

&lt;p&gt;As a DevOps engineer working with AWS, selecting the right &lt;a href="https://overmind.tech/types/ec2-instance"&gt;Elastic Compute Cloud (EC2)&lt;/a&gt; instance type can be a daunting task given the &lt;a href="https://aws.amazon.com/ec2/instance-types/"&gt;almost 400 options available&lt;/a&gt;. Nevertheless, there are several things you can do to simplify the process and optimise costs while delivering high performance. Making careful choices when it comes to EC2 instances is crucial, as compute often constitutes the bulk of cloud bills. By optimising this aspect, you could potentially achieve significant reductions in your cloud costs.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/Vz0HZ6hlpgM?start=1"&gt;
&lt;/iframe&gt;
&lt;br&gt;
AWS has a great video on their youtube filmed at reInvent:2021 that talks you through in detail selecting and optimising instances. However I've summarised some of the top 6 below. Adopting this will help you when it comes to selecting your next instance.&lt;br&gt;
‍&lt;/p&gt;

&lt;h2&gt;
  
  
  The top 6 things to consider when making a decision
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Identify your application requirements
&lt;/h3&gt;

&lt;p&gt;Determine the workload's minimum requirements to avoid over-provisioning or running memory-intensive applications on underpowered instances. Choose an EC2 instance that satisfies the application's needs, including vCPU count, vCPU architecture, network, memory, and SSD storage.&lt;/p&gt;

&lt;p&gt;For example, if you intend to support a machine learning application, choose a GPU-dense instance type instead of a CPU-dense one. In 2021 AWS released &lt;a href="https://aws.amazon.com/ec2/instance-types/inf1/"&gt;EC2 Inf&lt;/a&gt;, an instance type designed for inference, which provides higher throughput and a lower cost per inference than &lt;a href="https://aws.amazon.com/ec2/instance-types/g4/"&gt;EC2 G4&lt;/a&gt; instances.&lt;br&gt;
‍&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Research EC2 instance types and families
&lt;/h3&gt;

&lt;p&gt;Many EC2 instance families exist, each with its strengths and weaknesses. Conduct a thorough search for the most appropriate family for your workload needs. For example, the C5 family might be the best choice for a high-performance computing (HPC) workload. If you require high network performance, consider the enhanced networking feature on the C5n family.&lt;/p&gt;

&lt;p&gt;Remember to have cost savings in mind when selecting an instance size. EC2 instances are available in various sizes, and you should scale your resources to match the workload requirements. However, remember that size is not the only factor affecting cost. AWS deploys different computers to provide compute capacity, each with chips having varying performance characteristics. Benchmarking is a reliable method of determining the most cost-effective instance size.&lt;br&gt;
‍&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Consider the pros and cons of different pricing mode
&lt;/h3&gt;

&lt;p&gt;AWS offers several pricing models for EC2 instances, including Spot Instances, Reserved Instances, and On-Demand Instances. Each has its advantages and disadvantages, and you should select the one that best meets your workload needs and budget.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On-Demand Instances:&lt;/strong&gt;&lt;br&gt;
Customers pay for actual usage on an hourly basis, with no long-term commitments or upfront payments required. Advantages include flexibility, scalability, and the ability to pay only for what you use. However, it can be more expensive for long-running instances.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reserved Instances:&lt;/strong&gt;&lt;br&gt;
Customers receive a significant discount on the hourly rate in exchange for committing to using a specific instance type for one or three years. This pricing model is advantageous for stable workloads that run continuously and offer cost savings over the long term. However, it can be inflexible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Spot Instances:&lt;/strong&gt;&lt;br&gt;
Customers can bid on unused EC2 capacity, with prices fluctuating based on supply and demand. This pricing model offers potential cost savings, but the availability of Spot Instances can be unpredictable. AWS can also terminate instances with two minutes' notice when the spot price exceeds the customer's bid.&lt;br&gt;
‍&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Be mindful with your storage selection
&lt;/h3&gt;

&lt;p&gt;When selecting an EC2 instance in AWS, consider factors such as performance, durability, cost, storage type, and storage size. AWS has two types of storage: block and object. Block storage is for consistent and low-latency performance. AWS has Elastic Block Store (EBS) for persistent block storage, and instance store for temporary block storage. Object storage is for scalable and durable storage. AWS has &lt;a href="https://overmind.tech/types/s3-bucket"&gt;Simple Storage Service (S3)&lt;/a&gt; for highly durable and scalable storage, and Amazon Glacier for low-cost storage. &lt;br&gt;
‍&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Use Spot Instances (even for production workloads)
&lt;/h3&gt;

&lt;p&gt;Spot Instances are unused EC2 instances available at a lower price than on-Demand instances. Although they may be interrupted if the demand for EC2 instances rises, they can be an excellent option for production workloads with flexible timing.&lt;br&gt;
‍&lt;br&gt;
&lt;strong&gt;Explained: What are Spot instances?&lt;/strong&gt;&lt;br&gt;
Spot Instances are a cost-effective way to run your applications because you can bid on unused instances. The price is lower than the on-demand price and varies based on supply and demand.&lt;br&gt;
‍&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Automate everything
&lt;/h3&gt;

&lt;p&gt;To improve your system's efficiency and consistency, simplify the selection and deployment of EC2 instances. Use automation tools like Amazon Elastic Container Service (ECS) and &lt;a href="https://www.notion.so/types/lambda-function"&gt;Lambda&lt;/a&gt;. These tools automate the entire process from instance selection to ongoing monitoring. By automating, you can save time and effort while ensuring peak performance and avoiding human error.&lt;/p&gt;

&lt;p&gt;In summary, selecting the optimal EC2 instance type may seem intimidating given the vast number of options available. Still, by following the above steps and taking into account factors such as cost optimisation, storage selection, and pricing models, you can make an informed decision.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>devops</category>
    </item>
    <item>
      <title>The Hidden Complexity in Your Cloud Architecture Diagrams</title>
      <dc:creator>jameslaneovermind</dc:creator>
      <pubDate>Wed, 10 May 2023 15:07:51 +0000</pubDate>
      <link>https://dev.to/jameslaneovermind/the-hidden-complexity-in-your-cloud-architecture-diagrams-252i</link>
      <guid>https://dev.to/jameslaneovermind/the-hidden-complexity-in-your-cloud-architecture-diagrams-252i</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FKBFqQDm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xw9mkid0916r6qbuf4s6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FKBFqQDm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xw9mkid0916r6qbuf4s6.png" alt="Image description" width="800" height="600"&gt;&lt;/a&gt;&lt;br&gt;
As companies migrate their applications to the cloud, they can find their &lt;a href="https://theburningmonk.com/2020/11/even-simple-serverless-applications-have-complex-architecture-diagrams-so-what/"&gt;architecture diagrams become increasingly complex&lt;/a&gt;.  These diagrams provide a visual representation of the various components and how they interact with each other. However, they may not accurately reflect the true complexity of the system. &lt;/p&gt;

&lt;p&gt;During early access, our team had the opportunity to analyse 2.3 million AWS &lt;a href="https://overmind.tech/resources/explore"&gt;resources&lt;/a&gt; and dependencies to quantify the complexity hidden in architecture diagrams. What we found on average was 3 links for every resource. A ratio not often found in even some of the most complex architecture diagrams. Let’s take a look at why that’s a problem.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The problem *with complexity (explained by looking at houses)&lt;/strong&gt;*&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--X5ZyDGSV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u4cmdj56k0xb96swllzq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--X5ZyDGSV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u4cmdj56k0xb96swllzq.png" alt="House Plan" width="467" height="467"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A house plan like the one above is great for giving you a visual representation of the layout and features (number rooms, amenities etc.) However, say you wanted to add a extension or even drill a hole in the wall. Would you feel confident that you everything required to not knock down a structural wall or drill through a gas line? &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bcb5Y_u9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/slad5acgbprv0f2slmre.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bcb5Y_u9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/slad5acgbprv0f2slmre.png" alt="Detailed House Blueprint" width="467" height="467"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Instead you might consider consulting the building plans or blueprint. They contain the information you need to confidently make your decisions. However while very useful, blueprints can be complex containing lots of measurements and annotations and if you don’t know what you’re looking for may cause more issues. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The same can be said for architecture diagrams…&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Pzls8wMO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3mtfcopfilm4s4eeyxwq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Pzls8wMO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3mtfcopfilm4s4eeyxwq.png" alt="AWS Overmind Diagram" width="528" height="424"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AWS diagrams like the one above are a great tool for onboarding new engineers or communicating a high-level overview to stakeholders. They give a clear but often concise representation of an application that does not require much prior experience or context to understand. &lt;/p&gt;

&lt;p&gt;But would you feel confident making a change to your application based on the above? Knowing from what we’ve already said above about hidden complexity.&lt;/p&gt;

&lt;p&gt;Even changing something simple like a security group could be problematic. The architecture diagram may show you some connections. But there could be other &lt;a href="https://overmind.tech/types/ec2-instance"&gt;EC2 instances&lt;/a&gt; or &lt;a href="https://overmind.tech/types/rds-instance"&gt;RDS databases&lt;/a&gt; that are also using that security group. If you make change, it could impact those resources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;More is not always the answer&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Does that mean the answer is to generate a digram mapping out every link and resource that are related to the application that we are making changes to? To show you what that would look like on the same EKS cluster we can run a query in Overmind’s explore feature. We can set the link depth so that will discover all the relationships &amp;amp; links to other resources.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--37veOj9---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lmb6rn5ms4jz1ai5a2qe.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--37veOj9---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lmb6rn5ms4jz1ai5a2qe.gif" alt="Using Overmind to discover all the links" width="800" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What you can see is that same application actually has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;164 related items&lt;/li&gt;
&lt;li&gt;39 related resource types&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Which is much more that what our diagram was telling us. Meaning that now if we wanted to make a change we can see everything that could be impacted. The resources, items links and meta-data in one diagram.&lt;/p&gt;

&lt;p&gt;But when you’re dealing with this level of detail it becomes a challenge to display and navigate easily in a interactive GUI let alone trying to replicate the same by drawing a static architecture diagram.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MNEgLQgr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w4my8nknrae4cvb2x846.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MNEgLQgr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/w4my8nknrae4cvb2x846.png" alt="More or Less?" width="800" height="1213"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Which leaves us in a difficult position because in order to confidently make changes we need to know what will be impacted. And to know that we need to map out all links to the resource we are changing. But from what we’ve seen when even a simple application has that many related resources and links it can become a challenge to work with.&lt;/p&gt;

&lt;h3&gt;
  
  
  The solution
&lt;/h3&gt;

&lt;p&gt;It is precisely this challenge that has led us build Overmind. With impact analysis you don’t need to worry about creating a diagram of your entire application architecture. Tell it what you’re going to change and you will be informed of any resources outside of that scope that have been impacted by that change. Meaning that you will have the confidence that changes you make won’t have any unintended consequences.&lt;/p&gt;

&lt;p&gt;We are currently looking for design partners to join our waiting list. Sign up here → &lt;a href="https://overmind.tech"&gt;https://overmind.tech&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>devops</category>
      <category>serverless</category>
    </item>
    <item>
      <title>Confidently working with IAM Roles in AWS</title>
      <dc:creator>jameslaneovermind</dc:creator>
      <pubDate>Fri, 28 Apr 2023 09:39:14 +0000</pubDate>
      <link>https://dev.to/jameslaneovermind/confidently-working-with-iam-roles-in-aws-5e99</link>
      <guid>https://dev.to/jameslaneovermind/confidently-working-with-iam-roles-in-aws-5e99</guid>
      <description>&lt;h2&gt;
  
  
  IAM roles
&lt;/h2&gt;

&lt;p&gt;With more than 400 million operations per second AWS IAM usage is on a scale that is often hard to comprehend. Combine that with AWS still maintaining its majority share of the cloud market, it's fair to say a good chunk of the internet is regulated by IAM roles and policies.&lt;/p&gt;

&lt;p&gt;With that being the case you can be confident that AWS has a depth of expertise and wisdom backing up IAM. But it doesn't make managing IAM roles less of a arduous task. Often it means spending your time scrolling through multiple lines of JSON entries, which isn't exactly the most efficient way to look at permissions.&lt;/p&gt;

&lt;p&gt;The problem is only made worse in large organisations with several accounts and multiple services. It can be uphill battle to keep track of all the permissions assigned to different IAM roles. Making assigning the correct permissions a challenge if you don't know your resources and services like the back of your hand. While also making retrospective tasks such as auditing time consuming as you struggle to get the context you need to make important decisions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Working with IAM roles
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Auditing roles
&lt;/h3&gt;

&lt;p&gt;There’s a number of different reasons why you’d need to audit IAM roles. As part of a new project to ensure that no unused roles haven’t been created and forgotten. As part of compliance, ensuring you meet regulatory requirements. Or even as part of a security or cost review. Ensuring that unused roles are cleaned up and users have the appropriate level of access is vital and can also help ensure users are held responsible for their actions.&lt;/p&gt;

&lt;h4&gt;
  
  
  In AWS
&lt;/h4&gt;

&lt;p&gt;To do this you can check the last time each role made a request to AWS and use this information to determine whether the team is using the role. You want to gather more information about the role’s access patterns to determine whether you ought to delete it. &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ck7Nr4Si--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/89qkth0ehboolelppa1v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ck7Nr4Si--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/89qkth0ehboolelppa1v.png" alt="IAM role last accessed" width="800" height="546"&gt;&lt;/a&gt;&lt;br&gt;
From the role detail page, navigate to the Access Advisor tab and investigate the list of accessed services and verify what the role was used for.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DbW1bSqy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hsk3licbyg0ey7ru5ecg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DbW1bSqy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hsk3licbyg0ey7ru5ecg.png" alt="IAM role last service accessed" width="800" height="348"&gt;&lt;/a&gt;&lt;br&gt;
In the access Advisor tab you can investigate the list of accessed services and verify what the role was used for.&lt;/p&gt;

&lt;p&gt;This can also be done via the CLI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ aws iam generate-service-last-accessed-details --arn arn:aws:iam::1234567:role/role-name
{
    "JobId": "10c3dc31-6ccc-69d2-1185-91e9ad363831"
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ aws iam get-service-last-accessed-details --job-id 10c3dc31-6ccc-69d2-1185-91e9ad363831
{
    "JobStatus": "COMPLETED",
    "JobType": "SERVICE_LEVEL",
    "JobCreationDate": "2023-04-25T12:28:18.712000+00:00",
    "ServicesLastAccessed": [
        {
            "ServiceName": "AWS Security Token Service",
            "LastAuthenticated": "2023-04-25T11:49:09+00:00",
            "ServiceNamespace": "sts",
            "LastAuthenticatedEntity": "arn:aws:iam::944651592624:role/aws-source-pod",
            "LastAuthenticatedRegion": "eu-west-2",
            "TotalAuthenticatedEntities": 1
        }
    ],
    "JobCompletionDate": "2023-04-25T12:28:20.485000+00:00",
    "IsTruncated": false
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The question often remains is this information enough to make important decisions on. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can I remove this IAM role that has not been used in 89 days? What happens if it is part of a service that is used every 120 days?&lt;/li&gt;
&lt;li&gt;How can I be sure that I can I remove a role that has no activity?&lt;/li&gt;
&lt;li&gt;I know the role was used, but which AWS resource used it? A lambda function? An EKS pod?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Context is key.. but often missing&lt;/p&gt;

&lt;p&gt;What’s missing in both the above questions is context. Context of the role and if it is linked to anything. The problem with context is that it is often difficult to get without years of experience or up-to-date CMDB’s/ documentation.&lt;/p&gt;

&lt;h3&gt;
  
  
  A solution with Overmind
&lt;/h3&gt;

&lt;p&gt;Using Overmind does not require any of the above. In fact, it was built to be used with no prior context. You can simply search for what you want, in this case ‘iam-role’. Overmind will do the work finding them even across multiple regions and accounts.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--reSc6J1P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x316xtz81nevwwne789s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--reSc6J1P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x316xtz81nevwwne789s.png" alt="Using Overmind to list roles" width="800" height="563"&gt;&lt;/a&gt;&lt;br&gt;
From here we can quickly distinguish any unused roles or policies because they won’t be linked to any other resources. &lt;br&gt;
For example a unused role will look like this.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JFVZcQmU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j3zyik6bbl4x9u4vuo76.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JFVZcQmU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j3zyik6bbl4x9u4vuo76.png" alt="Unused Role in Overmind" width="800" height="494"&gt;&lt;/a&gt;&lt;br&gt;
Whereas one that is currently in use will have links to other resources and look like this. &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Gj5XvO7B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ztukxcvj71nnoc8qyd23.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Gj5XvO7B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ztukxcvj71nnoc8qyd23.png" alt="Overmind linked resources" width="800" height="926"&gt;&lt;/a&gt;&lt;br&gt;
In Overmind you can expand out and discover what other resources it is linked to or being used by. Providing us with the context we were missing before.&lt;/p&gt;

&lt;p&gt;From here we’ll be able to understand what this application is and the resources it needs to work out. Answering the question of what the impact would be if we were to remove these roles or polices. Now we have the missing context we can go ahead and proceed confidently knowing that our changes won’t have any unintended impact.&lt;/p&gt;

&lt;h3&gt;
  
  
  We aren’t stopping here..
&lt;/h3&gt;

&lt;p&gt;What if before making a application change Overmind could work out the blast radius and inform you on the impact? Or after a unsuccessful change you could go back and see a snapshot of what your application looked like before? Across all your AWS resources.&lt;/p&gt;

&lt;p&gt;That’s what we are building and we would love you to join us on this journey. Add your name to our waiting list to register your interest → &lt;a href="https://overmind.tech"&gt;https://overmind.tech&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
