<?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>Forem: Tailwarden</title>
    <description>The latest articles on Forem by Tailwarden (@tailwarden).</description>
    <link>https://forem.com/tailwarden</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F6295%2Fafb5b92f-7e20-4e89-8c32-b6413084721f.png</url>
      <title>Forem: Tailwarden</title>
      <link>https://forem.com/tailwarden</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/tailwarden"/>
    <language>en</language>
    <item>
      <title>Take back control of your tags with Tailwarden - Part 2</title>
      <dc:creator>Jake Page</dc:creator>
      <pubDate>Thu, 21 Dec 2023 08:40:01 +0000</pubDate>
      <link>https://forem.com/tailwarden/take-back-control-of-your-tags-with-tailwarden-part-2-2eo2</link>
      <guid>https://forem.com/tailwarden/take-back-control-of-your-tags-with-tailwarden-part-2-2eo2</guid>
      <description>&lt;p&gt;In &lt;a href="https://www.tailwarden.com/blog/take-control-of-your-cloud-tags-understand-and-execute-your-cloud-tagging-strategy" rel="noopener noreferrer"&gt;part 1&lt;/a&gt; we explored the importance of having a clear understanding of where your tagging strategy stands at a given point in time. Is it well enforced? Is it additive to your overall cloud management efforts? We looked at how leveraging Tailwarden features like the tags audit and using inventory filters can open up a first window into the current cloud tagging implementation. In this blog post, we will build on those features and talk about the next phase of the tagging execution strategy. Remediation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Remediate or start from scratch?
&lt;/h2&gt;

&lt;p&gt;In an ideal world, you would rarely be held down by constraints and could start projects from a clean slate. 100% of your time would be spent on writing new code, and new strategies and processes would never have to fight for priority over legacy ways of doing things. Unfortunately though, as many developers and engineers have noticed when joining a new organization, apart from all the fun work, a non-trivial amount of time goes into maintaining already existing code and infrastructure, it’s just the way things are. If you’re lucky, the original developers had maintainability and code longevity in mind, if not, my sincere condolences.&lt;/p&gt;

&lt;p&gt;Applicable also to cloud resource tagging strategies, even though, in many cases, it would be desirable from an implementation point of view to start fresh and adopt a brand new approach, this is not always feasible. And since the main aim of this blog post series is to give practical advice applicable to real-world use cases, I feel it’s more appropriate to focus on remediation over scraping your current tagging strategy and starting over. In many cases, the sheer size of enterprise production environments would involve prohibitive amounts of resources, becoming incredibly expensive and a decision the C-Suite is not likely to go for.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pass me the salt
&lt;/h2&gt;

&lt;p&gt;Cloud engineers, SREs, and FinOps practitioners, regardless of the role, have a series of objectives. Control costs, security concerns, compliance, etc. None easy tasks, especially if your environment spans multiple cloud accounts or providers. By default, cloud providers don’t offer native features to enable cloud tag unification across cloud providers.&lt;/p&gt;

&lt;p&gt;At a recent Tailwarden virtual meetup, &lt;a href="https://www.youtube.com/watch?v=6HUFn0sSzA0&amp;amp;t=480s" rel="noopener noreferrer"&gt;Alex Jones&lt;/a&gt; brought up an interesting analogy that draws parallels between multi-cloud environments and tables in a restaurant. In this analogy, each cloud platform is likened to a unique table, complete with unique tablecloths and salt shakers. The challenge arises when there is a desire to share resources, represented by the salt shakers, among these disparate tables.&lt;/p&gt;

&lt;p&gt;To address this challenge, an abstraction is needed, and Tailwarden serves as that unifying layer. Picture each cloud table being brought a bit closer together, and a larger cloth, symbolizing Tailwarden, is draped over both tables. This larger cloth effectively covers and connects the individual tables, allowing for seamless resource sharing and tag unification. Tailwarden acts as a bridge, offering a common interface that spans multiple cloud platforms and simplifies the complexities associated with managing a multi-cloud environment.&lt;/p&gt;

&lt;p&gt;Business units, squads, and internal services don’t always fit neatly into provider-segregated buckets. This being the case it’s essential to have a management layer combined with a comprehensive cloud tagging strategy that acts as the ultimate control panel. So many multi-cloud management tasks are made easier by having this level of abstraction. But how can we tie these different cloud providers together and create a unified organizational view? By using virtual tags.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Don’t have a Tailwarden account yet? &lt;a href="https://calendly.com/cyril-allard/tailwarden-demo?month=2023-12" rel="noopener noreferrer"&gt;Book a demo&lt;/a&gt; here and open your free account.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Implement Virtual Tags
&lt;/h2&gt;

&lt;p&gt;Virtual tags are the Tailwarden layer key/value pair that can be easily attached to cloud resources to bridge the gap between cloud providers and to quickly rescue resources that appear to be untracked and unaccounted for.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Easily add missing critical tags.&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;In situations where the existing tagging implementation isn't necessarily broken but rather incomplete, virtual tags become a valuable tool for filling in the gaps and patching resources that require tracking. While Tailwarden recognizes two types of tags, provider and virtual, when filtering resources by tags, it takes all tags into account.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets-global.website-files.com%2F65167b57095188b34c3dacc6%2F65830ea31e03e178ccc4d74e_ezgif.com-optimize%2520%2810%29.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets-global.website-files.com%2F65167b57095188b34c3dacc6%2F65830ea31e03e178ccc4d74e_ezgif.com-optimize%2520%2810%29.gif" alt="Adding virtual tags" width="1024" height="1024"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Virtual tags will not show up in the target cloud provider so as a manager of your cloud resources you are free to make logical groupings without worrying about interfering with conflicting with tags created by other stakeholders.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Add cross-provider tags&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Virtual tags empower you to construct an interconnected tapestry that aligns with your business units, squads, and overall service architecture. When dealing with a service that spans multiple accounts or cloud providers, maintaining visibility over all pertinent resources has never been more accessible and straightforward.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F8huqgamlilylwlsw7trk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F8huqgamlilylwlsw7trk.png" alt="Virtual tags applied to resource in multiple cloud providers" width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Routinely Reference The Tags Audit
&lt;/h2&gt;

&lt;p&gt;Treat the tags audit widget as the source of truth of your current tags implementation. Be it Virtual or Provider-level tags, easily spot inconsistencies, duplicates, or non-compliant tags. The feature makes it easy to click and zero into the resource to quickly find it inside the cloud provider itself.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets-global.website-files.com%2F65167b57095188b34c3dacc6%2F6583136b32339c9c354fe2e6_ezgif.com-optimize%2520%2813%29.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets-global.website-files.com%2F65167b57095188b34c3dacc6%2F6583136b32339c9c354fe2e6_ezgif.com-optimize%2520%2813%29.gif" alt="Analyze cloud tags" width="1024" height="1024"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Recommended workflow:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  Tag your resources in the cloud provider or on Tailwarden using &lt;strong&gt;Virtual tags&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;  Check the &lt;strong&gt;Tags Audit&lt;/strong&gt; widget to see the current state of your cloud tags&lt;/li&gt;
&lt;li&gt;  Access resources with the same tags applied by clicking on the tags&lt;/li&gt;
&lt;li&gt;  Need to update a resource? &lt;a href="https://www.notion.so/Take-back-control-of-your-tags-with-Tailwarden-Part-2-427cd5d6c9d14066b40702b1fc68589c?pvs=21" rel="noopener noreferrer"&gt;Easily access&lt;/a&gt; the cloud provider through Tailwarden&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Access The Cloud Provider Console In Just One Click
&lt;/h2&gt;

&lt;p&gt;Remediation is preferable over starting from scratch only if it is quicker and easier to execute. It’s crucial that very few obstacles stand in your way from the time to spot an inconsistency to the time it takes to address it. Tailwarden facilitates this process through the resource details view, offering a direct link to the resource in the cloud provider. This enables you to promptly update tags, address naming inconsistencies, or take any other necessary actions directly on the resource.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F88wnsop5knwwh6bg72yn.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F88wnsop5knwwh6bg72yn.gif" alt="One click cloud provider access" width="600" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Don't delay obtaining key insights into your environment waiting for the perfect tagging strategy. Take swift action by updating your cloud resource tags directly on Tailwarden using both provider and virtual tags. Ensure all your business units, squads, services, and environments are thoroughly represented through tags and easily filterable.&lt;/p&gt;

&lt;p&gt;Regardless of how long it takes to remediate your current situation, once you've established the desired tags, it's crucial to maintain consistency. But how can you effortlessly monitor and ensure your cloud tags remain in compliance? This topic will be explored in the final installment of this tagging blog post series.&lt;/p&gt;

</description>
      <category>tagging</category>
      <category>cloudcomputing</category>
      <category>finops</category>
      <category>saas</category>
    </item>
    <item>
      <title>Take back control of your tags with Tailwarden - Part 1</title>
      <dc:creator>Jake Page</dc:creator>
      <pubDate>Mon, 18 Dec 2023 15:02:35 +0000</pubDate>
      <link>https://forem.com/tailwarden/take-back-control-of-your-tags-with-tailwarden-part-1-52c1</link>
      <guid>https://forem.com/tailwarden/take-back-control-of-your-tags-with-tailwarden-part-1-52c1</guid>
      <description>&lt;p&gt;Having a strong and consistent cloud tagging strategy is one of the basic building blocks needed for any organization that is seriously trying to effectively manage and thrive in the cloud. But even a great strategy if not accompanied by excellent execution, won’t be very effective. That’s why I want to take a practical approach to exploring some Tailwarden features that can aid in effective tagging management. In the following three articles, I will do my best to show how a well-executed strategy can make all the difference in your cloud management efforts.&lt;/p&gt;

&lt;p&gt;A tag is one of the easiest cloud concepts to explain, a key/value pair attached to a cloud resource holding any information you want. A well-defined tagging strategy that's robust yet flexible, well-implemented, auditable, and future-proof shouldn’t be much more difficult. However, it starts getting complicated if you don’t have clear answers to questions like, who is in charge of the tagging strategy? When should tags be attached to a resource? Are there any organization-wide mandatory tags? Can team-level tags be added? Are tags case-sensitive? Are there any enforcement policies in place?&lt;/p&gt;

&lt;p&gt;Having a tagging strategy isn’t optional. If you have untagged resources in your environment, it doesn’t mean you lack a tagging strategy it just means your strategy leaves a lot to be desired. Think of it this way, just because your car doesn’t have any license plates on the bumpers, doesn’t mean it’s not registered to you. Once this is internalized we can start challenging some assumptions, and you can start focusing on consistently executing, remediating, and evolving the tagging strategy.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 Don’t have a Tailwarden account yet? &lt;a href="https://calendly.com/cyril-allard/tailwarden-demo?month=2023-12" rel="noopener noreferrer"&gt;Book a demo&lt;/a&gt; here and open your free account.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The Downsides of a Bad Strategy
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Unless your strategy is rock solid you can never be sure you are not leaving money on the table
&lt;/h3&gt;

&lt;p&gt;If tags are sparsely implemented or not carefully maintained across teams and departments. When you gather infrastructure cost metrics from aggregation tools like &lt;a href="https://docs.aws.amazon.com/cost-management/latest/userguide/ce-what-is.html" rel="noopener noreferrer"&gt;AWS Cost Explorer&lt;/a&gt; or &lt;a href="https://www.tailwarden.com/" rel="noopener noreferrer"&gt;Tailwarden&lt;/a&gt; you can never be sure to have 100% coverage. By having inconsistent tags, crucial resources might be left out of budgets but you can be sure that they will appear in the cloud provider's monthly bills.&lt;/p&gt;

&lt;h3&gt;
  
  
  Unless you have an owner you don’t have a strategy.
&lt;/h3&gt;

&lt;p&gt;A tagging strategy is not an organic process that self-preserves and improves automatically. It needs an individual or team to take responsibility for it and commit to maintaining and ensuring enforcement across the board. If not, it can lead to being a hindrance to future management efforts and a huge missed opportunity. What does this mean in practice? Apart from every resource having an Owner or Team tag, there should be a person or team who is responsible for company-wide tagging compliance, making sure all Owners and all Teams are in alignment with the larger strategy.&lt;/p&gt;

&lt;h3&gt;
  
  
  It’s impossible to have a cost-conscious culture at your organization without hard and reliable data.
&lt;/h3&gt;

&lt;p&gt;A consistent tagging strategy is one of the main ingredients necessary to be able to consistently generate reliable, granular, and reproducible resource usage data and cloud transparency metrics. If one of your objectives is to nurture a culture of cost consciousness and resource safeguarding, it has to start with a reliable source of truth.&lt;/p&gt;

&lt;p&gt;I assume you already have a tagging strategy in place for better or worse and you are not starting a green-field project. In the upcoming blog posts, we will look at practical advice that can be applied to your organization immediately. We will break down our exploration into three execution phases, starting by &lt;strong&gt;Evaluating your situation,&lt;/strong&gt; then &lt;strong&gt;Remediating the Situation,&lt;/strong&gt; and finally, &lt;strong&gt;Ensuring consistency over time&lt;/strong&gt; as well as showing how some Tailwarden features can be utilized to make managing your cloud tags much easier.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understand your current implementation
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Who owns and executes the tagging strategy?
&lt;/h2&gt;

&lt;p&gt;This is a crucial question you have a clear answer to. Tags are useful at every level and since cloud providers can hold up to 50 or 60 tags per resource in some cases, individual contributors; should be encouraged to use custom tags that help them in their work. But there has to be an overarching cohesive system of communally agreed upon tags (a tagging strategy) that tools like Tailwardencan leverage to glean high-level, organizational insights. The core organization tagging requirements have to be implemented top-down and monitored across namespace, account, and provider in a centralized manner.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which tags are company-wide and mandatory?
&lt;/h2&gt;

&lt;p&gt;There is no “silver bullet” industry standard tagging strategy, each company is different and need not copy what other companies do. Having said that, inside the organization itself, there must be no doubt at all about which tags must be applied company-wide and preferably at creation time.For example, some commonly used tag keys are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Team&lt;/strong&gt;: To what squat does the resource belong?&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;CostCenter:&lt;/strong&gt; Whose budget does the resource fall into?&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Environment&lt;/strong&gt;: Production, Staging, Sandbox, TestingAccount&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Service&lt;/strong&gt;: Does this resource belong to a larger service cluster?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How consistently have the tags been applied?
&lt;/h2&gt;

&lt;p&gt;Understandably as environments and teams scale, maintaining tagging compliance can become a difficult task. If you are using some sort of IaC tool you might be able to ensure compliance at creation time but how do you know tags weren’t edited or removed afterward? This is where some tooling can help.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tags Audit feature
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fyk3axoj25yepm17lswzi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fyk3axoj25yepm17lswzi.png" alt="Tags audit view" width="800" height="243"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you connect your cloud accounts to Tailwarden your cloud resources will be automatically fetched, and along with them any tags attached to the resources will also automatically appear.&lt;/p&gt;

&lt;p&gt;To inspect your currently implemented tags navigate to the tags audit widget, found in the main dashboard which displays the tag key and value, the number of instances of the tag as well as the stage coverage rate, which equates to the percentage of resources that have that particular tag attached.&lt;/p&gt;

&lt;p&gt;Tailwarden distinguishes between two types of tags. Provider tags are created at the cloud provider level. Virtual tags on the other hand are tags created inside Tailwarden. The cloud provider is unaware of the existence of virtual tags but they can be very useful for you to extend business units, services, and apartments across multiple cloud accounts or even providers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F13irmha5buyzhcrpylom.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F13irmha5buyzhcrpylom.gif" alt="Tags audit view gif" width="600" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tags audit gives you quick access to the resources and with just a couple of clicks, you can find them inside your cloud account.&lt;/p&gt;

&lt;p&gt;The Tags Audit widget acts as the first line of defense to understand the current state of tagging in your environment. Quickly catch spelling mistakes, and repeated or underutilized tags.&lt;/p&gt;

&lt;h2&gt;
  
  
  What insights are readily available?
&lt;/h2&gt;

&lt;p&gt;Along with the tags audit feature, gain further insight into your tags by applying specific filters to the resource inventory to get answers to questions like, do I have any untagged resources? Are all of the most expensive resources correctly tagged? Are all mission-critical resources tagged with all required tags?&lt;/p&gt;

&lt;h3&gt;
  
  
  Untagged Resources
&lt;/h3&gt;

&lt;p&gt;The lowest-hanging fruit in trying to understand the current tagging implementation is to filter for all empty tags. In the example below all Untagged AWS resources which were created in the last 7 days will appear. Any resource that appears in this search will violate the tagging strategy and should be addressed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fy12btygqp936ffz9aadn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fy12btygqp936ffz9aadn.png" alt="Untagged resources created in the last week filter" width="800" height="176"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Finding expensive critical resources
&lt;/h3&gt;

&lt;p&gt;The specific tag filter combined with a  Cost greater than 100 dollars filter shows 0 resources. Good news right? Are we sure that all costly resources have the current Environment:Prod tag? Or are they even tagged at all?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F1rwvlmlnyn8a58gg42fz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F1rwvlmlnyn8a58gg42fz.png" alt="Cost, Specific tag filter combination" width="800" height="170"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Remove the tag filter and compare the results, are there any costly resources that are untagged? If so, fix it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fs3563ie9xcv6f2qmsayt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fs3563ie9xcv6f2qmsayt.png" alt="Cost filter" width="800" height="121"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Easily find missing tags
&lt;/h3&gt;

&lt;p&gt;Filter specific categories like service or region and add the &lt;strong&gt;Specific tag / Doesn't&lt;/strong&gt; exist to generate a list of all resources that are missing a key tag.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fafsmjzmdf4bjm0zx26r1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fafsmjzmdf4bjm0zx26r1.png" alt="Missing Owner tag filter" width="800" height="172"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this case, I have 232 IAM roles that don’t have an Owner tag attached to them. I have some tagging to do.&lt;/p&gt;

&lt;h3&gt;
  
  
  Save your most crucial filters as Custom Views
&lt;/h3&gt;

&lt;p&gt;As you leverage tags to filter the inventory list, save the results as Custom Views. When you filter the inventory list by including tags you are effectively shining a light on deep dark and unvisited areas of your infrastructure you might have never seen before. Make sure you have quick access to your environment by saving a granular filter as a custom view to always have quick access to key infrastructure insights.&lt;/p&gt;

&lt;p&gt;Alerts and filters can also be applied to custom views themselves but we will cover that in more detail in the blog posts to come.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fze9r1z54l4c6maaq9ahp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fze9r1z54l4c6maaq9ahp.png" alt="Custom views view" width="800" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As the cloud, in IT and business management in general, I would not be the first one to assert that an incredibly sophisticated tagging strategy isn’t worth very much unless it is executed diligently. Without regular checks and the right tools to ensure consistent implementation and prevent divergence, even the most intricate strategy can lose its effectiveness. When your implementation isn’t perfect, it’s time to remediate. An integral phase of effective tagging execution and also the topic of the upcoming blog post.&lt;/p&gt;

</description>
      <category>cloudcomputing</category>
      <category>tagging</category>
      <category>sre</category>
      <category>devops</category>
    </item>
    <item>
      <title>Overcoming Anchoring Bias in Cloud Cost Management</title>
      <dc:creator>Jake Page</dc:creator>
      <pubDate>Thu, 24 Aug 2023 14:10:25 +0000</pubDate>
      <link>https://forem.com/tailwarden/overcoming-anchoring-bias-in-cloud-cost-management-26bl</link>
      <guid>https://forem.com/tailwarden/overcoming-anchoring-bias-in-cloud-cost-management-26bl</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;I recently picked up a book given to me as part of my Tailwarden onboarding welcome kit. It came with sizeable boots to fill since our CEO scribbled a note on the inside cover saying it was one of the most fascinating books he had ever read, I had to see for myself.&lt;/p&gt;

&lt;p&gt;He wasn’t wrong, &lt;a href="https://www.amazon.com/Youre-About-Make-Terrible-Mistake/dp/0316494984" rel="noopener noreferrer"&gt;"You are about to make a terrible mistake"&lt;/a&gt; explores the fascinating instances of how cognitive biases distort our decision-making capabilities. Countless examples illustrate how our implicit biases affect us all, gaining awareness of their presence is the first step towards anything resembling an antidote. &lt;a href="https://www.tailwarden.com/blog/overcoming-anchoring-bias-in-cloud-cost-management#" rel="noopener noreferrer"&gt;"Confirmation bias"&lt;/a&gt;, &lt;a href="https://www.shortform.com/blog/story-bias/#:~:text=What%20is%20story%20bias%3F,on%20them%20instead%20of%20facts." rel="noopener noreferrer"&gt;"Storytelling"&lt;/a&gt;, &lt;a href="https://en.wikipedia.org/wiki/Hindsight_bias" rel="noopener noreferrer"&gt;"hindsight"&lt;/a&gt; and &lt;a href="https://en.wikipedia.org/wiki/Present_bias#:~:text=Present%20bias%20is%20the%20tendency,worth%20in%20long%2Dterm%20consequences." rel="noopener noreferrer"&gt;"present"&lt;/a&gt; bias to name just a few invisible obstacles we are up against. There are so many ways our intuitions can fail us, it’s a miracle we can ever get anything done in the first place. Granted there are a multitude of biases that we could explore in this article, but in the context of cloud cost optimization and FinOps there is one bias I found to be particularly salient. A bias that if taken into account can unlock eye-watering cloud resource savings. We are talking about the Anchoring bias.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fh19nhey66aob19153vnv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fh19nhey66aob19153vnv.png" alt="The book in question" width="676" height="366"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Anchoring bias anyway?
&lt;/h2&gt;

&lt;p&gt;It’s a commonly occurring bias that emerges when individuals rely too heavily on the first piece of information they receive, using it as a reference point or "anchor" for making subsequent judgments or estimations. This initial information, even if irrelevant or arbitrary, can have a powerful influence on their final decisions.&lt;/p&gt;

&lt;p&gt;For example, let's say you are looking to buy a new laptop, and the first one you see has a very high price tag. Even if it's not the best laptop for your needs, that initial high price might become your anchor. As you continue to explore other options, you might unconsciously compare their prices to the initial high price, perceiving them as cheaper or more expensive relative to that anchor. As a result, you might end up making a purchase decision based on the anchoring bias, even though there might be more suitable and reasonably priced options available.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fagtd0ns1sgupmvg0g0a1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fagtd0ns1sgupmvg0g0a1.png" alt="Anchoring bias influencing a purchase" width="800" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the context of cloud cost optimization and FinOps, if a team sets a high initial budget for a project, they might be anchored to that figure and end up overspending on cloud resources throughout the project's lifecycle.&lt;/p&gt;

&lt;p&gt;Recognizing anchoring bias and being mindful of its influence can help individuals and teams make more objective and data-driven decisions, ensuring that they don't get unduly swayed by initial, arbitrary, or irrelevant information.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Pitfalls of Anchoring Bias in Cloud Optimization
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Settling for modest cost reductions due to fixation on initial data
&lt;/h3&gt;

&lt;p&gt;Many times in complex cloud environments you are going to encounter large and many times hard to understand bills. In most cases, a few services have an outsized weight on the overall bill, such as compute instances, databases, or complex managed services. The main cost savings opportunities will involve these services. However, here's the catch: as you delve into your cost-cutting endeavors and pinpoint the exact expenses for each service and resource, there's a risk. You might inadvertently anchor your focus on these initial cost figures. Consequently, the danger lies in settling for reductions that, while certainly noteworthy compared to the starting costs, might pale in comparison to the much larger savings potential that could realistically be achieved. In other words, you might be leaving “money on the table”. This fixation on the anchor values blinds you to the more significant optimization possibilities that await deeper exploration.&lt;/p&gt;

&lt;h3&gt;
  
  
  Overlooking significant savings opportunities in the long run
&lt;/h3&gt;

&lt;p&gt;The risk of narrowly trying to reduce the cost of the resources that are provisioned may lead to larger overhauling and re-structuring efforts that might lead to monumental savings being overlooked. The danger is that you focus too much on the tree and miss the forest. For example, you might only ask questions like, how can I get a 10% reduction of that compute instance? and not questions like, is this the right instance type for the job, why are we not using spot or reserved instances instead? Are my compute instances scaling horizontally in an efficient manner? How long do we actually need the Cloudwatch logs to be persisted? Is serverless an option for the use case?&lt;/p&gt;

&lt;h3&gt;
  
  
  The impact of anchoring bias on strategic cloud resource allocation
&lt;/h3&gt;

&lt;p&gt;You will find that anchoring bias greatly influences the questions you ask. And during any strategic planning effort, it's essential to frame the conversation correctly and base it on premises that can set you up to win. For many managers and divisions inside an organization, the budget allocated to the team is a proxy for how much the team is valued in the company. This leads to incentives that align with budget conservation. For those who tie their teams identity to the budget that is allocated to them results in very little variance from quarter to quarter. To be the person in the budget meeting to propose slashing the budget in half can win you foul looks from colleagues. This has to be completely thrown out of the window when in the context of cloud resource cost allocation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Examples of Anchoring Bias in Cloud Management
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Case Study 1: E-Commerce Scale-Up
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt; An e-commerce company experiences a surge in website traffic and subsequently sees a significant spike in its cloud expenses, particularly related to database read/write operations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Anchoring Bias:&lt;/strong&gt; The DevOps team fixates on the initial data that indicates database operations as the primary cost driver. They focus their efforts solely on optimizing database-related expenses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Impact:&lt;/strong&gt; The DevOps team successfully reduces database costs by 10% through query optimization. However, they fail to notice that a considerable portion of the expenses now comes from auto-scaling server instances required to handle the increased traffic. They also fail to ask themselves if the current database architecture is still appropriate if similar surges are to be expected.&lt;/p&gt;

&lt;h3&gt;
  
  
  Case Study 2: Media Streaming Platform
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt; A media streaming company notices a gradual increase in its cloud expenditures due to higher demand for streaming content. They identify that a specific type of storage service, used for storing user data and media files, is the costliest component.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Anchoring Bias:&lt;/strong&gt; The operations team becomes anchored to the initial data that points towards the expensive storage service as the main issue. They dedicate their efforts to optimizing the usage and pricing of this storage service.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Impact:&lt;/strong&gt; The operations team indeed manages to optimize the storage service, achieving a 20% reduction in costs. However, during this process, they overlook the fact that a significant portion of costs are attributed to transcoding servers responsible for converting media files into various formats. The team's fixation on the initial anchor prevents them from considering a more extensive overhaul of the transcoding architecture, which might involve adopting more efficient codecs or utilizing specialized hardware. As a result, the potential for substantial savings from a more significant transformation remains untapped, highlighting how anchoring bias can lead to suboptimal decisions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Combating Anchoring Bias with Tailwarden
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Awareness is half the battle
&lt;/h3&gt;

&lt;p&gt;Awareness of the anchoring bias within us marks a crucial starting point. Effective cloud cost reduction strategies thrive on data-driven decision-making, incorporating various metrics. By expanding your analysis beyond singular resource costs, you create space for robust choices. Tailwarden's Cost Explorer feature aids in revealing historical cost trends, highlighting resource-heavy areas. Yet, it's not only about understanding high costs, it's about contextualizing their role in your architecture. Regular evaluations of alignment with budgetary needs are key. Tailwarden cloud agnostic resource management features can act as your guide, providing insights for well-informed decisions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fg7aobcc8i8s3iokje5dm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fg7aobcc8i8s3iokje5dm.png" alt="Tailwarden Dashboard" width="800" height="459"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Collaborative decision-making to counter individual biases
&lt;/h3&gt;

&lt;p&gt;One of the main takeaways from the book is that from an individuals perspective it's extremely hard if not impossible to be 100% aware and consious of ones biases at all times. It's even excruciatingly hard to be aware of ones biases at all for that matter. The only way to counteract the biases of the individual decision maker is to share the load, focus on the process itself of making decisions and engaging in dialogue, a lot of dialogue.&lt;/p&gt;

&lt;p&gt;Olivier Sibony, the author of the aforementioned book, raises concerns about other biases surfacing within group dynamics. Topics we can explore in another article, include &lt;a href="https://en.wikipedia.org/wiki/Groupthink" rel="noopener noreferrer"&gt;Groupthink&lt;/a&gt;, &lt;a href="https://en.wikipedia.org/wiki/Information_cascade" rel="noopener noreferrer"&gt;Information cascade&lt;/a&gt;, and &lt;a href="https://en.wikipedia.org/wiki/Group_polarization" rel="noopener noreferrer"&gt;Group polarization&lt;/a&gt;. What's evident, however, is that a group united by the goal of becoming a data-driven entity, unafraid to question past strategies and rally behind bold cost-cutting aspirations isn't just the best way to counteract biases, it's pretty much the only way.&lt;/p&gt;

&lt;h3&gt;
  
  
  Regularly update assumptions and strategic plans
&lt;/h3&gt;

&lt;p&gt;As you use Tailwarden to gain deeper insight into the inner workings and behavior of your cloud environments, use the data points and granular cost data to inform regular conversations and working sessions with the explicit objective of challenging assumptions about how your budget is structured and how it is currently allocated. Build internal processes that help make the best decisions, use clear and concise data to inform the group conversation, encourage dissenting voices and set a deadline for a decision to be made.&lt;/p&gt;

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

&lt;p&gt;Simply put, if anchoring bias goes unchecked it can hold you back and deny you major cost savings in the long run. The stakes are usually quite high, with ever-growing cloud environments, cloud bills quickly stack up and become the driving expense of many companies. As cloud engineers and developers, you have an outsized role in the impact on your company's bottom line. By maintaining a clear focus on the importance of unbiased cloud decision-making, and always remembering the potential that any single decision maker has to be a biased single point of failure, you are setting yourself and your team up for long-term cost savings and efficiency.&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>finops</category>
      <category>cost</category>
      <category>aws</category>
    </item>
    <item>
      <title>Deploy Komiser to AWS with Terraform</title>
      <dc:creator>LABOUARDY Mohamed</dc:creator>
      <pubDate>Mon, 24 Apr 2023 18:57:57 +0000</pubDate>
      <link>https://forem.com/tailwarden/deploy-komiser-to-aws-with-terraform-lnb</link>
      <guid>https://forem.com/tailwarden/deploy-komiser-to-aws-with-terraform-lnb</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/tailwarden/komiser"&gt;Komiser&lt;/a&gt; is an open-source cloud-agnostic inventory solution that gives you a holistic view of your cloud resources and helps you uncover insights about your infrastructure such as cost wasted, security threats, and compliance issues.&lt;/p&gt;

&lt;p&gt;This tutorial will cover all the necessary steps for deploying Komiser on AWS using Terraform. By the end of this tutorial, we’ll deploy the below architecture with the following components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Provision an EC2 instance to host the Komiser container, and ensure that inbound and outbound traffic to the instance is restricted using a security group.&lt;/li&gt;
&lt;li&gt;  Deploy an ELB in front of the EC2 instance to manage traffic distribution, and configure a security group for the ELB.&lt;/li&gt;
&lt;li&gt;  Create an IAM instance profile and attach it to the EC2 instance, including the Komiser recommended IAM policy to manage access to AWS resources.&lt;/li&gt;
&lt;li&gt;  Set up an alias record in Route 53 to direct traffic to the ELB DNS with a user-friendly URL.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--N9ZccVgU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/v2/resize:fit:1400/1%2A2cwPMl-Baj5IGn-IqMI8TA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--N9ZccVgU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/v2/resize:fit:1400/1%2A2cwPMl-Baj5IGn-IqMI8TA.png" alt="architecture" width="710" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;All Terraform templates used in this tutorial can be found in the GitHub &lt;a href="https://github.com/tailwarden/komiser-terraform"&gt;repository&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To get started, define your backend and declare AWS as your provider in the &lt;a href="http://terraform.tf/"&gt;terraform.tf&lt;/a&gt; file. In this example, S3 is used as the backend for storing Terraform state files. Once done, run &lt;em&gt;terraform init&lt;/em&gt; to download the AWS module.&lt;/p&gt;

&lt;p&gt;Next, declare an EC2 instance in &lt;a href="http://ec2.tf/"&gt;ec2.tf&lt;/a&gt; file with &lt;em&gt;aws_instance&lt;/em&gt; resource. The resource uses Amazon Linux 2 as an AMI which is obtained using the &lt;em&gt;data&lt;/em&gt; block and the &lt;em&gt;aws_ami&lt;/em&gt; data source. The instance type is &lt;em&gt;t2.medium&lt;/em&gt; (recommended size to host Komiser) and uses a public IP address and a security group that allows traffic on port 22 for SSH access and 3000 for serving the Komiser dashboard. It also attaches an IAM instance profile with the &lt;a href="https://github.com/tailwarden/komiser/blob/master/policy.json"&gt;permissions&lt;/a&gt; required by Komiser to build your asset inventory.&lt;/p&gt;

&lt;p&gt;The provisioned blocks define a series of file transfers and commands to execute on the EC2 instance after it’s launched. The first three &lt;em&gt;provisioner&lt;/em&gt; blocks upload files from the local machine to the EC2 instance. The last &lt;em&gt;provisioner&lt;/em&gt; block executes remote commands on the EC2 instance, which installs some needed dependencies by running a bash script that is transferred to one of the previous &lt;em&gt;provisioner&lt;/em&gt; blocks and deploys Komiser as a Docker container.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Dk7vq_cK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/v2/resize:fit:1400/1%2Awx51JwhhR78OLu9_8BIGsA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Dk7vq_cK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/v2/resize:fit:1400/1%2Awx51JwhhR78OLu9_8BIGsA.png" alt="ec2 instance" width="800" height="872"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s important to note that when using Komiser in a production environment, certain additional improvements should be taken to ensure security and scalability.&lt;/p&gt;

&lt;p&gt;Firstly, it’s recommended to deploy the Komiser instance within a private subnet and restrict SSH access only from a trusted CIDR block or a bastion host. This helps to prevent unauthorized access to the instance and reduces the risk of security threats.&lt;/p&gt;

&lt;p&gt;Secondly, automation tools such as Ansible or Packer can be leveraged to further optimize the deployment process. Using Packer, for example, allows for creating a custom AMI that includes all the necessary software and configurations for running Komiser.&lt;/p&gt;

&lt;p&gt;The &lt;a href="http://install.sh/"&gt;install.sh&lt;/a&gt; script installs Docker Community Edition (CE) and Docker Compose. It also adds the &lt;em&gt;ec2-user&lt;/em&gt; to the &lt;em&gt;docker&lt;/em&gt; group, allowing us to run Docker commands without needing to use &lt;em&gt;sudo&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7JZ-Sz7e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/v2/resize:fit:1400/1%2ABSoYZoNinZ2wNOZGNdhwhw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7JZ-Sz7e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/v2/resize:fit:1400/1%2ABSoYZoNinZ2wNOZGNdhwhw.png" alt="bash script" width="800" height="305"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once those tools are installed, the deployment of the Komiser container can be initiated by executing the command &lt;em&gt;docker-compose up&lt;/em&gt; with reference to the &lt;em&gt;docker-compose.yml&lt;/em&gt; file. This will result in the deployment of the latest version of the Komiser image, which is at the time of writing this post &lt;a href="https://github.com/tailwarden/komiser/releases/tag/v3.0.11"&gt;&lt;em&gt;v3.0.11&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The container is configured to use a &lt;em&gt;config.toml&lt;/em&gt; file that connects to the running AWS account and stores data in an SQLite database. Additionally, the container serves the Komiser dashboard through port 3000.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xhCJ29GC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/v2/resize:fit:1400/1%2AyP-K23_RGcPc0WHtTbXfMQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xhCJ29GC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/v2/resize:fit:1400/1%2AyP-K23_RGcPc0WHtTbXfMQ.png" alt="config toml" width="800" height="609"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the &lt;a href="http://iam.tf/"&gt;&lt;em&gt;iam.tf&lt;/em&gt;&lt;/a&gt; file, the next step is to define AWS IAM resources that enable the Komiser EC2 instance to assume an IAM role with the appropriate permissions attached to it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4qlUpRbP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/v2/resize:fit:1400/1%2AIsV5H_wiUHCzr_kXOvia0w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4qlUpRbP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/v2/resize:fit:1400/1%2AIsV5H_wiUHCzr_kXOvia0w.png" alt="iam policy" width="800" height="1103"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, in &lt;a href="http://elb.tf/"&gt;elb.tf&lt;/a&gt; define a load balancer resource that forwards traffic into the EC2 instance running the Komiser container on port 3000. The ELB is configured with two listeners: one for HTTPS traffic and the other for HTTP traffic. The HTTPS listener is configured with an SSL certificate (requested through ACM) that is specified as a variable.&lt;/p&gt;

&lt;p&gt;The &lt;em&gt;health_check&lt;/em&gt; block specifies a health check configuration for the ELB. It specifies the target to check for health as “TCP:3000”. The health check is configured to check the instances every 5 seconds, with a timeout of 3 seconds, and a threshold of 2 checks for both healthy and unhealthy responses.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CdwpWDHK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/v2/resize:fit:1400/1%2APOhuG6yr7PTT8EkzzY2sUQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CdwpWDHK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/v2/resize:fit:1400/1%2APOhuG6yr7PTT8EkzzY2sUQ.png" alt="elb" width="800" height="1044"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally, in &lt;a href="http://route53.tf/"&gt;route53.tf&lt;/a&gt; creates a new AWS Route 53 record for a domain name that points to the ELB resource using an alias record. The record type specified is “A” for an IPv4 address.&lt;/p&gt;

&lt;p&gt;This creates a Route 53 record that maps the domain name to the ELB, making it possible for users to access Komiser running on the ELB through a user-friendly URL.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZdeF4lui--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/v2/resize:fit:1400/1%2AkqAKqqLgC3hmKNoQ3BGubQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZdeF4lui--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/v2/resize:fit:1400/1%2AkqAKqqLgC3hmKNoQ3BGubQ.png" alt="route53 record" width="800" height="482"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After defining variables and outputs, running &lt;em&gt;terraform plan&lt;/em&gt; will generate an execution plan detailing the changes that will be made to the infrastructure. Running &lt;em&gt;terraform apply&lt;/em&gt; will apply these changes, resulting in the deployment of the 9 new resources necessary for running Komiser on AWS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--P_umV2dB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/v2/resize:fit:1400/1%2AT9ySZrUZfzIrp2SEV-qcVg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P_umV2dB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/v2/resize:fit:1400/1%2AT9ySZrUZfzIrp2SEV-qcVg.png" alt="terraform output" width="800" height="323"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After the resources have been successfully provisioned, you can easily access the Komiser dashboard by navigating to &lt;a href="https://demo.domain.com/"&gt;&lt;strong&gt;https://demo.domain.com&lt;/strong&gt;&lt;/a&gt;. Once accessed, you will be presented with a comprehensive breakdown of your AWS resources, including their associated costs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--W5-QfVfI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/v2/resize:fit:1400/1%2A4n9z6sPEcT1FD4RkXtm26A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--W5-QfVfI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://miro.medium.com/v2/resize:fit:1400/1%2A4n9z6sPEcT1FD4RkXtm26A.png" alt="komiser dashboard" width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Congrats! You’ve successfully deployed Komiser with Terraform.&lt;/p&gt;

&lt;p&gt;You can now leverage Komiser’s holistic view to take control of your cloud usage and optimize your resources for maximum efficiency and cost savings.&lt;/p&gt;

</description>
      <category>terraform</category>
      <category>aws</category>
      <category>devops</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Build a Serverless Gym App with ChatGPT, Twilio and WhatsApp</title>
      <dc:creator>LABOUARDY Mohamed</dc:creator>
      <pubDate>Mon, 03 Apr 2023 17:05:42 +0000</pubDate>
      <link>https://forem.com/tailwarden/build-a-serverless-gym-app-with-chatgpt-twilio-and-whatsapp-3cob</link>
      <guid>https://forem.com/tailwarden/build-a-serverless-gym-app-with-chatgpt-twilio-and-whatsapp-3cob</guid>
      <description>&lt;p&gt;We have recently started hosting virtual workshops in our &lt;a href="http://discord.tailwarden.com/"&gt;Discord community&lt;/a&gt; called “Wardens Assembly”. These monthly events cover a variety of tech topics. The first event was about building a Serverless gym app that sends a workout plan to your WhatsApp number using ChatGPT. In case you missed the event, you can watch it completely here:&lt;/p&gt;

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

&lt;p&gt;In case you want to cut straight to the chase, this tutorial is for you as it covers only the key parts of building a Serverless app, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Building a Serverless app using Golang &amp;amp; AWS Lambda&lt;/li&gt;
&lt;li&gt;  Scheduling Lambda with cron expression triggers&lt;/li&gt;
&lt;li&gt;  Integrating ChatGPT 4 with AWS Lambda&lt;/li&gt;
&lt;li&gt;  Sending WhatsApp messages via the Twilio SDK&lt;/li&gt;
&lt;li&gt;  Streamlining deployment with GitHub Actions &amp;amp; AWS SAM&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Before jumping into the code, the diagram below summarizes the architecture we’re going to build by end of this tutorial:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sGShzkmK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/v2/resize:fit:700/0%2ANPMNELL9W7C70Dqt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sGShzkmK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/v2/resize:fit:700/0%2ANPMNELL9W7C70Dqt.png" alt="Application’s architecture" width="700" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The goal is to create a Lambda function in Go, which will communicate with ChatGPT. This function will send a prompt to ChatGPT API and then use Twilio to send a workout plan to our WhatsApp number at a specific schedule determined by an EventBridge Rule. Moreover, we will leverage AWS SAM and GitHub Actions to automate the infrastructure build and deployment, as well as the CI/CD pipeline.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You can find all the source code used in this tutorial on &lt;a href="https://github.com/tailwarden/virtual-workshops"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Building Lambda Function
&lt;/h2&gt;

&lt;p&gt;To get started, from your terminal create a main.go file, initialize a go project, and install the AWS Lambda package with the following commands:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;go mod init workout-generator&lt;br&gt;
go get github.com/aws/aws-lambda-go&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Next, declare the handler function in &lt;em&gt;main.go&lt;/em&gt;. The main function calls the lambda &lt;em&gt;handler&lt;/em&gt; by calling the &lt;em&gt;lambda.Start&lt;/em&gt; method_._&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WIxJn0B6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/v2/resize:fit:700/0%2APL8m296LjZKpyozc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WIxJn0B6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/v2/resize:fit:700/0%2APL8m296LjZKpyozc.png" alt="Lambda handler" width="700" height="473"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, to integrate with OpenAI, you will need to download the OpenAI Go wrapper library:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;go get github.com/sashabaranov/go-openai&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then, update the handler, and create an OpenAI client by passing your OpenAI token. Next, start a chat using the &lt;em&gt;CreateChatCompletion&lt;/em&gt; method and pass a prompt, and &lt;em&gt;setGPT3Dot5Turbo&lt;/em&gt; as the target model (which is the underlying name for ChatGPT). The library also supports other models, such as ChatGPT, GPT-4, DALL·E 2, and Whisper.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RIoGlkig--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/v2/resize:fit:700/0%2AUFHxtpP34eyroMzj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RIoGlkig--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/v2/resize:fit:700/0%2AUFHxtpP34eyroMzj.png" alt="ChatGPT Go integration" width="700" height="565"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;em&gt;OPENAI_TOKEN&lt;/em&gt; value can be generated from the &lt;a href="https://platform.openai.com/account/api-keys"&gt;OpenAI platform&lt;/a&gt;. Make sure to save the key in a safe place, as it will only be shown to you once.&lt;/p&gt;

&lt;p&gt;To send the workout plan to our WhatsApp number, we need to integrate Twilio. To do so, you will need to sign up for a Twilio account, sign in to your existing account, and activate the Twilio Sandbox for WhatsApp. Follow the steps below:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Sign up for a &lt;a href="https://www.twilio.com/try-twilio"&gt;free Twilio account&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;  Activate the Twilio &lt;a href="https://www.twilio.com/console/sms/whatsapp/sandbox"&gt;Sandbox for WhatsApp&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;  Select a number from the available sandbox numbers to activate your sandbox.&lt;/li&gt;
&lt;li&gt;  Send join &lt;em&gt;&lt;/em&gt; to your Sandbox number in WhatsApp to join your Sandbox.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After sending the message, Twilio should reply with a confirmation message, as shown in the screenshot below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PLS-GsQT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/v2/resize:fit:700/0%2AjwWzm4qs9SpYqkdF.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PLS-GsQT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/v2/resize:fit:700/0%2AjwWzm4qs9SpYqkdF.png" alt="Twilio Sandbox confirmation" width="700" height="208"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now to integrate with our app, install the Twilio Go package with the following command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;go get https://github.com/twilio/twilio-go&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Next, add the following code snippet to the Lambda handler. It creates a Twilio client by passing the credentials as environment variables. The Account SID and Auth Token can be found &lt;a href="http://twilio.com/console"&gt;here&lt;/a&gt; and should be set as the values for the environment variables &lt;em&gt;TWILIO_USERNAME&lt;/em&gt; and &lt;em&gt;TWILIO_PASSWORD&lt;/em&gt; respectively. Finally, it uses the &lt;em&gt;CreateMessage&lt;/em&gt; method to send the workout plan generated by ChatGPT.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4h5_kdT2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/v2/resize:fit:700/0%2A2TXcHsUQsiJR9mOh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4h5_kdT2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/v2/resize:fit:700/0%2A2TXcHsUQsiJR9mOh.png" alt="Sending message with Twilio SDK" width="700" height="576"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That’s it. Our function handler is ready to be deployed to AWS Lambda!&lt;/p&gt;

&lt;h2&gt;
  
  
  Deploying Serverless Stack with SAM
&lt;/h2&gt;

&lt;p&gt;For the deployment part, we’re going to use AWS Serverless Application Model (SAM). Once you’ve installed the &lt;a href="https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html"&gt;SAM CLI&lt;/a&gt;, create a template.yml that declares a Lambda function called “WorkoutGenerator”, including its source code location, handler function, runtime environment, memory size, and timeout duration.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Q0WpA3tj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/v2/resize:fit:700/0%2AcR-3I-f9Vohb-OCJ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Q0WpA3tj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/v2/resize:fit:700/0%2AcR-3I-f9Vohb-OCJ.png" alt="SAM template" width="700" height="683"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The template also defines a set of environment variables for the function. These variables are resolved using the AWS Systems Manager Parameter Store, which is a service that stores secure strings and parameters. The variables specified in this template include the OpenAI token, Twilio account credentials, and phone numbers for sending and receiving WhatsApp messages.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bCBc1fp7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/v2/resize:fit:700/0%2AAhNMH2wxZYHKZKHf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bCBc1fp7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/v2/resize:fit:700/0%2AAhNMH2wxZYHKZKHf.png" alt="Lambda variables stored in Parameter Store" width="700" height="252"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, use the AWS SAM CLI to build the application and prepare for deployment by running the &lt;em&gt;sam build&lt;/em&gt; command. Finally, run the &lt;em&gt;sam deploy — guided&lt;/em&gt; command to deploy the AWS resources by provisioning an AWS CloudFormation stack:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GpC6UcnM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/v2/resize:fit:700/0%2ApcxljtqoU1Fbh091.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GpC6UcnM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/v2/resize:fit:700/0%2ApcxljtqoU1Fbh091.png" alt="The sam deploy command’s output" width="700" height="341"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Lambda function is now deployed and running in the AWS Cloud! You can test it out, by triggering the Lambda function manually from the AWS Console. A WhatsApp message should be received with a workout plan generated by ChatGPT as follows:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--y7fiAkYk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/v2/resize:fit:700/0%2ArX-HZtmBu8Xa6kMP.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--y7fiAkYk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/v2/resize:fit:700/0%2ArX-HZtmBu8Xa6kMP.png" alt="Workout plan generated by ChatGPT" width="700" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;However, our goal is to have our workout plan generated automatically, ideally before we begin our gym workout. To achieve this, we need to trigger our Lambda function at a specific schedule. We can use an EventBridge rule to define a cron expression that invokes our function every weekday at 7 PM. Update the SAM template below and run it again:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HgRKnXhK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/v2/resize:fit:700/0%2AS8clxAjd6sVEECIJ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HgRKnXhK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/v2/resize:fit:700/0%2AS8clxAjd6sVEECIJ.png" alt="Triggering Lambda function with a cron job" width="700" height="442"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you head back to the Lambda dashboard, you should see an EventBridge Rule trigger, as shown in the screenshot below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0ee0VONM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/v2/resize:fit:700/0%2AlHHOrfFXl6g2tybI.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0ee0VONM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/v2/resize:fit:700/0%2AlHHOrfFXl6g2tybI.png" alt="EventBridge integration" width="700" height="335"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With our application being completed, let’s build a CI/CD pipeline to automate the deployment process through GitHub Actions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Defining a CI/CD Pipeline with GitHub Actions
&lt;/h2&gt;

&lt;p&gt;Once your source code is pushed to a remote GitHub repository, create a &lt;em&gt;release.yml&lt;/em&gt; file under the &lt;em&gt;.github/workflows&lt;/em&gt; folder with the following steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Check out the repository under &lt;em&gt;$GITHUB_WORKSPACE&lt;/em&gt;, so the workflow can access it.&lt;/li&gt;
&lt;li&gt;  Set up Python environment and install SAM CLI.&lt;/li&gt;
&lt;li&gt;  Configure AWS credentials from secrets. Make sure to add &lt;em&gt;AWS_ACCESS_KEY_ID&lt;/em&gt; and &lt;em&gt;AWS_SECRET_ACCESS_KEY&lt;/em&gt; as a secret under the GitHub repository.&lt;/li&gt;
&lt;li&gt;  Run the &lt;em&gt;sam build&lt;/em&gt; and &lt;em&gt;sam deploy&lt;/em&gt; commands in a non-interactive mode.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--I6RpxZeS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/v2/resize:fit:700/0%2AFwPOp-m32F1UPiAZ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--I6RpxZeS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/v2/resize:fit:700/0%2AFwPOp-m32F1UPiAZ.png" alt="CI/CD pipeline" width="700" height="476"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once the pipeline is defined, push the changes to the remote repository.&lt;/p&gt;

&lt;p&gt;We can test out the pipeline by improving the ChatGPT prompt to generate a workout plan with only weightlifting exercises. Push the changes, the pipeline will be triggered and new changes will be deployed to AWS as shown below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ik6QBTX1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/v2/resize:fit:700/0%2ABWizl77yrIxSoTj4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ik6QBTX1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/v2/resize:fit:700/0%2ABWizl77yrIxSoTj4.png" alt="GitHub Actions pipeline’s output" width="700" height="313"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;To improve the workout plan, provide your age, gender, weight, height, and one rep max in the ChatGPT prompt.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Congratulations! You have successfully built a personal gym workout generator. We would love to see your implementation. Create a similar Serverless app that integrates with ChatGPT and share it on Twitter to enter the competition. Tag &lt;a href="https://twitter.com/tailwarden"&gt;Tailwarden on Twitter&lt;/a&gt; and add the hashtag #WardensAssemblyChallenge. The three winners will be chosen on Friday, April 28th.&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>go</category>
      <category>aws</category>
      <category>programming</category>
    </item>
    <item>
      <title>Unexpected charges on your AWS bill</title>
      <dc:creator>LABOUARDY Mohamed</dc:creator>
      <pubDate>Mon, 27 Mar 2023 13:36:16 +0000</pubDate>
      <link>https://forem.com/tailwarden/unexpected-charges-on-your-aws-bill-31am</link>
      <guid>https://forem.com/tailwarden/unexpected-charges-on-your-aws-bill-31am</guid>
      <description>&lt;p&gt;Are you a new AWS user who has experienced bill shock while being in a free-tier plan or a professional cloud practitioner struggling to understand your team’s cloud expenses? If so, you’re not alone. Many AWS users are surprised by unexpected charges on their monthly bills, which can significantly increase the overall cost of using AWS services. As companies’ cloud environments become more complex, lack of visibility can lead to unpredictable cloud bills and budget overruns. In this blog post, we will cover the most common unexpected charges on your AWS bill and provide tips on how to avoid them, so you can optimize your cloud costs and avoid unpleasant surprises.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;It’s worth mentioning that the list is not exhaustive and covers only the most common ways in which money is wasted on AWS.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Paying for unused resources
&lt;/h2&gt;

&lt;p&gt;One of the main common unexpected charges is related to idle resources. AWS charges for resources that are not actively used, such as idle EC2 instances, RDS databases, and Elastic Load Balancers. These charges can accumulate over time and result in significant bills. To avoid this, you can use AWS Auto Scaling to automatically adjust the number of resources based on demand. You can also use AWS Reserved Instances or Savings Plans to reduce costs by committing to a one-year or three-year term or use Spot Instances for non-critical jobs or workloads.&lt;/p&gt;

&lt;p&gt;Another common source of idle resources is unattached EBS volumes and unused Elastic IPs. To avoid these charges appearing on your bill, create a &lt;a href="https://aws.amazon.com/blogs/mt/controlling-your-aws-costs-by-deleting-unused-amazon-ebs-volumes/"&gt;policy that automatically deletes any unused EBS volumes&lt;/a&gt; or EIPs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Infrastructure Drift
&lt;/h2&gt;

&lt;p&gt;One major cause of &lt;a href="https://www.tailwarden.com/blog/infrastructure-drift-management"&gt;infrastructure drift&lt;/a&gt; is the creation of resources outside of the established IaC tools such as Terraform, CloudFormation, and Pulumi, or without proper approval. When this happens, the infrastructure state is not adequately described or persisted, and the changes made to the infrastructure go unnoticed (aka shadow IT activity).&lt;/p&gt;

&lt;p&gt;Until you have total visibility across your environment and have implemented measures to prevent the use of cloud consoles, infrastructure drift is likely to contribute to your AWS bill.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data requests, transfers, and retrievals
&lt;/h2&gt;

&lt;p&gt;Another unexpected item that can pop up on your AWS bill is related to data transfer. AWS charges for data transfer within the platform, as well as data transfer to and from the internet. Many users are unaware of this charge and end up with significant increases. To avoid this, you can use AWS services in the same region or availability zone, which is usually free of charge. You can also use AWS Direct Connect for data transfer between your data center and AWS, which can significantly reduce data transfer charges.&lt;/p&gt;

&lt;h2&gt;
  
  
  CloudWatch Logs
&lt;/h2&gt;

&lt;p&gt;CloudWatch is the primary source of truth for monitoring the overall health and storing logs of active AWS cloud services. However, it is also notorious for surprise bill spikes due to the complexity of its pricing model.&lt;/p&gt;

&lt;p&gt;The pricing is determined by various factors, such as the number of custom metrics, alarms, and dashboards, logs ingested, stored, and analyzed, and the use of contributor insights rules and synthetics canary runs.&lt;/p&gt;

&lt;p&gt;The most common way of rapidly driving up costs is by leaving the default retention period. This is especially true for AWS Lambda, which creates an automatic log group with an &lt;a href="https://medium.com/@mlabouardy/how-we-reduced-lambda-functions-costs-by-thousands-of-dollars-8279b0a69931"&gt;indefinite retention setting&lt;/a&gt;. It’s also important to use alarms and dashboards for key metrics only that way avoiding unnecessary alerts and visualizations.&lt;/p&gt;

&lt;h2&gt;
  
  
  AWS Free Tier expired or usage exceeds
&lt;/h2&gt;

&lt;p&gt;AWS is pretty generous with free-tier plans but without proper monitoring, you can exceed the free usage limits in a breeze. The good news is you can monitor usage through the &lt;a href="https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/tracking-free-tier-usage.html"&gt;AWS Management Console&lt;/a&gt; and track free tier usage. Any usage beyond the free tier limit or after a free trial has ended is charged at standard rates. To avoid charges, set up alerts to notify you before the free tier expires or usage exceeds the limit.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cu0yvhWW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/v2/resize:fit:700/0%2ARiRoTWJe4TpxWtFF.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cu0yvhWW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/v2/resize:fit:700/0%2ARiRoTWJe4TpxWtFF.png" alt="https://www.reddit.com/r/aws/comments/119admy/300k_bill_after_aws_account_hacked/" width="700" height="613"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;AWS Free Tier usage alerts automatically notify you over email when you exceed 85 percent of your Free Tier limit for each service.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Underutilized Reserved Instances and Savings Plans
&lt;/h2&gt;

&lt;p&gt;When it comes to AWS EC2 costs, there are several recommendations that you can use to save money. One popular approach is to purchase Reserved Instances and Savings Plans. By doing so, companies can potentially save a lot of money on their monthly bills. However, it’s important to note that simply purchasing these plans isn’t enough. In order to fully reap the benefits of Reserved Instances and Savings Plans, you need to make sure that they are being used, monitored, and optimized effectively. Failure to do so can result in unexpected charges and higher costs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dynamic Environments
&lt;/h2&gt;

&lt;p&gt;Elastic Beanstalk is designed to ensure that all necessary resources are running. As a result, it will automatically relaunch any services that you stop. To prevent this, you must terminate your Elastic Beanstalk environment before terminating any resources that Elastic Beanstalk has created.&lt;/p&gt;

&lt;p&gt;Similarly, auto-scaling groups are designed to maintain a minimum number of EC2 instances running. Ensure that you terminate your ASG or update the scaling policies to avoid unexpected charges.&lt;/p&gt;

&lt;h2&gt;
  
  
  Preventing AWS Bill Shock
&lt;/h2&gt;

&lt;p&gt;AWS has many services to help monitor billing. Setting an account-wide budget alert is a relatively easy first line of defense. Secondly, regularly review and tag your resources to identify any unused or idle resources that you can terminate or downsize to reduce costs. Thirdly, use AWS Cost Explorer to analyze and visualize your costs, identify cost trends, and optimize your spending. Finally, take advantage of AWS tools such as CloudWatch and AWS Config to monitor and optimize your resources continuously.&lt;/p&gt;

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

&lt;p&gt;If you’re looking for an all-in-one platform, you can also leverage open-source tools like &lt;a href="https://github.com/tailwarden/komiser"&gt;Komiser&lt;/a&gt; to build your cloud asset inventory, tag resources, set up budget alerts, and &lt;a href="https://www.tailwarden.com/blog/how-to-practice-finops-with-komiser"&gt;bring accountability to cloud spend&lt;/a&gt;.&lt;/p&gt;

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

&lt;p&gt;Unexpected charges on AWS bills can put businesses out of the market. However, with the right practices and tools in place, companies can detect and troubleshoot overspending issues before they ever occur.&lt;/p&gt;

&lt;p&gt;Whether you’re just starting out with AWS or you’re a seasoned DevOps engineer, &lt;a href="https://github.com/tailwarden/komiser"&gt;Komiser&lt;/a&gt; can help you catch potential cost optimization opportunities early, before they become a larger problem.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Regardless if you are a Developer, DevOps, or Cloud engineer. Dealing with the cloud can be tough at times, especially on your own. If you are using Tailwarden or Komiser and want to share your thoughts doubts and insights with other cloud practitioners feel free to join our &lt;a href="https://discord.tailwarden.com/"&gt;&lt;em&gt;Tailwarden discord server&lt;/em&gt;&lt;/a&gt;. Where you will find tips, community calls, and much more.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>programming</category>
    </item>
    <item>
      <title>Manage your OCI resources with Komiser</title>
      <dc:creator>Jake Page</dc:creator>
      <pubDate>Fri, 10 Mar 2023 10:42:42 +0000</pubDate>
      <link>https://forem.com/tailwarden/manage-your-oci-resources-with-komiser-3h25</link>
      <guid>https://forem.com/tailwarden/manage-your-oci-resources-with-komiser-3h25</guid>
      <description>&lt;p&gt;In today's digital world, cloud computing has become an essential tool for businesses of all sizes. Cloud computing allows organizations to access a wide range of computing resources, including storage, networking, security, and databases, without the need for on-premises infrastructure.&lt;/p&gt;

&lt;p&gt;One cloud provider that has gained a lot of attention in recent years is &lt;a href="https://www.oracle.com/cloud/" rel="noopener noreferrer"&gt;Oracle Cloud Infrastructure (OCI)&lt;/a&gt;. OCI is a powerful cloud computing platform that offers a wide range of services to help businesses modernize their IT infrastructure and improve their operations.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why Oracle Cloud Infrastructure (OCI)?
&lt;/h4&gt;

&lt;p&gt;Oracle Cloud Infrastructure is a cloud computing platform that offers a range of services, including compute, storage, networking, security, and database services. OCI is built on a high-performance architecture that is designed to support modern workloads, including big data analytics, artificial intelligence, and machine learning.&lt;/p&gt;

&lt;p&gt;OCI is a reliable, scalable, and secure cloud solution that offers a range of benefits to users. These benefits include:&lt;/p&gt;

&lt;h5&gt;
  
  
  High Performance
&lt;/h5&gt;

&lt;p&gt;OCI offers high-performance computing resources, including fast network connectivity, low-latency storage, and high-speed compute instances. This makes it ideal for running resource-intensive applications that require fast processing and high bandwidth.&lt;/p&gt;

&lt;h5&gt;
  
  
  Security
&lt;/h5&gt;

&lt;p&gt;OCI is built with advanced security features to protect against cyber threats and attacks. The platform provides multiple layers of security, including network isolation, encryption, and identity and access management. This ensures that your data and applications are always protected, even in the event of a security breach.&lt;/p&gt;

&lt;h5&gt;
  
  
  Scalability
&lt;/h5&gt;

&lt;p&gt;OCI offers flexible and scalable infrastructure that can grow and evolve with your business needs. You can quickly scale up or down your resources to meet changing demand, without worrying about hardware limitations. This makes OCI an ideal cloud solution for businesses that need to rapidly scale their operations.&lt;/p&gt;

&lt;h5&gt;
  
  
  Cost-Effective
&lt;/h5&gt;

&lt;p&gt;OCI offers a pay-as-you-go pricing model, which means you only pay for what you use. This can help you save money on infrastructure costs, without compromising on performance or reliability. Additionally, OCI offers a range of pricing options, including monthly and annual subscriptions, so you can choose the pricing model that best suits your business needs.&lt;/p&gt;

&lt;h5&gt;
  
  
  Hybrid Cloud
&lt;/h5&gt;

&lt;p&gt;OCI allows you to seamlessly integrate with on-premises infrastructure or other cloud providers, enabling you to build a hybrid cloud environment that meets your specific business needs. This makes it easy to manage your entire IT infrastructure from a single location, regardless of where your resources are located.&lt;/p&gt;

&lt;p&gt;As with any cloud provider, it can be easy to lose track of spending, and as your team grows, so does your cloud bill. Fortunately, Komiser has now integrated with OCI, giving you a clear view into your cloud infrastructure. With Komiser, you can easily track, organize, and set alerts for your cloud infrastructure activity, making it much easier to manage and be a responsible cloud custodian. To learn how to set up the integration, follow the steps below.&lt;/p&gt;

&lt;h4&gt;
  
  
  Configuration
&lt;/h4&gt;

&lt;p&gt;Use an &lt;strong&gt;OCI user&lt;/strong&gt; and an &lt;strong&gt;API key&lt;/strong&gt; for authentication. In this case, you’ll need to put your tenancy OCID, user OCID, region name, the path to an API key, and the fingerprint of the API key.&lt;/p&gt;

&lt;p&gt;The easiest way is to let OCI walk you through the setup process by executing the following command using the OCI cli:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Download OCI CLI, find instructions &lt;a href="https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/cliinstall.htm" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Foo1xh7qbkz8cnaylkzks.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Foo1xh7qbkz8cnaylkzks.png" alt="OCI setup config command" width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, a config file and key pair have been created in your local &lt;strong&gt;.oci&lt;/strong&gt; folder:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fss4heshvr7p73eyqijgm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fss4heshvr7p73eyqijgm.png" alt="Resulting keys and credentials" width="800" height="567"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since Komiser looks for credentials in a file called credentials. Create a credentials file in the &lt;strong&gt;.oci&lt;/strong&gt; folder and copy the contents of the config file to it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Contents of credentials file
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Foqy6memkly6tcbwlnyvh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Foqy6memkly6tcbwlnyvh.png" alt="Created credentials file" width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Add it to the &lt;strong&gt;config.toml&lt;/strong&gt; file like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fpjlfy3jkxjfwym2uhua3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fpjlfy3jkxjfwym2uhua3.png" alt="Config.toml file" width="800" height="549"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Make sure to update the &lt;strong&gt;path&lt;/strong&gt; to ensure that Komiser has access the credentials file.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Resource inventory view&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;This is the view of the OCI resources in the Komiser dashboard which has been saved in the &lt;strong&gt;OCI Resources&lt;/strong&gt; custom view.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F5mxagghdt22q76mvg6pm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F5mxagghdt22q76mvg6pm.png" alt="Resource inventory page" width="800" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Supported resources
&lt;/h3&gt;

&lt;p&gt;At the time of writing (Komiser v3.0.5) the supported resources for OCI are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Compute &lt;strong&gt;instances&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;  Developer Service &lt;strong&gt;applications&lt;/strong&gt; and &lt;strong&gt;functions&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;  IAM &lt;strong&gt;policies&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;  Oracle Autonomous &lt;strong&gt;Database&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Block&lt;/strong&gt; storage and &lt;strong&gt;buckets&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're an open source contributor looking to contribute to the Komiser project, there are two ways to do so. First, you can open individual issues requesting support for OCI resources that you'd like to see added to Komiser. These issues can be added to the project by visiting &lt;a href="https://github.com/tailwarden/komiser/issues?q=is%3Aopen+is%3Aissue+label%3Aoci" rel="noopener noreferrer"&gt;&lt;strong&gt;this page&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Alternatively, you can add new resources yourself by using the already supported resources as a template. To get started, take a look at the IAM policy integration &lt;a href="https://github.com/tailwarden/komiser/blob/master/providers/oci/iam/policies.go" rel="noopener noreferrer"&gt;&lt;strong&gt;example&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For more detailed guidance on contributing to Komiser, check out this &lt;a href="https://www.tailwarden.com/blog/how-to-contribute-to-komiser?utm_source=blog&amp;amp;utm_medium=refferal&amp;amp;utm_campaign=content" rel="noopener noreferrer"&gt;&lt;strong&gt;guide&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Regardless if you are a Developer, DevOps, or Cloud engineer. Dealing with the cloud can be tough at times, especially on your own. If you are using Tailwarden or Komiser and want to share your thoughts doubts and insights with other cloud practitioners feel free to join our&lt;/em&gt; &lt;a href="https://discord.tailwarden.com/" rel="noopener noreferrer"&gt;Tailwarden discord server&lt;/a&gt;&lt;em&gt;. Where you will find tips, community calls, and much more.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>oracle</category>
      <category>cloud</category>
      <category>cost</category>
      <category>devops</category>
    </item>
    <item>
      <title>How to find all resources in an AWS account</title>
      <dc:creator>LABOUARDY Mohamed</dc:creator>
      <pubDate>Fri, 03 Mar 2023 17:02:01 +0000</pubDate>
      <link>https://forem.com/tailwarden/how-to-find-all-resources-in-an-aws-account-10ag</link>
      <guid>https://forem.com/tailwarden/how-to-find-all-resources-in-an-aws-account-10ag</guid>
      <description>&lt;p&gt;When managing your cloud infrastructure on AWS, it’s important to have a comprehensive understanding of all the resources running in your AWS accounts. It’s crucial to be able to have reliable data and clear insight into areas such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Identifying resources that are idle, unmonitored, or exposed to security threats.&lt;/li&gt;
&lt;li&gt;  Understanding the cost breakdown and coverage of tags.&lt;/li&gt;
&lt;li&gt;  Keeping up-to-date and accurate audit information.&lt;/li&gt;
&lt;li&gt;  Evaluating whether your resources conform to specific governance controls.&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://www.tailwarden.com/blog/infrastructure-drift-management" rel="noopener noreferrer"&gt;Detecting any infrastructure drift&lt;/a&gt; and changes in configurations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without answers to those questions, you open the doors to cost wastage, security threats, and compliance issues.&lt;/p&gt;

&lt;p&gt;This blog post provides guidance on the different tools available that can help you in locating and identifying all resources within your AWS account.&lt;/p&gt;

&lt;h2&gt;
  
  
  AWS Native Services
&lt;/h2&gt;

&lt;p&gt;AWS provides several tools to help you identify and track resources in your account. Each tool has its own pros and cons, as we will see. The key distinction for cloud resource tracking is the scope of the tool and which resources are in its zone. Let’s dive in.&lt;/p&gt;

&lt;h3&gt;
  
  
  AWS Management Console
&lt;/h3&gt;

&lt;p&gt;For anyone working with AWS, the &lt;a href="https://console.aws.amazon.com/" rel="noopener noreferrer"&gt;AWS Management Console&lt;/a&gt; is a good place to begin. It provides access to a wide range of services and features. However, the console’s UI can be challenging to navigate, and it can be overwhelming. Additionally, you should have prior knowledge of the resources you are searching for and their location in the region. Otherwise, you may end up spending several hours browsing through multiple tabs and levels of hierarchy in the AWS Console to find answers to questions such as “What is the number of EC2 instances operating in our Frankfurt region?”&lt;/p&gt;

&lt;h3&gt;
  
  
  AWS Resource Groups
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/ARG/latest/userguide/resource-groups.html" rel="noopener noreferrer"&gt;AWS Resource Groups&lt;/a&gt; is a better alternative to the AWS console. This service enables you to create a custom group of your resources, based on specific criteria such as tags or the resources in an AWS CloudFormation stack. By organizing and consolidating information in this way, you can easily track the resources used by individuals or application teams.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fcuddmku532y0rel1lw2u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fcuddmku532y0rel1lw2u.png" alt="Grouping resources by owner tag" width="700" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s worth noting that the service doesn’t support all AWS services (&lt;a href="https://docs.aws.amazon.com/ARG/latest/userguide/integrated-services-list.html" rel="noopener noreferrer"&gt;AWS services that work with AWS Resource Groups&lt;/a&gt;), as it was not specifically designed for resource discovery. Rather, the service is intended to group resources together based on predetermined tags or CF stack. Therefore, it may not be the best option if you’re looking for a tool to build your asset inventory.&lt;/p&gt;

&lt;h3&gt;
  
  
  AWS Config
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/config/" rel="noopener noreferrer"&gt;AWS Config&lt;/a&gt; is a full-fledged asset inventory. It discovers all your running AWS resources and their configuration history as well as the resource relationships (e.g: find out if an EBS volume is attached to an EC2 instance associated with a security group).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F3grgvvzfnqtkl1fjfe3b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F3grgvvzfnqtkl1fjfe3b.png" alt="List of active resources" width="700" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The service also provides a rules engine that you can use to evaluate the configuration of resources against pre-defined rules or compliance policies. E.g: you can use SQL queries to find resources that are non-compliant AWS resources and export the results to JSON or CSV format for further benchmarks (e.g: &lt;a href="https://www.cisecurity.org/benchmark/amazon_web_services/" rel="noopener noreferrer"&gt;CIS AWS Benchmarks&lt;/a&gt;, &lt;a href="https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-standards-fsbp-controls.html" rel="noopener noreferrer"&gt;AWS Foundational Security Best Practices&lt;/a&gt;, or &lt;a href="https://www.pcisecuritystandards.org/" rel="noopener noreferrer"&gt;PCI DSS&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Despite those features, the AWS Config service does come with certain drawbacks, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  As of the time of writing, AWS Config does not cover all types of resources (A list of supported services can be found &lt;a href="https://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html" rel="noopener noreferrer"&gt;&lt;strong&gt;here&lt;/strong&gt;&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;  The more configuration items generated, the more expensive the service can become (See &lt;a href="https://aws.amazon.com/config/pricing/" rel="noopener noreferrer"&gt;pricing&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;  AWS Config is best suited for AWS resources. Therefore, users operating in multi-cloud environments and organizations seeking configuration visibility for SaaS assets may require additional tools.&lt;/li&gt;
&lt;li&gt;  The service is not enabled by default, so users need to set it up in all regions for all their AWS accounts. For those with a considerable number of AWS accounts, this can result in significant effort.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  AWS Cost Explorer and CloudWatch
&lt;/h3&gt;

&lt;p&gt;It is also a good idea to take a look at Cost explorer once in a while and check whether we are charging our account unnecessarily. Billing information cannot provide a complete picture. But you can use the AWS Cost Explorer to slice your AWS cost by both AWS services, regions, and tags (if enabled). This can give you a starting point of where to further explore manually with AWS Config or Resource Explorer.&lt;/p&gt;

&lt;p&gt;You can also leverage AWS CloudWatch to identify which resources are generating metrics so no resource goes untracked.&lt;/p&gt;

&lt;h3&gt;
  
  
  AWS Resource Explorer
&lt;/h3&gt;

&lt;p&gt;AWS Resource Explorer is a service released last year that allows you to explore and discover the resources in your AWS account. It allows you to view, search, and filter the resources across all regions and services in your AWS account. The service is free of charge, making it a great alternative to other resource discovery mechanisms, such as AWS Config.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fhqu9f6hhq58tnwc4cak9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fhqu9f6hhq58tnwc4cak9.png" alt="List of untagged resources" width="700" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Resource Explorer was built with cross-region support from the very beginning. However, the list of resource types that can be discovered with Resource Explorer is quite short and does not support searching across multiple accounts inside an organization (It only works on an AWS account scope).&lt;/p&gt;

&lt;p&gt;As such, you may want to consider alternative options that are more user-friendly and offer a more intuitive way to manage your resources on AWS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Komiser
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/tailwarden/komiser" rel="noopener noreferrer"&gt;Komiser&lt;/a&gt; is an open-source cloud-agnostic asset inventory. It integrates with multiple cloud providers, builds a cloud asset inventory, and helps you break down your cost at the resource level.&lt;/p&gt;

&lt;p&gt;Komiser comes with a resource inventory feature where you can have an active resource inventory of all your cloud resources along with relevant information such as source account, region, cost, and the tags that are applied to it. You can analyze cloud resource utilization and costs based on specific criteria, such as teams, applications, or cost centers. This approach enables the creation of custom views for engineering, finance, and product teams and promotes accountability for cloud expenses.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F7icnzbx5v46misf8p297.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F7icnzbx5v46misf8p297.png" alt="Multi-cloud asset inventory" width="700" height="348"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you’re moving to a multi-cloud model, you would need a single place where you can manage all your cloud resources. By integrating with several cloud service providers (currently supporting AWS, Azure, Oracle, DigitalOcean, Civo, Tencent Linode, Kubernetes, and Scaleway), Komiser can swiftly generate your cloud asset inventory. This allows you to utilize its powerful filter system to uncover idle resources and wasted costs across all your cloud accounts and regions. Consequently, supported resources have nowhere to hide, and there is no way they will slip under the radar. As soon as the resource inventory is fetched, all regions will show exactly what they are holding. The resources come to you in a sense, so there’s no more tab switching or console hoping to make sure you didn’t miss anything.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Famc03uo4zs7vvpnjl7bd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Famc03uo4zs7vvpnjl7bd.png" alt="Cost breakdown" width="700" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Having an asset inventory of your AWS resources is crucial to uncover optimization opportunities and answering questions about your infrastructure. AWS has some good services but as the number of resources increases and you shift toward multi-cloud you might want to check out something like Komiser that does it all.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Regardless if you are a Developer, DevOps, or Cloud engineer. Dealing with the cloud can be tough at times, especially on your own. If you are using Komiser and want to share your thoughts doubts and insights with other cloud practitioners feel free to join our &lt;a href="https://discord.tailwarden.com/" rel="noopener noreferrer"&gt;&lt;em&gt;Tailwarden discord server&lt;/em&gt;&lt;/a&gt;. Where you will find tips, community calls, and much more.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>softwaredevelopment</category>
      <category>productivity</category>
      <category>career</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Drift management in cloud infrastructure</title>
      <dc:creator>LABOUARDY Mohamed</dc:creator>
      <pubDate>Wed, 22 Feb 2023 17:15:31 +0000</pubDate>
      <link>https://forem.com/tailwarden/drift-management-in-cloud-infrastructure-5c5a</link>
      <guid>https://forem.com/tailwarden/drift-management-in-cloud-infrastructure-5c5a</guid>
      <description>&lt;p&gt;Over the past few years, the number of infrastructure services has grown, and more applications are being released to production on a daily basis while infrastructure needs to be able to be spun up, scaled, and taken down frequently. The adoption of CI/CD and DevOps practices emphasizes the importance of having similar runtime environments. Without an Infrastructure as Code (IaC) practice in place, it becomes increasingly difficult to manage the scale of today’s average infrastructure environment.&lt;/p&gt;

&lt;p&gt;IaC safeguards the entire process of cloud provisioning and ensures consistency across different environments by codifying and documenting configuration specifications. IaC tools like Terraform helped the dev and ops teams align as they both use the same description of application deployment. In an ideal world, you want everything to be managed by your IaC stack but expectations do not always line up with reality, resources are still being provisioned manually or through the cloud provider’s consoles, causing infrastructure drift and a growing number of untracked assets.&lt;/p&gt;

&lt;p&gt;Understanding the resources that are not managed by IaC in the cloud is a challenge and finding whether they remain in the same configuration defined in the code is yet another task. This blog post will explore the various tools available for detecting and managing infrastructure drift.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s Infrastructure Drift
&lt;/h2&gt;

&lt;p&gt;Infrastructure drift occurs when the configuration of the infrastructure deviates from its intended or documented state. This deviation can be attributed to several factors such as human error, lack of automation, manual intervention, applications making unwanted changes, changes applied to some environments but not propagated to others, and so on, leading to inconsistencies in the infrastructure. Additionally, CI/CD workflows can result in failed pipelines, causing the infrastructure state to become corrupted, leading to orphaned resources and drift.&lt;/p&gt;

&lt;p&gt;One major cause of infrastructure drift is the creation of resources outside of the established IaC tools such as Terraform, CloudFormation, and Pulumi. When this happens, the infrastructure state is not adequately described or persisted, and the changes made to the infrastructure go unnoticed. This opens the door to security vulnerabilities, wasted costs, and compliance issues.&lt;/p&gt;

&lt;p&gt;In some cases, there may be production incidents or emergencies that require quick action, and manual adjustments to the infrastructure via web consoles may be necessary to achieve a better state as soon as possible (and keep the customers satisfied). However, this becomes a problem when those changes are not backported to Terraform which often stems from poor education on best IaC practices, loose access permissions, and a lack of proper communication regarding the infrastructure management process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it’s bad
&lt;/h2&gt;

&lt;p&gt;Infrastructure drift can have a significant impact on the reliability, security, and cost-effectiveness of the infrastructure. One major issue caused by infrastructure drift is the wastage of cloud resources, which can lead to increased costs. Drifting can result in the creation of duplicate resources or the failure to delete unused ones, leading to an unoptimized cloud environment.&lt;/p&gt;

&lt;p&gt;Furthermore, infrastructure drift can pose a significant threat to the security of the infrastructure. Inconsistent configurations can make the infrastructure vulnerable to security breaches and data leaks. Such inconsistencies can lead to essential resources unintentionally being made publicly accessible, and unsecured resources may go unnoticed. However, if changes to infrastructure were made through IaC, it would be possible to set up compliance policies and security controls, preventing or mitigating issues such as an S3 bucket being accessible to the public and making sure all resources are properly tagged.&lt;/p&gt;

&lt;p&gt;Infrastructure fragmentation is another problem that can arise from infrastructure drift. As the infrastructure becomes more complex, it becomes more difficult to track all resources and changes. This can lead to situations where development teams are unaware of production environment changes, which can cause applications to crash and deployment projects to fail unexpectedly. Moreover, when the IaC tool does not cover the entire infrastructure, it can cause discrepancies between the different environments, leading to inconsistent behavior. This inconsistency can be particularly problematic between the development, staging, and production environments.&lt;/p&gt;

&lt;p&gt;Without a single, shared source of truth, intentional infrastructure changes to remediate incidents could be reverted or temporary changes left unnoticed, wasting thousands of dollars in monthly costs due to unused resources.&lt;/p&gt;

&lt;p&gt;Cloud workloads undergo frequent changes as more workloads and services are deployed to the infrastructure, resulting in more developers and authenticated services interacting with the infrastructure across various cloud environments and providers. Drift is inevitable, just like incidents, and is a part of the infrastructure’s life cycle. Therefore, it’s crucial to be able to easily and quickly detect and possibly revert drift.&lt;/p&gt;

&lt;h2&gt;
  
  
  Drift Management
&lt;/h2&gt;

&lt;p&gt;Preventing and resolving infrastructure drift is crucial to maintain the stability and security of the infrastructure. Increasing the adoption of IaC is one of the most effective ways to prevent infrastructure drift. Teams should ensure that a greater percentage of the infrastructure is managed by IaC and leverage code versioning, code reviews, static analysis, automated tests, and so on.&lt;/p&gt;

&lt;p&gt;When resources are created using IaC tools, drift can be detected and resolved promptly. For instance, running a command like “terraform plan” can reveal any drift in resources described in the Terraform files.&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%2Fmiro.medium.com%2Fmax%2F700%2F0%2A0zIZ2ovBAxtbpulO.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%2Fmiro.medium.com%2Fmax%2F700%2F0%2A0zIZ2ovBAxtbpulO.png" alt="Terraform drift detection"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the screenshot above, we can see that the EC2 instance owner has changed outside of Terraform which is drift.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;CloudFormation has a built-in&lt;/em&gt; &lt;a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/detect-drift-stack.html" rel="noopener noreferrer"&gt;&lt;em&gt;drift detection&lt;/em&gt;&lt;/a&gt; &lt;em&gt;feature that can be used either via the AWS Console or via the AWS CLI command.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Regular testing and monitoring are also critical to detect and resolve any issues that may arise due to infrastructure drift. Open-source tools like &lt;a href="https://github.com/snyk/driftctl" rel="noopener noreferrer"&gt;driftctl&lt;/a&gt;, &lt;a href="https://github.com/tenable/terrascan" rel="noopener noreferrer"&gt;terrascan&lt;/a&gt;, and &lt;a href="https://cloudcustodian.io/" rel="noopener noreferrer"&gt;cloud custodian&lt;/a&gt; can also be leveraged to detect all changes outside of regular IaC workflow and ensure prompt remediation.&lt;/p&gt;

&lt;p&gt;In addition to tracking infrastructure changes, it is crucial to track who is provisioning what, where, and how often. This is especially important since it can be challenging to track those changes across multiple cloud providers and accounts, and manually checking provisioned resources can be time-consuming. Tools like &lt;a href="https://github.com/tailwarden/komiser" rel="noopener noreferrer"&gt;Komiser&lt;/a&gt; can be used to build a queryable asset inventory and get a clear picture of the cloud infrastructure. Komiser can detect the drift of managed resources and unmanaged resources in multi-cloud environments, which can be brought under control to maintain consistency and prevent security risks.&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%2Fmiro.medium.com%2Fmax%2F700%2F0%2AYeH2VGhS3LkOqD6A.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%2Fmiro.medium.com%2Fmax%2F700%2F0%2AYeH2VGhS3LkOqD6A.png" alt="Cloud asset inventory"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After loading the cloud assets into the Komiser dashboard, teams can use filters and views to query the inventory and identify any unmanaged resources. This feature enables you to efficiently manage your cloud infrastructure and ensure that all resources are tracked and appropriately accounted for through your IaC workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cloud Resource Coverage
&lt;/h2&gt;

&lt;p&gt;In addition to the previous points, it is important to regularly schedule drift detection checks to identify any changes that may have occurred. For instance, an hourly check may be appropriate for detecting any changes in IAM roles, while a daily check may suffice for less critical cloud services. Additionally, to minimize the possibility of infrastructure drift due to manual changes, it is recommended to follow the Least Privilege Principle and restrict permissions to cloud practitioners only for necessary tasks. This approach reduces the number of individuals who can make manual changes to the infrastructure.&lt;/p&gt;

&lt;p&gt;In summary, preventing infrastructure drift requires a proactive approach, and a combination of practices and tools can be leveraged to achieve this goal. By increasing IaC adoption, regularly testing and monitoring the infrastructure, and leveraging tools like driftctl and Komiser, teams can detect and resolve drift promptly, maintain consistency, and prevent security risks and bill shocks.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Regardless if you are a Developer, DevOps, or Cloud engineer. Dealing with the cloud can be tough at times, especially on your own. If you are using Tailwarden or Komiser and want to share your thoughts doubts and insights with other cloud practitioners feel free to join our &lt;a href="https://discord.tailwarden.com/" rel="noopener noreferrer"&gt;&lt;em&gt;Tailwarden discord server&lt;/em&gt;&lt;/a&gt;. Where you will find tips, community calls, and much more.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>terraform</category>
      <category>cloud</category>
    </item>
    <item>
      <title>How to practice FinOps with Komiser</title>
      <dc:creator>LABOUARDY Mohamed</dc:creator>
      <pubDate>Mon, 20 Feb 2023 16:49:28 +0000</pubDate>
      <link>https://forem.com/tailwarden/how-to-practice-finops-with-komiser-4akn</link>
      <guid>https://forem.com/tailwarden/how-to-practice-finops-with-komiser-4akn</guid>
      <description>&lt;p&gt;Financial Operations (FinOps) is a critical aspect of cloud computing that helps organizations to manage their cloud resources effectively and efficiently. With the increasing popularity of cloud computing, the importance of FinOps has only increased (&lt;a href="https://www.cio.com/article/404314/94-of-enterprises-are-overspending-in-the-cloud-report.html"&gt;94% of enterprises overspend&lt;/a&gt; in the cloud), as organizations look to reduce their cloud spend and make the most of their investments in cloud infrastructure.&lt;/p&gt;

&lt;p&gt;Despite the increasing concerns around cloud costs, there has yet to be a single tool that comprehensively manages and helps to remediate excessive cloud expenses. As a result, teams continue to depend on a mix of native cloud provider tools, third-party platforms, and Google Sheets.&lt;/p&gt;

&lt;p&gt;According to the &lt;a href="https://data.finops.org/"&gt;State of FinOps 2022&lt;/a&gt; report, teams are still struggling with the following challenges:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ncokAyLg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/0%2A3jBgV9mBzSRhQpYQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ncokAyLg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/0%2A3jBgV9mBzSRhQpYQ.png" alt="Key FinOps Challenges" width="880" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;FinOps is a cultural discipline that involves collaboration among finance, engineering, product, and management. The open-source model can facilitate this collaboration and cover the long tail of cloud providers and services. That’s where &lt;a href="https://github.com/tailwarden/komiser"&gt;Komiser&lt;/a&gt; comes in as a way to address cloud cost management concerns in today’s multi-cloud environments. It offers insight into cloud resource consumption and expenses, making it a valuable tool for organizations practicing FinOps.&lt;/p&gt;

&lt;p&gt;In this post, we’ll explore how to use Komiser to empower engineers to optimize their cloud spend while following the &lt;a href="https://www.finops.org/framework/principles/"&gt;FinOps principles&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cost Allocation
&lt;/h2&gt;

&lt;p&gt;Cost allocation is a crucial component of FinOps. Komiser enables cost allocation to individual projects, teams, or departments, which simplifies the tracking of resource usage and its associated expenses. This information can be used to set budgets, track costs, and identify areas where costs can be optimized. For example, if you see that one team is consistently using more EC2 instances than others, you can work with that team to identify opportunities for optimization.&lt;/p&gt;

&lt;p&gt;By utilizing a tagging strategy, you can analyze cloud resource utilization and costs based on specific criteria, such as teams, applications, or cost centers. This approach enables the creation of personalized views that promote accountability for cloud expenses.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eKQx9f1K--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6qg5vd9dfvtd00z0vxcn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eKQx9f1K--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6qg5vd9dfvtd00z0vxcn.png" alt="Creating a view with a list of resources created by the Frontend team" width="880" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a great way to show your teams what they’re spending and why and see the impact of their actions on the monthly bill.&lt;/p&gt;

&lt;h2&gt;
  
  
  Multi-cloud Cost Reporting
&lt;/h2&gt;

&lt;p&gt;As you’re moving to a multi-cloud model, you would need a single place where you can manage all your cloud resources. By integrating with several cloud service providers, Komiser can swiftly generate your cloud asset inventory. This allows you to utilize its powerful filter system to uncover idle resources and wasted costs across all your cloud accounts and regions.&lt;/p&gt;

&lt;p&gt;Komiser takes cloud cost management to the next level. Firstly, it gives you visibility into the cloud unit economics that are relevant to you, rather than focusing on a specific cloud vendor. Additionally, it enables you to tag resources across multiple providers and regions using a single interface, which can uncover dormant resources and reduce unnecessary costs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fn6xCsfY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/0%2AZQHEs9wAPEMgiEPq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fn6xCsfY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/0%2AZQHEs9wAPEMgiEPq.png" alt="Cloud resources deployed in different providers&amp;lt;br&amp;gt;
" width="880" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Komiser provides multi-cloud platform support, including AWS, DigitalOcean, OCI, Tencent, Linode, and Civo, with GCP and Azure support to be added soon. It also supports containerization solutions like Kubernetes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Uncovering Idle Resources
&lt;/h2&gt;

&lt;p&gt;Komiser provides detailed information on resource utilization, including information on the types of resources being used, the number of resources being used, and the costs associated with each resource. This information can be used to identify opportunities for cost optimization, such as underutilized resources or resources that can be scaled down to reduce costs.&lt;/p&gt;

&lt;p&gt;By assigning human-readable labels to cloud resources, teams can use tagging to increase visibility and make smarter budget allocations. With Komiser’s bulk tagging feature, tags can be efficiently applied to a group of resources provisioned in various providers and regions without leaving the Komiser dashboard.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Qix-zfvG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/0%2AAMyVyX0w5vpM8gJF.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Qix-zfvG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/0%2AAMyVyX0w5vpM8gJF.png" alt="Filtering resources by environment&amp;lt;br&amp;gt;
" width="880" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With resources being accurately identified by tags, you can gain a comprehensive understanding of your cloud costs, pinpoint resources that are either redundant or aren’t being used, and identify potential opportunities to save money.&lt;/p&gt;

&lt;h2&gt;
  
  
  Shared Costs Tracking
&lt;/h2&gt;

&lt;p&gt;A key aspect of FinOps is that every team member is responsible for their cloud usage. The calculation of the total cost of ownership requires transparency and accuracy, but unallocated shared costs obstruct these factors. If shared costs are not properly divided, engineers and product managers do not have a complete understanding of the actual cost of their apps. To improve visibility into shared resources such as databases, logging, k8s, enterprise support, etc., developers can categorize shared resources and allocate budget, as well as create custom views that separate these shared resources from the rest of the team’s views.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5YkL-Eck--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/0%2AzlbP2L-C6Maxc2vk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5YkL-Eck--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/0%2AzlbP2L-C6Maxc2vk.png" alt="Hide shared resources&amp;lt;br&amp;gt;
" width="880" height="524"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Cost Trends Analysis
&lt;/h2&gt;

&lt;p&gt;It’s important to keep an eye on cost trends over time. Komiser provides information on cost trends, including total costs, cost per resource, per team, or tags. This information can be used to identify cost spikes or patterns in resource usage that may indicate an opportunity for optimization. For example, if you see a sudden increase in costs for the frontend team, it may be a good time to review your CDN utilization and see if there are any opportunities to reduce costs.&lt;/p&gt;

&lt;p&gt;Komiser cost explorers go beyond native tools like AWS Cost Explorer to provide full-funnel cost visibility across your cloud environment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xhBC3qPX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/0%2A8u__HblhiF5W_r_i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xhBC3qPX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/0%2A8u__HblhiF5W_r_i.png" alt="Komiser cost explorer widget&amp;lt;br&amp;gt;
" width="880" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Budget Monitoring
&lt;/h2&gt;

&lt;p&gt;In order to stay on top of costs and ensure that resources are being used effectively, it’s important to set alerts in Komiser. Slack alerts can be set to notify you when costs reach a certain threshold, or when resources are being used more than expected. This can help you to catch potential cost optimization opportunities early before they become larger problems.&lt;/p&gt;

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

&lt;p&gt;Although Komiser can serve as a good starting point for enabling FinOps within your organization, there is still room for improvement in terms of features. We’re collaborating with the open-source community and cloud leaders to work on the following enhancements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Automatic resource scaling, right-sizing of instances, RI coverage, and other cost optimization recommendations.&lt;/li&gt;
&lt;li&gt;  Forecasting based on past cloud usage to anticipate future demand and identify areas for investment.&lt;/li&gt;
&lt;li&gt;  Additional support for cloud providers and SaaS platforms.&lt;/li&gt;
&lt;li&gt;  Container cost reporting through OpenCost.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Join our &lt;a href="http://discord.tailwarden.com/"&gt;Discord community&lt;/a&gt; or visit the &lt;a href="https://github.com/tailwarden/komiser"&gt;Komiser repository&lt;/a&gt; to find a good first issue and help us create the future for DevOps where the cloud is transparent and collaborative.&lt;/p&gt;

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

&lt;p&gt;Developing a FinOps culture takes time, but it is essential for creating a sustainable business model. With the right strategy and tools, such as Komiser, you can automate cloud cost management, address complex edge cases, and set higher performance goals. By building a cloud asset inventory, tracking usage and costs, and setting custom alerts, organizations can optimize their cloud infrastructure and make the most of their investments.&lt;/p&gt;

&lt;p&gt;Whether you’re just starting out with cloud computing or are an experienced user, &lt;a href="https://github.com/tailwarden/komiser"&gt;Komiser&lt;/a&gt; is a valuable tool for practicing FinOps and optimizing cloud spend.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Regardless if you are a Developer, DevOps, or Cloud engineer. Dealing with the cloud can be tough at times, especially on your own. If you are using Tailwarden or Komiser and want to share your thoughts doubts and insights with other cloud practitioners feel free to join our &lt;a href="https://discord.tailwarden.com/"&gt;&lt;em&gt;Tailwarden discord server&lt;/em&gt;&lt;/a&gt;. Where you will find tips, community calls, and much more.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>cloud</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Manage Kubernetes objects all in one place with Komiser</title>
      <dc:creator>Jake Page</dc:creator>
      <pubDate>Wed, 15 Feb 2023 14:25:00 +0000</pubDate>
      <link>https://forem.com/tailwarden/manage-kubernetes-objects-all-in-one-place-with-komiser-3eb2</link>
      <guid>https://forem.com/tailwarden/manage-kubernetes-objects-all-in-one-place-with-komiser-3eb2</guid>
      <description>&lt;h3&gt;
  
  
  The cloud observability problem
&lt;/h3&gt;

&lt;p&gt;Managing and optimizing cloud resources is crucial to maximizing their effectiveness, and the right tools can make all the difference when trying to avoid vendor lock-in and tailoring solutions specifically to you. However, many cloud providers struggle to offer a unified and straightforward management platform that works across different cloud environments.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/tailwarden/komiser" rel="noopener noreferrer"&gt;Komiser&lt;/a&gt; is an open-source cloud cost optimization tool that can help with this challenge. It provides insights into the costs associated with different regions, managed services, and individual resources, making it a valuable addition to any cloud environment. But not only that, Komiser's Kubernetes integration offers even greater visibility into the Kubernetes clusters running on compute instances, allowing users to create custom views that dynamically update to reflect the current state of their microservice resources.&lt;/p&gt;

&lt;p&gt;With Komiser, you can easily gain a complete picture of your cloud cost and usage by leveraging one easy-to-use tool. Komiser offers cloud-agnostic transparency for cost and resource utilization, making it a valuable addition to any cloud environment, regardless of the cloud provider.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Kubernetes?
&lt;/h3&gt;

&lt;p&gt;Kubernetes is the present and future of container orchestration. It's a platform that allows you to automate the deployment, scaling, and management of your containerized applications. With Kubernetes, you can build, test, and deploy your applications faster and more reliably. No more manual updates or tedious scripting, Kubernetes does it all for you.&lt;/p&gt;

&lt;p&gt;The benefits of Kubernetes are numerous and undeniable. For starters, it increases efficiency and productivity. By automating tasks, developers can focus on writing code and building great products. Kubernetes also provides a level of consistency and reliability that's unparalleled. No more worrying about different environments causing bugs or crashes, Kubernetes ensures your application runs the same way, every time. And let's not forget about scalability. Kubernetes makes it easy to scale your applications up or down, on-demand. So, whether you're running a small blog or a massive enterprise application, Kubernetes has got you covered.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kubernetes configuration
&lt;/h3&gt;

&lt;p&gt;Komiser now integrates with Kubernetes and takes cloud management to the next level. With this integration, you can now view your Kubernetes objects in the Komiser dashboard, providing complete transparency into your cluster. This gives you the ability to bundle your objects (Deployments, Ingress, Pods, PersistentVolumes, PersistentVolumeClaims, ServiceAccounts, and Services) into custom views, alongside other cloud resources, making it easier to understand and manage your cloud spending. By having all of your resources in one place, you can make informed decisions about how to optimize your costs and ensure that your cluster is running as efficiently as possible. The integration of Komiser with Kubernetes streamlines cloud management and empowers organizations to effectively manage their cloud costs and resources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Adding kubeconfig to the configuration file&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In this example, I’ll be integrating Komiser with three EKS clusters I have deployed to my AWS account.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Easily integrate your Kubernetes clusters by adding a block to the &lt;strong&gt;&lt;em&gt;config.toml&lt;/em&gt;&lt;/strong&gt; file as follows:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuploads-ssl.webflow.com%2F6373a295d370a41a1a802e8c%2F63ebb8c28d30ae081f0b7517_ray-so-export%2520%281%29.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuploads-ssl.webflow.com%2F6373a295d370a41a1a802e8c%2F63ebb8c28d30ae081f0b7517_ray-so-export%2520%281%29.png" alt="config.toml file" width="800" height="631"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Above we are integrating three separate Kubernetes accounts named &lt;strong&gt;“my-demo-cluster”&lt;/strong&gt;, &lt;strong&gt;“my-demo-staging-cluster”&lt;/strong&gt; and &lt;strong&gt;“my-demo-production-cluster”&lt;/strong&gt;. Add the path to each individual &lt;strong&gt;kubeconfig&lt;/strong&gt; file and you are all set.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;At present, the sole means of cluster integration offered by Komiser's Kubernetes support (&lt;strong&gt;v1&lt;/strong&gt;) is by directly inputting each individual &lt;strong&gt;kubeconfig&lt;/strong&gt; containing the cluster credentials. In the future, we will add support for adding all clusters to the same &lt;strong&gt;kubeconfig&lt;/strong&gt; file and you will be able to load the file once and subsequently choose the cluster profile in each configuration block.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can locate your &lt;strong&gt;kubeconfig&lt;/strong&gt; file at &lt;strong&gt;~/.kube/config&lt;/strong&gt; on your local machine.&lt;/p&gt;

&lt;p&gt;View of my Kubernetes resources in the Komiser dashboard, which I saved in a &lt;strong&gt;Kubernetes&lt;/strong&gt; &lt;strong&gt;resources&lt;/strong&gt; custom view:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fqm3nwpwp81ymh1nidghg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fqm3nwpwp81ymh1nidghg.png" alt="View Kubernetes objects in Komiser" width="800" height="458"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  AWS Configuration
&lt;/h3&gt;

&lt;p&gt;To take it a step further, we can update the configuration file to include the AWS account where the Kubernetes clusters we're tracking are located. This enables us to track and manage not only the Kubernetes objects but also the general AWS resources on which the clusters run.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Ff8jqk6zm4jih0lf456x3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Ff8jqk6zm4jih0lf456x3.png" alt="Updated config.toml file (Includes AWS config)" width="800" height="797"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By running this configuration, we can see that the resource inventory page now fetches additional AWS resources, providing us with a more complete picture of our cloud environment. With this enhanced visibility, we can create even more comprehensive custom views and gain greater transparency into our cloud resources.&lt;/p&gt;

&lt;h3&gt;
  
  
  Resource inventory view
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fv1lyloeos1bql4gwxqyh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fv1lyloeos1bql4gwxqyh.png" alt="Komiser view of AWS and K8s resources" width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Self-hosting Komiser in a Kubernetes cluster
&lt;/h3&gt;

&lt;p&gt;If you want to self-host Komiser in a Kubernetes cluster, you can use the official Komiser &lt;a href="https://github.com/tailwarden/helm" rel="noopener noreferrer"&gt;Helm chart&lt;/a&gt; to deploy it to any type of Kubernetes cluster. Although the documentation focuses on deploying to an AWS EKS cluster, you can use it to deploy to any other Kubernetes cluster as well.&lt;/p&gt;

&lt;h4&gt;
  
  
  Tutorial Video
&lt;/h4&gt;

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

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Regardless if you are a Developer, DevOps, or Cloud engineer. Dealing with the cloud can be tough at times, especially on your own. If you are using Tailwarden or Komiser and want to share your thoughts doubts and insights with other cloud practitioners feel free to join our&lt;/em&gt; &lt;a href="https://discord.tailwarden.com/" rel="noopener noreferrer"&gt;Tailwarden discord server&lt;/a&gt;&lt;em&gt;. Where you will find tips, community calls, and much more.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ai</category>
      <category>privacy</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Why we made Komiser open source</title>
      <dc:creator>LABOUARDY Mohamed</dc:creator>
      <pubDate>Thu, 09 Feb 2023 13:06:05 +0000</pubDate>
      <link>https://forem.com/tailwarden/why-we-made-komiser-open-sourcea-3k4e</link>
      <guid>https://forem.com/tailwarden/why-we-made-komiser-open-sourcea-3k4e</guid>
      <description>&lt;h2&gt;
  
  
  Lost in the clouds
&lt;/h2&gt;

&lt;p&gt;The rise of cloud computing has brought about a number of benefits for businesses of all sizes. From increased speed and flexibility to cost savings and improved security, the cloud has proven to be a valuable asset for many organizations. While the advancement of cloud paradigms like CaaS and FaaS with the integration of Kubernetes and Serverless has made it easier to scale applications without worrying about the underlying infrastructure or vendor lock-in. The widespread use of CI/CD practices and Infrastructure as Code tools has made it much easier to generate and replicate cloud resources across various providers and regions.&lt;/p&gt;

&lt;p&gt;Despite the benefits, the cloud computing landscape can be complex and confusing. With the vast array of options available, including multiple pricing models, instance types, storage solutions, and more, along with the widespread adoption of Kubernetes and Serverless, it can be difficult to select the appropriate resources for specific applications and precisely calculate their expenses. Furthermore, the fragmentation of cloud infrastructure across multiple cloud accounts, regions, and providers also leads to a lack of clarity and security, with the existence of dormant, untracked, and idle resources exacerbating these problems.&lt;/p&gt;

&lt;p&gt;This is not a new issue, it has been a pain point for several years.&lt;/p&gt;

&lt;h2&gt;
  
  
  There’s still pain left
&lt;/h2&gt;

&lt;p&gt;A few years ago, while serving as the Head of DevOps at a deep tech startup, I faced the challenge of managing a multi-cloud infrastructure to handle billions of data points daily. Our cloud expenses were rapidly increasing and reached thousands of dollars a day just on AWS, with resources scattered across multiple regions and accounts. Our developers utilized various methods to create cloud resources, such as Cloud Consoles, Dockerfiles, Helm Charts, Jenkinsfiles, Terraform templates, etc., causing infrastructure drift and a growing number of assets that were hard to keep track of. It was difficult to gain a comprehensive understanding of all assets without spending hours searching through multiple AWS Console tabs and layers of hierarchy to answer questions like “How many EC2 instances are running in our Frankfurt region?”&lt;/p&gt;

&lt;p&gt;The growth in infrastructure complexity has led to an increase in the number of cloud services used, including compute, storage, and network, among others, each with its own unique pricing structure. This complexity makes it challenging to estimate cloud costs using traditional methods such as spreadsheets. The pressure to deliver results, coupled with the lack of visibility into cloud costs, put DevOps engineers, SREs, and developers at risk of facing backlash from management when unexpected “bill shock” occurs and reaches the CFO.&lt;/p&gt;

&lt;p&gt;To address the challenges mentioned, I started by creating a comprehensive view of our cloud resources and their associated costs. Unable to find an existing tool to achieve this, I developed a basic dashboard called &lt;a href="https://github.com/tailwarden/komiser" rel="noopener noreferrer"&gt;Komiser&lt;/a&gt; that scans all AWS regions for cloud resources and presents the information in a clear and easy-to-understand format. This gave us complete visibility into all our resources from a single location, making it easier to manage them and avoid costly mistakes. Although the tool was basic, it saved us countless hours of sifting through complex billing statements and reduced the need for frequent context switching.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fmr95o4dlme2leleoa0mf.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fmr95o4dlme2leleoa0mf.jpeg" alt="Ended up creating what is known today as a cloud asset inventory tool." width="800" height="455"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once we got the full visibility of our resources as well as the breakdown of their cost and location. We started tagging resources of the cloud environments, giving developers much more visibility and empowering them to take accountability for their cloud spending.&lt;/p&gt;

&lt;p&gt;We end up saving thousands of dollars not by implementing an AI-driven cost-saving model but simply by having visibility and taking control of our infrastructure. In addition, our comprehensive inventory knowledge ensured that all assets were properly secured and adhered to the latest security configurations and best practices. This involved monitoring for vulnerabilities, establishing appropriate access controls, and implementing effective network security policies. This gave us a deeper understanding of the entire potential attack surface.&lt;/p&gt;

&lt;p&gt;The tool was &lt;a href="https://github.com/tailwarden/komiser" rel="noopener noreferrer"&gt;open-sourced&lt;/a&gt; and become a cloud-agnostic with the support of major cloud providers. Upon release, it gained popularity and my colleague Cyril and I noticed that many organizations shared similar challenges, particularly regarding limited visibility into their infrastructure and related tools. To address this challenge, we launched &lt;a href="http://tailwarden.com/" rel="noopener noreferrer"&gt;Tailwarden&lt;/a&gt;, an open-core company founded on the principles of Komiser and built on an open-source model. Our aim is to empower developers by improving transparency and collaboration in the cloud. Our mission is to put control of the cloud into the hands of developers by tackling one of the most pressing issues in the space.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Open-source
&lt;/h2&gt;

&lt;p&gt;We have made Komiser an open-source project due to the significant shift towards open-source software and the numerous advantages it offers in terms of quality, security, and innovation. As Marc Andreessen famously said, “Software is eating the world” and Open Source is now eating software. With the growing number of cloud providers, services, and cloud-native tools, it is challenging to keep up with the wide range of platforms used by developers using a closed-source model. For example, just from re:Invent 2022, AWS introduced 119 new services and features.&lt;/p&gt;

&lt;p&gt;Open source is the best approach to tackle the complexity of cloud providers and give developers control over their cloud infrastructure. By opening up Komiser to the open-source community, we gain access to the collective knowledge and expertise of developers from around the world. This enables us to tackle the complexity of supporting a vast array of services and cloud providers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fny9lxfc0wzetpxhqhf5y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fny9lxfc0wzetpxhqhf5y.png" alt="Discover all your resources in one place and query them visually" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;OSS is built on the foundation of transparency. This aligns with our core values and helps us establish trust with our users. The open-source model ensures accountability and promotes continuous improvement, as our code is openly accessible for review and critique. Unlike closed-source software, where technical debts and flaws may be hidden, open-source software demands the highest quality output. While transparency can be challenging at times, as it puts us under a microscope, it ultimately results in the best possible outcome.&lt;/p&gt;

&lt;p&gt;We aim to provide a cloud-agnostic platform that empowers the next generation of developers to build applications without worrying about hidden costs, security issues, or orphaned resources. We believe that with the help of our users and contributors, we can make cloud management easier for everyone.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where we’re today
&lt;/h2&gt;

&lt;p&gt;Today, Komiser has a growing community of users, with over 3000 stars on GitHub, 3 million downloads, and a thriving community of contributors on &lt;a href="https://discord.tailwarden.com/" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The tool has proven to be a valuable asset for many developers, helping them to better understand their cloud resources and costs, and making it easier to manage their cloud infrastructure.&lt;/p&gt;

&lt;p&gt;You can shape the future of DevOps by &lt;a href="https://www.tailwarden.com/blog/how-to-contribute-to-komiser" rel="noopener noreferrer"&gt;contributing to the project&lt;/a&gt;, or by providing feedback, be it through &lt;a href="https://github.com/tailwarden/komiser" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;, through the #feedback channel on our &lt;a href="https://discord.tailwarden.com/" rel="noopener noreferrer"&gt;Discord server&lt;/a&gt;, or by testing existing and new features.&lt;/p&gt;

&lt;h2&gt;
  
  
  The future of DevOps
&lt;/h2&gt;

&lt;p&gt;Companies are moving to the cloud rapidly and building their entire infrastructure on Cloud providers and SaaS tools. If teams don’t have a single place to manage all of this complexity, they can’t see the big picture. Eventually leaving key insights and opportunities untapped.&lt;/p&gt;

&lt;p&gt;Komiser is an essential tool for anyone looking to manage their cloud resources effectively. With its cloud-agnostic approach and open-source model, it can help you better understand your cloud costs and make it easier to manage your resources.&lt;/p&gt;

</description>
      <category>devmeme</category>
      <category>watercooler</category>
    </item>
  </channel>
</rss>
