<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Harinder Seera 🇭🇲</title>
    <description>The latest articles on DEV Community by Harinder Seera 🇭🇲 (@harinderseera).</description>
    <link>https://dev.to/harinderseera</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F634431%2F684b863e-7ad2-4ac0-bf33-51816af61d69.jpeg</url>
      <title>DEV Community: Harinder Seera 🇭🇲</title>
      <link>https://dev.to/harinderseera</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/harinderseera"/>
    <language>en</language>
    <item>
      <title>From Bedroom Disasters to Cloud Resilience: Explaining AWS DR Strategies To Anyone</title>
      <dc:creator>Harinder Seera 🇭🇲</dc:creator>
      <pubDate>Sun, 10 Dec 2023 22:47:11 +0000</pubDate>
      <link>https://dev.to/aws-builders/from-bedroom-disasters-to-cloud-resilience-explaining-aws-dr-strategies-to-anyone-406g</link>
      <guid>https://dev.to/aws-builders/from-bedroom-disasters-to-cloud-resilience-explaining-aws-dr-strategies-to-anyone-406g</guid>
      <description>&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; While this article simplifies DR strategies, it's important to remember that DR is a complex topic with many nuances.&lt;/p&gt;

&lt;p&gt;In recent years, I've come to realise that concepts many of us in information technology take for granted aren't always common knowledge among everyone working in the technology industry. It highlights an ongoing need in the tech industry to explain complex ideas clearly to broad audiences with little to no exposure to the ever-evolving technology world.&lt;/p&gt;

&lt;p&gt;I have recently started writing &lt;a href="https://www.linkedin.com/pulse/aws-zoo-everyone-can-navigate-cloud-jungle-harinder-seera-n4kdf/?lipi=urn%3Ali%3Apage%3Ad_flagship3_pulse_read%3BTcvzrYpyRW6midN%2Fcwtpkw%3D%3D"&gt;articles&lt;/a&gt; to explain complex ideas in a way everyone can easily understand. My goal is to make technical subjects understandable to anyone. In this article, I aim to explain Amazon Web Services (AWS) disaster recovery strategies through a household analogy. By relating cloud computing concepts to familiar scenarios, I hope to present AWS concepts in a simple yet insightful way for all readers. I hope to bridge knowledge gaps and demystify cloud technology for the non-techie person. &lt;/p&gt;

&lt;p&gt;To begin with, below are different DR strategies that can be implement in an AWS cloud. Namely:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Backup and Restore&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pilot Light&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Warm Standby&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Multi-site Active/Active&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Multi AZ deployment&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tTPrNXDm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pjo7hwi28n6uvj8ypk9x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tTPrNXDm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pjo7hwi28n6uvj8ypk9x.png" alt="Image description" width="800" height="360"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/whitepapers/latest/disaster-recovery-workloads-on-aws/disaster-recovery-options-in-the-cloud.html"&gt;Ref&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now we will go through the house analogy to explain them individually. We will start with the Multi AZ deployment strategy.&lt;/p&gt;

&lt;h1&gt;
  
  
  Single AWS Region - Multi AZ Deployment Strategy
&lt;/h1&gt;

&lt;p&gt;If you are wondering what a region is, I have written an article called "&lt;a href="https://www.linkedin.com/pulse/aws-zoo-everyone-can-navigate-cloud-jungle-harinder-seera-n4kdf/?lipi=urn%3Ali%3Apage%3Ad_flagship3_pulse_read%3BzEI4a33MRze8QV%2Ft7FdnEw%3D%3D"&gt;AWS Is A Zoo: Anyone Can Navigate the Cloud Jungle!&lt;/a&gt;" It explains what a region is using the Zoo analogy.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--usVvawPS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9bznn9k47teusmumgktg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--usVvawPS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9bznn9k47teusmumgktg.png" alt="Image description" width="660" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Back to our DR strategy, Imagine you have a house with three bedrooms. You and your partner occupy one room, while your two kids have their separate rooms. Unfortunately, while you were all out for dinner, the roof of one of your child's bedrooms collapses (as shown in the image above). Luckily, as your house has three rooms, with some adjustments like moving a bed or using an air mattress, your children can share a room temporarily while the repairs are being made to the other room. You won't have to make many changes to address the issue of where your kid would sleep.&lt;/p&gt;

&lt;p&gt;This scenario resembles having a single AWS region with multiple Availability Zones (AZ). In case of a disaster such as a natural calamity or a technical failure that destroys one physical data centre (AZ), having your workload distributed across various Availability Zones within the same AWS Region can assist you in weathering the storm, whether it's a natural disaster or a technical glitch. If one of the AZs is unavailable, at least your workload can continue operating in the other AZs.&lt;/p&gt;

&lt;h1&gt;
  
  
  Multi AWS Region Strategy
&lt;/h1&gt;

&lt;p&gt;Let's imagine you have two homes: a primary residence and a vacation home. These will be used to explain the remaining AWS disaster recovery strategies.&lt;/p&gt;

&lt;h2&gt;
  
  
  Backup and Restore Strategy
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--x4ghQjSS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3toc4lz8vglqdk6bl3du.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--x4ghQjSS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3toc4lz8vglqdk6bl3du.jpg" alt="Image description" width="800" height="535"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In your primary house, you have a fireproof vault where you regularly keep copies of your important documents such as birth certificate, driving licence and passport. In the event of a fire, you can retrieve these documents to identify yourself or use them for other purposes, such as home insurance claims.&lt;/p&gt;

&lt;p&gt;Similarly, on AWS, the back and restore (DR) strategy involves regularly backing up your data to the cloud. This involves regularly backing up your data to the cloud. In the event of any disasters, you can use these backups to restore lost data and applications. This strategy can be applied to both single-region and multi-region implementations. For a single region, you can copy the data to a different account, while for a multi-region, you can copy the data into your secondary region and retrieve it when needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pilot Light Strategy
&lt;/h2&gt;

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

&lt;p&gt;Imagine a vacation home that you plan to use only occasionally. It's not fully furnished or equipped for daily living; it has a minimal/basic structure in place, just like in the picture above. You could make it habitable with some effort, but it's not ready for immediate occupancy.&lt;/p&gt;

&lt;p&gt;This analogy closely resembles the pilot light disaster recovery (DR) strategy on AWS. The infrastructure in the recovery region is minimalistic, similar to the basic structure of a vacation home. It provides the core components needed to run your applications but lacks the fully configured environment required for production workloads. When a disaster occurs, you must provision additional resources, configure applications, and perform other manual tasks before the recovery region can fully handle production traffic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Warm Standby Strategy
&lt;/h2&gt;

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

&lt;p&gt;With the warm standby approach, your vacation home is fully built but needs to be fully furnished and stocked. It is ready for immediate use, though it may not have all the amenities and personal touches of your primary residence.&lt;/p&gt;

&lt;p&gt;Similarly, the warm standby DR strategy on AWS involves maintaining a scaled down, but fully functional, copy of your production environment in the recovery region. This replica is kept up-to-date with data changes, but it may not be running at full capacity or serving all application components. When a disaster occurs, you can quickly failover to recovery region, minimising downtime.&lt;/p&gt;

&lt;h2&gt;
  
  
  Multi-Site Active/Active Strategy
&lt;/h2&gt;

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

&lt;p&gt;With the active/active approach, both your primary residence and vacation home are fully equipped and ready for daily use. You can comfortably switch between them depending on your needs or preferences. You can have your family living in your vacation home while you reside in your primary home or vice versa.&lt;/p&gt;

&lt;p&gt;The multi-site active/active DR strategy on AWS mirrors this concept. You have two production environments running simultaneously in different regions, each serving a portion of your application traffic. This strategy offers the highest availability and lowest recovery time objective but comes with the highest cost and complexity.&lt;/p&gt;

&lt;h1&gt;
  
  
  Closing Thoughts
&lt;/h1&gt;

&lt;p&gt;In this article, I aimed to explain key AWS disaster recovery concepts in an easy-to-understand manner. By comparing cloud computing strategies to everyday household scenarios, my goal was to make complex technical ideas simple and accessible. Though concepts such as Availability Zones and recovery time objectives may be familiar to those with a technology background, they can be challenging for those without a tech background. &lt;/p&gt;

&lt;p&gt;I hope that these simplified explanations shed light on AWS disaster recovery in a way that resonates with everyone. If this piece has helped demystify even one core concept for you, then it has achieved its purpose.&lt;/p&gt;




&lt;p&gt;Thanks for reading!&lt;/p&gt;

&lt;p&gt;If you enjoyed this article, feel free to share it on social media 🙂&lt;/p&gt;

&lt;p&gt;Say Hello on: &lt;a href="https://www.linkedin.com/in/hpseera"&gt;Linkedin&lt;/a&gt; | &lt;a href="https://twitter.com/HarinderSeera"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Github repo: &lt;a href="https://github.com/hseera"&gt;hseera&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>resilience</category>
      <category>cloud</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Observability - Licencing Challenges and Tips To Consider</title>
      <dc:creator>Harinder Seera 🇭🇲</dc:creator>
      <pubDate>Sun, 10 Dec 2023 22:35:54 +0000</pubDate>
      <link>https://dev.to/harinderseera/observability-licencing-challenges-and-tips-to-consider-3dfd</link>
      <guid>https://dev.to/harinderseera/observability-licencing-challenges-and-tips-to-consider-3dfd</guid>
      <description>&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; The information I am sharing is based on my personal experience and may differ from the experiences of others.&lt;/p&gt;

&lt;p&gt;In many of my past roles, whether as a new team member or as a consultant, I wasn't actively involved in the negotiating process of acquiring or renewing monitoring or observability tools. However, in recent years, I've been actively involved in the process, such as Request for Information (RFI), Request for Proposal (RFP), and Request for Quote (RFQ).&lt;/p&gt;

&lt;p&gt;For those unfamiliar with these processes, they can be complex and challenging due to various factors. Understanding these factors is crucial for navigating the license renewal process or acquiring a new observability tool for your organisation.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Varied Pricing Models -&lt;/strong&gt; Observability vendors offer different pricing models that can include per-host, per-container, per-metric, per-active service, per-GB of data ingested, and per-user, among others. This wide range of pricing models can make it challenging to compare prices among vendors and determine the right tool that fits your requirements and budget. Compared to other types of tools I have used, observability tools have the most diverse pricing models. I have previously &lt;a href="https://www.linkedin.com/pulse/observability-vendor-pricing-models-harinder-seera/"&gt;written a post&lt;/a&gt; that outlines which vendor uses which pricing model.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Unpredictable Data Volume -&lt;/strong&gt; The volume of observability data can significantly vary based on application usage, traffic patterns, and external factors like an organisation's maturity stage. Startups and growing organisations with acquisitions and mergers may experience unpredictable data volume growth. This variability makes it challenging to estimate costs when negotiating pricing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hidden Costs and Overage Fees -&lt;/strong&gt; Some vendors may have hidden costs, such as data retention fees, add-on charges for advanced features, or overage fees for exceeding usage limits. These hidden costs can inflate the overall cost of observability, complicating accurate cost forecasting. This was another point I covered in my previous post.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Lack of Transparency -&lt;/strong&gt; Pricing structures can be complex and opaque, making it difficult to understand what you are paying for and how usage translates into costs. This lack of transparency can lead to confusion and frustration, especially when unexpected charges arise. In recent times, I have observed that vendors are taking steps to make the pricing structures more transparent.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Contractual Complexity -&lt;/strong&gt; This challenge is not unique to observability tools but applies to other types of services as well. Contracts can be comprehensive and intricate, including different pricing terms, usage limitations, and service-level agreements. It is essential to fully grasp these contractual terms to avoid any unexpected situations and ensure that your organisation's expectations are met. For example, some organisations may have data residency limitations, which can create licensing difficulties. If your organisation has legal and risk teams, it is advisable to have them review the contract.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Education -&lt;/strong&gt; Different teams (for example sourcing) involved in the process may be familiar with pricing models such as per-user or per-host licensing, as these are some of the most common pricing models used in the industry. However, observability tools often employ alternative pricing models or, in some cases, a combination of different pricing models. This necessitates team training on the diverse pricing structures of observability tools. Moreover, the complexity of observability tool pricing further complicates the education process for the teams. For example Per-GB pricing for ingested data may be based on the number of spans, events, and traces ingested. It is important to educate teams on what these terms mean so they are better equipped for future and also can help you negotiate a positive outcome.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Below are some of the tips you can consider when trying to address some of these challenges, whether you are renewing a tool or acquiring.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Requirements -&lt;/strong&gt; It is important to clearly define your observability needs and the features required to address them based on the type of process you are undertaking. For instance, the level of detail you will need to communicate with the vendor will differ in an RFI process compared to an RFQ or RFP process. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Request Detailed Pricing Breakdowns -&lt;/strong&gt; Seek detailed pricing breakdowns from vendors, clearly outlining all costs, including base fees, add-on features, data retention fees, overage fees, and any other applicable charges. And ask as many questions as you can to make sure the pricing breakdown makes sense.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Negotiate Flexible Terms -&lt;/strong&gt; Explore negotiating flexible pricing terms that better align with your organisation's usage patterns and growth projections. This could involve tiered pricing plans, volume discounts, or adjustments based on usage. For example you may have a tiered pricing based on the amount of data you ingest. For the initial 100GB, the rate is set at $100 per GB, while for the subsequent 100GB to 200GB range, the pricing adjusts to $90 per GB.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Evaluate Open-Source Alternatives -&lt;/strong&gt; Consider looking into open-source observability tools as an alternative. Although they may require more effort to set up and maintain, they can help you save on licensing costs. However, keep in mind that operational costs may increase. It is essential to exercise caution when exploring this option. This could be a viable choice for startups not in a position early on to invest in licensing costs for an observability tool.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Regularly Review Usage and Costs -&lt;/strong&gt; Monitor your observability tools' usage and associated costs closely. Identify areas to optimise usage and reduce costs by adjusting data retention settings, avoiding unnecessary data transmission, modifying default signal settings, or renegotiating contract terms if usage patterns change significantly. Partner with a vendor who understands your business and is responsive to changes impacting costs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Pricing Model -&lt;/strong&gt; Wherever applicable, I advise to maintain a consistent pricing model across your organisation. For instance, if you are using the same tool, it is better to have a uniform pricing model for all departments instead of having different pricing models for different departments. This approach can help avoid complexities during contract renegotiation, as you won't have to deal with multiple pricing models.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cloud Provider Observability Solution -&lt;/strong&gt; Consider leveraging the observability solution offered by your cloud provider (i.e. AWS, Azure, Google). Many organisations benefit from volume discounts through enterprise agreements, which can significantly reduce costs. Additionally, most cloud providers utilise pay-as-you-go pricing, ensuring you only pay for the resources you utilise.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Hopefully this post has given you things that you need to consider and steps you can take when acquiring or renewing an observability tool.&lt;/p&gt;




&lt;p&gt;Thanks for reading!&lt;/p&gt;

&lt;p&gt;If you enjoyed this article, feel free to share it on social media 🙂&lt;/p&gt;

&lt;p&gt;Say Hello on: &lt;a href="https://www.linkedin.com/in/hpseera"&gt;Linkedin&lt;/a&gt; | &lt;a href="https://twitter.com/HarinderSeera"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Github repo: &lt;a href="https://github.com/hseera"&gt;hseera&lt;/a&gt;&lt;/p&gt;

</description>
      <category>observability</category>
      <category>cloud</category>
      <category>monitoring</category>
      <category>aws</category>
    </item>
    <item>
      <title>AWS Is A Zoo: Anyone Can Navigate the Cloud Jungle!</title>
      <dc:creator>Harinder Seera 🇭🇲</dc:creator>
      <pubDate>Mon, 20 Nov 2023 09:55:58 +0000</pubDate>
      <link>https://dev.to/aws-builders/aws-is-a-zoo-anyone-can-navigate-the-cloud-jungle-3mfb</link>
      <guid>https://dev.to/aws-builders/aws-is-a-zoo-anyone-can-navigate-the-cloud-jungle-3mfb</guid>
      <description>&lt;p&gt;In my line of work, I often run into people who aren't familiar with AWS. It's understandable; cloud computing is an immense and constantly evolving realm. This adds a challenging yet fascinating aspect to my job, pushing me to think creatively and find effective ways to explain AWS concepts that resonate with everyone.&lt;/p&gt;

&lt;p&gt;In this article, I'm going to use a simple analogy to illustrate some fundamental AWS concepts. By the end, I hope that even those with no prior AWS experience will have a basic grasp of the key terms. So next time someone is talking about different regions and availability zones and how AWS handles resilience, you won't need to ponder what an availability zone is.&lt;/p&gt;

&lt;p&gt;For this illustration, we'll use Australia as an example. However, you can replace Australia with any other country or continent, too, for explanation purposes.&lt;/p&gt;

&lt;h2&gt;
  
  
  AWS: The Animal Kingdom Analogy
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--saAJR8rX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/osu0gc22dx1fpbx85yax.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--saAJR8rX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/osu0gc22dx1fpbx85yax.jpg" alt="Image description" width="800" height="541"&gt;&lt;/a&gt;&lt;br&gt;
Picture Australia as a vast and diverse continent, a thriving animal kingdom teeming with unique creatures and experiences that offer a wealth of opportunities for kids and families to explore and enjoy. In a similar vein, Amazon Web Services (AWS) stands as the world's most comprehensive and widely adopted cloud platform, delivering over 200 fully featured services from data centers located across the globe.&lt;/p&gt;

&lt;h2&gt;
  
  
  Regions: The States and Territories of the Animal Kingdom
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Y4V0d47k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rpjb3hlmy7v7fkva705d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Y4V0d47k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rpjb3hlmy7v7fkva705d.png" alt="Image description" width="351" height="249"&gt;&lt;/a&gt;&lt;br&gt;
Australia, as a continent and, in this case, as an animal kingdom, is divided into states and territories, each with its own laws, governance, and unique characteristics. Similarly, AWS is divided into regions, which are distinct geographical areas spread across the globe.&lt;/p&gt;

&lt;h2&gt;
  
  
  Availability Zones: The Zoos of Each State or Territory
&lt;/h2&gt;

&lt;p&gt;Within each region, there are Availability Zones, which are like individual zoos. These Availability Zones are geographically separate from each other, providing redundancy and fault tolerance. If one Availability Zone goes down, the others will still be operational, ensuring that your cloud applications remain available. This analogy is similar to Victoria state having four zoos: &lt;em&gt;Healesville Sanctuary, Kyabram Fauna Park, Melbourne Zoo, and Werribee Open Range Zoo.&lt;/em&gt; If one zoo is temporarily unavailable on any given day, parents can still take their children to the other zoos. Typically, an AWS Region will have at least three Availability Zones.&lt;/p&gt;

&lt;h2&gt;
  
  
  AWS Services: The Animal Enclosures
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QDQ1Gjtn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z9ajj270m3o8dck9y299.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QDQ1Gjtn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z9ajj270m3o8dck9y299.png" alt="Image description" width="410" height="246"&gt;&lt;/a&gt;&lt;br&gt;
Just as the Melbourne Zoo houses a variety of animals (Elephants, Lions, Tigers, and Wombats, to name a few), each with its own enclosure (just like the above image), AWS offers a wide range of services that organizations can use to build their cloud-based solutions. These services, such as EC2, S3, CloudWatch, and Lambda Functions, are like the building blocks. Think of different animal enclosures in a Zoo as different AWS services available in a region.&lt;/p&gt;

&lt;h2&gt;
  
  
  Individual Resources: The Specific Animals
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--F6c9ovqD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lljjzyx9h24wejyczg9n.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--F6c9ovqD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lljjzyx9h24wejyczg9n.jpg" alt="Image description" width="480" height="288"&gt;&lt;/a&gt;&lt;br&gt;
AWS resource is an entity that you can work with. They are like the animals within a zoo enclosure. For example, an application might require two EC2 resources and one S3 resource, just like seeing two elephants and one lion in the Melbourne Zoo, just like the picture above. Each resource serves a distinct purpose, contributing to the overall functionality of the cloud-based system.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common AWS Services Explained Using the Zoo and Animal Analogy
&lt;/h2&gt;

&lt;p&gt;Here are some of the most common AWS services explained using the zoo and animal analogy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Elastic Compute Service (EC2) and Instance types:&lt;/strong&gt; EC2 is like lions in an enclosure. Instance types are like lions, lionesses, and cubs, each with its own characteristics. You have compute, memory, and general-purpose instance types to name a few. AWS EC2 is an on-demand computing service on the AWS cloud platform.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Simple Storage Service (S3):&lt;/strong&gt;  Amazon S3 stores and retrieves any amount of data at any time, from anywhere on the web. Think of this as food storage for animals in a zoo.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Identity and Access Management (IAM):&lt;/strong&gt; IAM is like the security system of the zoo. It controls who has access to different areas, ensuring only authorized users can enter specific enclosures. AWS IAM lets you define individual users with permissions across AWS resources and enables Multi-Factor Authentication for privileged accounts, including options for software- and hardware-based authenticators.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AWS CloudWatch:&lt;/strong&gt; Think of it as the zookeeper who monitors the animals' health, behavior, and interactions. They track key metrics like food consumption patterns, growth rate, and activity level. Amazon CloudWatch monitors your Amazon Web Services (AWS) resources and the applications you run on AWS in real-time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AWS Lambda Functions (Serverless):&lt;/strong&gt; Think of this service as a special event in a zoo. Consider a portable ice cream stall that appears on a scorching summer day, delighting visitors with refreshing treats. As the day concludes and temperatures cool, the stall vanishes, leaving no trace of its presence. Similarly, AWS Lambda functions pop up when needed, executes the required code efficiently and then terminates until the next invocation.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By drawing parallels between the familiar world of a zoo and the intricacies of AWS, I hope to make cloud computing more approachable for newcomers. By understanding the fundamental concepts of regions, Availability Zones, and services, you can confidently engage in discussions about AWS without feeling overwhelmed. As your cloud computing knowledge expands, you'll be able to delve deeper into AWS's vast and ever-evolving ecosystem and come up with different metaphors to explain the concepts better than I did.&lt;/p&gt;

&lt;p&gt;After reading the article, Can you think of other AWS services that can be explained using zoo analogy?&lt;/p&gt;




&lt;p&gt;Thanks for reading!&lt;/p&gt;

&lt;p&gt;If you enjoyed this article, feel free to share it on social media 🙂&lt;/p&gt;

&lt;p&gt;Say Hello on: &lt;a href="https://www.linkedin.com/in/hpseera"&gt;Linkedin&lt;/a&gt; | &lt;a href="https://twitter.com/HarinderSeera"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Github repo: &lt;a href="https://github.com/hseera"&gt;hseera&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>beginners</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Overcoming Butterflies</title>
      <dc:creator>Harinder Seera 🇭🇲</dc:creator>
      <pubDate>Thu, 09 Nov 2023 09:40:48 +0000</pubDate>
      <link>https://dev.to/aws-builders/overcoming-butterflies-29ho</link>
      <guid>https://dev.to/aws-builders/overcoming-butterflies-29ho</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; "...His palms are sweaty, knees weak, arms are heavy
         There's vomit on his sweater already, mom's spaghetti
        He's nervous, but on the surface, he looks calm and ready..." 
                       - Eminem (from Lose Yourself song)

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

&lt;/div&gt;



&lt;p&gt;I have a little experience in public speaking, primarily in person. I only do one or two public speaking engagements yearly, but I do virtual speaking more often. Whenever I have to speak in public, I get nervous, and my palms become sweaty, my knees weak, and my arms heavy - just like in the lyrics of Eminem's song "Lose Yourself." I start having butterflies in my stomach. &lt;/p&gt;

&lt;p&gt;In this post, I want to share my experience presenting at the AWS Community Summit in Thailand last year. I presented to over 120 people from different countries and was surprised to find myself feeling relaxed. Looking back and thinking about it now, a few things helped me. Some of them were intentional, and others were not.&lt;/p&gt;

&lt;p&gt;I hope this post will inspire you to take the risk of public speaking, and hopefully, you can leverage some of the things I outlined below to help you deliver your speech in person.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Practice, practice, practice!&lt;/strong&gt; - Each talk was allotted 20 minutes. As a speaker, I needed to rehearse my speech and enhance my delivery to stay within the given time. I made it a daily routine to practice my speech early in the morning, multiple times in front of the mirror while timing myself. With each run-through, I aimed to improve my delivery.  I found that structuring my slides in a clear and concise way helped me to stay on track during the actual talk. Practicing multiple times meant that my words flowed naturally without hesitation when it came time to speak.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Meet And Greet&lt;/strong&gt; - On the first day of our arrival, we had a welcome dinner for all the attendees. During dinner, I took the opportunity to converse with as many people as possible. This was not intentional. Looking back, the act of meeting as many people as possible transformed my scary 'public' speaking into a more natural, relaxed 'personal' speaking. It was as if I was talking to my friends. I also had the opportunity to explore the city with other attendees, which helped me become more comfortable around them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Rehearsal Opportunity&lt;/strong&gt; - As a speaker, I was allowed to rehearse my speech early in the morning in an empty room. This allowed me to check my slide deck and ensure it would appear correctly on the screen. This opportunity also helped me get a feel for the room and visualize myself on stage, all while avoiding the anxiety that comes with having a crowd of people watching. I didn't want to find myself in a situation where I was unable to use the clicker properly in front of an audience.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Eating light&lt;/strong&gt; - I was scheduled to give a talk on the last day of the summit, after lunch. To ensure that I gave the best talk possible, I decided to follow the advice of several articles and avoid eating a large meal beforehand. I found that eating light helped me stay focused and prevented my vocal cords from being affected by any beverages I consumed. At the same time, I made sure not to skip a meal entirely, as I didn't want my stomach to start rumbling during my talk. Overall, it was a wise decision to eat light.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Arriving Early&lt;/strong&gt; - I arrived early in the room where I was scheduled to speak after lunch. The room was quiet and empty as the audience was still having lunch. This allowed me to get on the stage again and feel the space. Moreover, I had a chance to speak with the AWS team, who were assisting all the speakers and ensuring that the event went smoothly. Talking with them helped me feel more confident and relaxed. They reassured me that I would be alright, and I just had to get on the stage and enjoy the moment. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Starting With A Story&lt;/strong&gt; - Starting my talk with a story turned out to be incredibly helpful, especially during the first few minutes when I was trying to gain control of my nerves. Although I still felt a little anxious, it wasn't to the extent that I started shaking or forgetting what I needed to say. Additionally, it helped grab audience attention after lunch. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Having an Anchor&lt;/strong&gt; - During my presentation, I ensured that I established a connection with the audience by making eye contact. However, I found myself looking back at the table where my friends from Australia and New Zealand were seated, as they were my anchor point to calm my nerves. Despite making eye contact with everyone in the room, I regularly looked at their table to help myself feel at ease.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;"Blue Screen Of Death" And Just Breath&lt;/strong&gt; - It's important to remember that even the most successful people experience setbacks. For example, Bill Gates famously experienced the Blue Screen of Death. So, instead of being hard on myself, I asked myself, "What could potentially go wrong?" Remember that even if I messed up, the world will keep spinning and I will still get another opportunity. There will always be a next time to do better, so take comfort in that. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;I have had multiple chances to speak in front of the public ever since. With each opportunity, I observed a significant improvement in my skills and a growing ability to reflect on areas that require further growth.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Thoughts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If someone like me, who is usually shy at public speaking, can do it, you can do it, too. &lt;strong&gt;&lt;em&gt;Don't be afraid to try it, as it may not be as scary as you think. I am going to end the post with&lt;/em&gt;&lt;/strong&gt;...&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"...You only get one shot, do not miss your chance to blow.
       This opportunity comes once in a lifetime..." 
             - Eminem (from Lose Yourself song)

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

&lt;/div&gt;






&lt;p&gt;Thanks for reading!&lt;/p&gt;

&lt;p&gt;If you enjoyed this article feel free to share on social media 🙂&lt;/p&gt;

&lt;p&gt;Say Hello on: &lt;a href="https://www.linkedin.com/in/hpseera" rel="noopener noreferrer"&gt;Linkedin&lt;/a&gt; | &lt;a href="https://twitter.com/HarinderSeera" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Github repo: &lt;a href="https://github.com/hseera" rel="noopener noreferrer"&gt;hseera&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>publicspeaking</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Icicle Graphs - Easy Way To Visualize Cloud Cost Hierarchical Relationships</title>
      <dc:creator>Harinder Seera 🇭🇲</dc:creator>
      <pubDate>Mon, 31 Jul 2023 10:28:35 +0000</pubDate>
      <link>https://dev.to/aws-builders/icicle-graphs-easy-way-to-visualize-cloud-cost-hierarchical-relationships-35im</link>
      <guid>https://dev.to/aws-builders/icicle-graphs-easy-way-to-visualize-cloud-cost-hierarchical-relationships-35im</guid>
      <description>&lt;p&gt;Thanks to &lt;a href="https://www.brendangregg.com/flamegraphs.html"&gt;Brendan Gregg's work&lt;/a&gt; in visualizing stack traces, flame graphs have become a popular tool for analysing performance. They provide a simple and intuitive way to understand complex data by showing the relationship between function calls and resource consumption. The graph makes it easier to identify areas of improvement and optimize various systems, from CPU and memory to I/O subsystems. Flame graphs have significantly impacted software performance engineering, enabling developers to fine-tune their applications. Similarly, there is a need for a similar approach to tackle the challenge of managing Cloud costs across &lt;a href="https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html"&gt;multiple accounts&lt;/a&gt;, teams and resource usage.&lt;/p&gt;

&lt;p&gt;Managing cloud costs can be challenging, especially when it comes to understanding the hierarchical relationships between accounts, resources, and team/cost centers. While there are cloud cost management tools that help visualize cloud costs and identify areas of overspending, they often fall short when it comes to displaying this information clearly and comprehensively. It becomes even more challenging when multiple teams work across different services and manage them across different accounts. But don't worry - there's a solution! Icicle graphs are a powerful tool that can be leveraged to break down cloud costs hierarchically, making it easier to understand and manage your spending.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;What is an Icicle Graph?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Icicle graphs, a type of rectangular sector visualization, are variation of flame graphs. They are highly effective in presenting hierarchical data that flows from the root to the leaves in four directions: up, down, left, or right. With this feature, icicle graphs make it easier to identify clusters and comprehend their hierarchy level. Moreover, these graphs are great in recognizing relationships in data.&lt;/p&gt;

&lt;p&gt;It is worth noting that icicle graphs may not be the most suitable option for visualizing large hierarchies as it can be challenging to examine individual data points in detail. However, when dealing with smaller hierarchies such as AWS cloud bill across multiple accounts, these graphs are incredibly effective and particularly useful in identifying correlations and clusters within the data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;AWS Bill Visualization Example Using Icicle Graph&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Below is an example of hierarchical cost data of AWS services. It can become challenging if you want to identify cost patterns and relationships across different dimension. This is where visualization such as Icicle graphs become useful.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--l4XhyT-Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ha7sp7wcf4t2n1auk5je.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--l4XhyT-Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ha7sp7wcf4t2n1auk5je.png" alt="Image description" width="728" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check out visualization below of cloud costs using an icicle graph to show hierarchical relationships. The leftmost node represents the organization, and it has five child nodes representing the accounts (LinkedAccount1 to LinkedAccount5) sorted by the highest spend account at the top. Each account node then breaks down further to AWS product/service nodes, with the service that had the highest spent at the top. This pattern continues until you get to the usage type, allowing for a clear breakdown of cloud costs.&lt;/p&gt;

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

&lt;p&gt;Here is the video visualizing the AWS cloud bill using icicle graph.&lt;/p&gt;

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

&lt;/h2&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

&lt;p&gt;If you enjoyed this article feel free to share on social media 🙂&lt;/p&gt;

&lt;p&gt;Say Hello on: &lt;a href="https://www.linkedin.com/in/hpseera"&gt;Linkedin&lt;/a&gt; | &lt;a href="https://twitter.com/HarinderSeera"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Github repo: &lt;a href="https://github.com/hseera"&gt;hseera&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cost</category>
      <category>aws</category>
      <category>observability</category>
      <category>visualization</category>
    </item>
    <item>
      <title>AWS CloudWatch Dashboard Builder - How To Use Guide</title>
      <dc:creator>Harinder Seera 🇭🇲</dc:creator>
      <pubDate>Wed, 04 Jan 2023 09:03:46 +0000</pubDate>
      <link>https://dev.to/aws-builders/aws-cloudwatch-dashboard-builder-how-to-use-guide-final-post-1fep</link>
      <guid>https://dev.to/aws-builders/aws-cloudwatch-dashboard-builder-how-to-use-guide-final-post-1fep</guid>
      <description>&lt;p&gt;This is the last post in the CloudWatch Dashboard Builder series. In this post I walk you through on how to use the tool. I recommend you read the post on &lt;a href="https://dev.to/aws-builders/aws-cloudwatch-dashboard-builder-how-to-use-guide-30ej"&gt;namespace template&lt;/a&gt; if you haven't already. It will help you better comprehend the tool. You will also be able to create your own namespace template for use with the tool. &lt;/p&gt;

&lt;h2&gt;
  
  
  Download
&lt;/h2&gt;

&lt;p&gt;The executable for the AWS CloudWatch Dashboard Builder can be found &lt;a href="https://github.com/hseera/cloudwatch-dashboard-builder/blob/main/cloudwatch_dashboard_builder.zip" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If you like the tool, please &lt;strong&gt;rate&lt;/strong&gt; it on github. Also, if you &lt;strong&gt;spot a bug&lt;/strong&gt;, please file an issue so that I can fix it. Make sure to download the latest version of executable as it may have new updates.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Workbench Configuration
&lt;/h2&gt;

&lt;p&gt;When you run the &lt;strong&gt;CloudWatch Dashboard Builder&lt;/strong&gt; executable, you will be presented with the Config screen.&lt;/p&gt;

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

&lt;p&gt;In the tool, you have two options for connecting to AWS services using credentials. The first step is to manually enter credentials on the configuration tab. Another option is to keep your credentials in the following location on your Windows PC.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/Users/[username]/.aws&lt;/code&gt;&lt;/p&gt;

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

&lt;p&gt;For the article, we'll enter our credentials into the text box and connect. &lt;/p&gt;

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

&lt;p&gt;Once the connection is established, select the "Cloudwatch Dashboard Builder" tab. Here and the "Namespace Query Template" tab is where the magic happens. The following are the various components that comprise the screen. &lt;/p&gt;

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

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

&lt;p&gt;A namespace is a container for CloudWatch metrics. Metrics in different namespaces are isolated from each other. Namespace list is automatically populated when "Cloudwatch Dashboard Builder" tab is clicked. List can also be refreshed by right clicking on the list and selecting "Refresh Namespace".&lt;/p&gt;

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

&lt;p&gt;A template is a namespace-contained container for CloudWatch metrics. Each namespace template reports on distinct metrics. Click on the namespace in the namespace list to see a list of all the templates in that namespace. For example, when you select an SQS namespace, it displays two different metric templates for it.&lt;/p&gt;

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

&lt;p&gt;The template detail describes what the purpose of the template is. What is it meant to report? It also shows the template query that is associated with it. For example, selecting the "Top 10 queues by age" template gives you detail about the template and the SQL query associated with it.&lt;/p&gt;

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

&lt;p&gt;The region name displays a list of all AWS regions that are available around the world. To view the list, click the &lt;strong&gt;"List Regions"&lt;/strong&gt; button.&lt;/p&gt;

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

&lt;p&gt;If the AWS account already has existing CloudWatch dashboards, you can view them my right clicking on the "Existing Dashboard" list and selecting "Show Existing Dashboards"&lt;/p&gt;

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

&lt;p&gt;To add queries to the dashboard, highlight the query, right-click on it, and select the "Add Query" option. This will add the query to the query list.&lt;/p&gt;

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

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

&lt;p&gt;You can remove the query from the list by selecting it, right-clicking, and clicking on the "Remove Query" option.&lt;/p&gt;
&lt;h1&gt;
  
  
  7. CloudWatch Dashboard JSON
&lt;/h1&gt;

&lt;p&gt;To generate the CloudWatch dashboard JSON, right click on the query list and click on "Generate Dashboard JSON."&lt;/p&gt;

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

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

&lt;p&gt;At this point, you have two options. You can either copy the JSON and use it via the CLI or AWS Console to generate the dashboard, or you can directly create it through the tool.&lt;/p&gt;
&lt;h1&gt;
  
  
  8. Create Dashboard
&lt;/h1&gt;

&lt;p&gt;To create a dashboard through the tool, enter the dashboard name in the "Dashboard Name" text field and click on the "Create Dashboard" button. You will see a message in the console indicating whether the dashboard was successfully created or not.&lt;/p&gt;

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

&lt;p&gt;The console screen contains all errors, responses, and logs. The tool's &lt;strong&gt;"Save Output"&lt;/strong&gt; option allows you to save console data for further analysis. To clear the console message, use &lt;strong&gt;"Clear Output"&lt;/strong&gt;. In the current version, the output is saved in the same folder as the executable. "output.txt" is the name of the output file.&lt;/p&gt;
&lt;h1&gt;
  
  
  10. Namespace Query Template
&lt;/h1&gt;

&lt;p&gt;The Namespace Query Template tab allows you to load and edit the namespace query template. You can add new templates to existing namespaces, create new namespaces and templates, and delete or modify existing namespaces and templates.&lt;/p&gt;

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

&lt;p&gt;There are a couple of caveats that need to be taken into account.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Currently there is only Windows executable shared on github. Since the code is open source, you could build one to run on Linux.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The present version produces only a time series dashboard.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Double quotes in the namespace template queries need to be escaped.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Finally, here is a video showing how to use the tool to generate a dashboard or how to use the JSON to construct a dashboard using the CLI or AWS Console. &lt;/p&gt;

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

</description>
      <category>aws</category>
      <category>opensource</category>
      <category>monitoring</category>
      <category>productivity</category>
    </item>
    <item>
      <title>AWS CloudWatch Dashboard Builder - Namespace Template</title>
      <dc:creator>Harinder Seera 🇭🇲</dc:creator>
      <pubDate>Wed, 04 Jan 2023 09:03:30 +0000</pubDate>
      <link>https://dev.to/aws-builders/aws-cloudwatch-dashboard-builder-how-to-use-guide-30ej</link>
      <guid>https://dev.to/aws-builders/aws-cloudwatch-dashboard-builder-how-to-use-guide-30ej</guid>
      <description>&lt;p&gt;This is the second post in the CloudWatch Dashboard Builder series. In this post, I'll walk you through the Namespace query template, which is the foundation for the AWS CloudWatch Dashboard Builder tool&lt;/p&gt;

&lt;p&gt;The namespace query template defines the metric queries for different AWS services. SQL expressions can be used in metric queries. Examples of queries with and without a SQL expression are provided below.&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%2Fgw9juh97tm4g2a7fvr8m.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%2Fgw9juh97tm4g2a7fvr8m.png" alt="Image description" width="800" height="249"&gt;&lt;/a&gt;&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%2Flf6qdpoatmst3wtg673g.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%2Flf6qdpoatmst3wtg673g.png" alt="Image description" width="800" height="182"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As long as a naming standard is followed, the namespace template can be customized to match your needs. Certain keywords must be retained when modifying or creating a new namespace template for usage with the Cloudwatch dashboard builder tool. &lt;/p&gt;

&lt;p&gt;The root object of the namespace template is called "&lt;strong&gt;&lt;em&gt;cloudwatch_template&lt;/em&gt;&lt;/strong&gt;" and it is a keyword. Under the root object, you can have multiple child objects, which are called namespaces. Each namespace object has a "&lt;strong&gt;&lt;em&gt;schema&lt;/em&gt;&lt;/strong&gt;" name and different "&lt;strong&gt;&lt;em&gt;templates&lt;/em&gt;&lt;/strong&gt;". Templates are the unique queries for the namespace. The template contains three keys:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;name:&lt;/strong&gt; Name of the template. This name is used as the widget title in the Cloudwatch dashboard.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;desc:&lt;/strong&gt; A short description of the template. Tells what the query template does, reports or measures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;query:&lt;/strong&gt; A query that will be executed in Cloudwatch to report on the metrics of the namespace. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The namespace template is located in the template folder. &lt;em&gt;For queries that have double quotes in them, they will need to be &lt;strong&gt;escaped&lt;/strong&gt; for the query to work correctly. So special care needs to be taken when updating or creating the template.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Here is another example of a complex namespace template.&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%2Fkv5banhafyj5bq9xu5p5.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%2Fkv5banhafyj5bq9xu5p5.png" alt="Image description" width="800" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that you're familiar with the Namespace template, we can go on to the last post, which explains how to use the tool. &lt;/p&gt;

</description>
      <category>career</category>
      <category>discuss</category>
    </item>
    <item>
      <title>AWS CloudWatch Dashboard Builder - Tool For SRE, Performance Engineers and DevOps</title>
      <dc:creator>Harinder Seera 🇭🇲</dc:creator>
      <pubDate>Wed, 04 Jan 2023 09:03:16 +0000</pubDate>
      <link>https://dev.to/aws-builders/aws-cloudwatch-dashboard-builder-tool-for-sre-performance-engineers-and-devops-29bi</link>
      <guid>https://dev.to/aws-builders/aws-cloudwatch-dashboard-builder-tool-for-sre-performance-engineers-and-devops-29bi</guid>
      <description>&lt;p&gt;This is a three-part series. The first post gives background on why I developed the tool, and later posts explain how to use it.&lt;/p&gt;

&lt;p&gt;For over five years, I have been using the AWS CloudWatch service for monitoring and troubleshooting application performance. Over that period, I have developed different Cloudwatch metric queries to help me quickly create CloudWatch dashboards or widgets for AWS services.&lt;/p&gt;

&lt;p&gt;In the beginning, I used to write these queries in a notepad. From time to time, I would refer them to create a CloudWatch dashboard or widget if I needed them for a new project, client, or application. Also, occasionally, I lacked access to CloudWatch, so I had to ask a colleague to create a widget or dashboard. Before requesting them, I had to transform the query into JSON format. These reasons led me to create a tool for building CloudWatch dashboards.&lt;/p&gt;

&lt;p&gt;The CloudWatch Dashboard Builder tool generates a JSON dashboard template with different metric queries. Queries can include SQL expressions as metrics. You can directly create the dashboard or copy the JSON and create it via the AWS Console/CLI.&lt;/p&gt;

&lt;p&gt;The flexibility of this tool stems from the fact that it is powered by a namespace query template that you can change to meet your requirements. Next post in the series will explore Namespace template into more detail.&lt;/p&gt;

&lt;p&gt;Here is a video showing how to use the tool to generate a dashboard or how to use the JSON to construct a dashboard using the CLI or AWS Console. &lt;/p&gt;

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

&lt;p&gt;The benefits of this tool are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Capability to choose different metric templates for different AWS Namespaces or a custom Namespaces.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Saves time in building the right CloudWatch dashboard for your needs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can directly create the dashboard from the tool or generate the dashboard JSON.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can enhance the Namespace Query template by including your metric queries.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In next post we will explore namespace template. It will explain how to use it correctly with your own CloudWatch metric expressions. &lt;/p&gt;

</description>
      <category>aws</category>
      <category>opensource</category>
      <category>monitoring</category>
      <category>productivity</category>
    </item>
    <item>
      <title>AWS CloudWatch Metrics Insights - Query Builder For Performance Engineers, SRE and Operations</title>
      <dc:creator>Harinder Seera 🇭🇲</dc:creator>
      <pubDate>Thu, 22 Dec 2022 11:07:41 +0000</pubDate>
      <link>https://dev.to/aws-builders/aws-cloudwatch-metrics-insights-query-builder-for-performance-engineers-sre-and-operations-1e60</link>
      <guid>https://dev.to/aws-builders/aws-cloudwatch-metrics-insights-query-builder-for-performance-engineers-sre-and-operations-1e60</guid>
      <description>&lt;p&gt;During my time as a performance engineer who was also involved in operations, I wished AWS had the ability to query Cloudwatch metrics for various AWS services using a SQL-like query language. However, it is never too late to have such an option.&lt;/p&gt;

&lt;p&gt;AWS recently introduced a SQL-like capability for querying metrics data in CloudWatch. It is part of the Cloudwatch Metrics Insight feature. No, I'm not referring to the ability to query logs. This is used to query Cloudwatch metrics data. This feature is currently in &lt;strong&gt;&lt;em&gt;preview&lt;/em&gt;&lt;/strong&gt; mode.&lt;/p&gt;

&lt;p&gt;I haven't used it much except for cost optimization work, but given my previous struggles with visualising metrics data, the SQL capability is a useful feature to have. For example, previously, if I wanted to show only the top 10 EBS volumes based on the amount of data written to them, I would have to query them using the AWS SDK. Other options would have been to use the AWS console, add all the volumes to a dashboard, and then filter them one by one. A time-consuming process to follow. With SQL, however, I can simply execute the following code to obtain the top ten volumes with the most data written to them:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;SUM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;VolumeWriteBytes&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="k"&gt;SCHEMA&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;"AWS/EBS"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;VolumeId&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;VolumeId&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="k"&gt;SUM&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt; &lt;span class="k"&gt;limit&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here is the visualization of executing the above query in Cloudwatch using the query editor.&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%2Fnvhca592jln1pdi6ymjg.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%2Fnvhca592jln1pdi6ymjg.png" alt="Image description" width="744" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To access the SQL editor/query builder, navigate to CloudWatch page and select "All Metrics" under Metrics header.&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%2Fmuinmc1umsco76sqe3me.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%2Fmuinmc1umsco76sqe3me.png" alt="Image description" width="800" height="279"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here's another example, If you simply want to see the top 5 EC2 instances ranked by highest CPU consumption, run the following Cloudwatch query.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="k"&gt;AVG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;CPUUtilization&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="k"&gt;SCHEMA&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;"AWS/EC2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;InstanceId&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;InstanceId&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="k"&gt;AVG&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt; &lt;span class="k"&gt;limit&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fxd76ytx2tu0ye0xrx7y0.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%2Fxd76ytx2tu0ye0xrx7y0.png" alt="Image description" width="744" height="284"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I started using this feature when it was introduced late last year to help me with cost optimization activities I was doing.&lt;/p&gt;

&lt;p&gt;Since this functionality is in preview mode, there are few limitation that you need to be aware off.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;You can query only the most recent three hours of data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A single query can process no more than 10,000 metrics. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A single query can return no more than 500 time series.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Each GetMetricData operation can have only one query, but you can have multiple widgets in a dashboard that each include a query.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wish AWS had had this option 5 years ago. Life would have been so much easier. If you want to learn more about this feature, please refer to the following links:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://aws.amazon.com/about-aws/whats-new/2021/11/amazon-cloudwatch-metrics-insights-preview/" rel="noopener noreferrer"&gt;Cloudwatch Metrics Insights&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/query_with_cloudwatch-metrics-insights.html" rel="noopener noreferrer"&gt;Metrics Insights&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>welcome</category>
      <category>braziliandevs</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Observability - Types Of Vendor Pricing Models</title>
      <dc:creator>Harinder Seera 🇭🇲</dc:creator>
      <pubDate>Sat, 17 Dec 2022 02:19:04 +0000</pubDate>
      <link>https://dev.to/aws-builders/observability-types-of-vendor-pricing-models-4bl9</link>
      <guid>https://dev.to/aws-builders/observability-types-of-vendor-pricing-models-4bl9</guid>
      <description>&lt;p&gt;In the last 5 to 10 years, new Observability vendors have entered the market, including &lt;a href="https://www.honeycomb.io/"&gt;Honeycomb&lt;/a&gt;, &lt;a href="https://www.instana.com/"&gt;Instana&lt;/a&gt;, &lt;a href="https://lightstep.com/"&gt;Lightstep&lt;/a&gt; and &lt;a href="https://www.datadoghq.com/"&gt;Datadog&lt;/a&gt;. Similarly, traditional APM vendors such as &lt;a href="https://www.dynatrace.com/"&gt;Dynatrace&lt;/a&gt;, &lt;a href="https://www.appdynamics.com/"&gt;AppDynamics&lt;/a&gt;, and &lt;a href="https://newrelic.com/"&gt;New Relic&lt;/a&gt;, as well as SIEM (and log management) vendors such as &lt;a href="https://www.splunk.com/"&gt;Splunk&lt;/a&gt; and &lt;a href="https://www.sumologic.com/"&gt;Sumo Logic&lt;/a&gt;, have joined them in the Observability space too. Finally, large cloud providers like AWS offer their own observability solution. Each of them is attempting to address the observability issues that modern architecture presents by using Logs, Metrics, Traces, and Events.&lt;/p&gt;

&lt;p&gt;One thing that stands out when you look at them is the various pricing models they use for their observability solutions. And if you are not familiar with their pricing structure, it can become a bit confusing and challenging.&lt;/p&gt;

&lt;p&gt;This post is not intended to imply that Vendor A is superior to Vendor B. It is meant to be a guide to help you understand the various pricing models you will come across when dealing with observability vendors. The vendor you choose will be determined by your specific use case, tool experience, and budget. So far, I've come across four primary pricing models.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Charge per Ingestion (event/span/data)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Charge per Active Service&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Charge per Host&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Charge per User&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Charge per Ingestion
&lt;/h2&gt;

&lt;p&gt;Example of vendors that use this type of pricing model are &lt;a href="https://www.honeycomb.io/pricing-faq/"&gt;Honeycomb&lt;/a&gt;, &lt;a href="https://www.sumologic.com/pricing/au/"&gt;SumoLogic&lt;/a&gt;, and &lt;a href="https://docs.appdynamics.com/appd-cloud/en/appdynamics-cloud-licensing"&gt;AppDynamics&lt;/a&gt;. One of the new ingestion-based pricing models that people will encounter is charges per event or charges per span.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;So what is an Event or Span?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A span represents a unit of work, and an event is a structured record of a discrete action that occurs at a specific time. An event is a single operation, such as an HTTP request that was processed by a system. The Lightstep &lt;a href="https://docs.lightstep.com/docs/understand-distributed-tracing"&gt;website&lt;/a&gt; has a simple representation of span, as shown below. I recommend reading the articles in the appendix to learn more about span, trace, and events to make sure you are comfortable with the concepts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vURHWioj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m97joqzwvyldesnjkjdx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vURHWioj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m97joqzwvyldesnjkjdx.png" alt="Image description" width="880" height="307"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.lightstep.com/docs/understand-distributed-tracing"&gt;Source&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Charge per active Service
&lt;/h2&gt;

&lt;p&gt;An example of a vendor that uses this type of pricing model is &lt;a href="https://lightstep.com/pricing"&gt;Lightstep&lt;/a&gt;. A service is typically a microservice, which relates to a specific functionality. According to this model, you will only be billed for the number of active services. So if you deploy 10 instances of the same service, you will only be billed for one service.&lt;/p&gt;

&lt;h2&gt;
  
  
  Charge per Host
&lt;/h2&gt;

&lt;p&gt;Examples of vendors that use this type of pricing model are &lt;a href="https://www.dynatrace.com/pricing/"&gt;Dynatrace&lt;/a&gt;, &lt;a href="https://www.datadoghq.com/pricing/"&gt;Datadog&lt;/a&gt;, &lt;a href="https://www.instana.com/pricing/"&gt;Instana&lt;/a&gt; and &lt;a href="https://www.splunk.com/en_us/products/pricing/observability.html"&gt;Splunk&lt;/a&gt;. Each vendor defines what they means by a host. However, what I have experienced is that when a vendor says "host," they generally mean a server, VM, node (in the case of Kubernetes), service that reports host name metrics or all of them. Make sure you ask them this question as to what they mean by host.&lt;/p&gt;

&lt;h2&gt;
  
  
  Charge per User
&lt;/h2&gt;

&lt;p&gt;An example of a vendor that uses this type of pricing model is &lt;a href="https://newrelic.com/pricing"&gt;New Relic&lt;/a&gt;. In this type of model, you are charged based on the type and number of users.&lt;/p&gt;

&lt;p&gt;A few vendors use a simple pricing model. The majority of them have some variation of the models listed above. For example, some employ both a user- and data-ingested pricing model. As a customer, it pays to make sure you understand and are comfortable with the pricing model.&lt;/p&gt;

&lt;p&gt;It is also important to be aware of any potential hidden costs. Some may charge you extra for high cardinality or longer data retention. Find out what the extra costs are to avoid having to explain exorbitantly large bills to your senior management.&lt;/p&gt;

&lt;p&gt;Finally, I would advise vendors to keep their pricing models as simple as possible. The market for observability solutions is already overly competitive. Having a complicated pricing model won't help your cause.&lt;/p&gt;

&lt;h2&gt;
  
  
  Appendix:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.honeycomb.io/blog/uniting-tracing-logs-open-telemetry-span-events"&gt;https://www.honeycomb.io/blog/uniting-tracing-logs-open-telemetry-span-events&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.lightstep.com/docs/understand-distributed-tracing"&gt;https://docs.lightstep.com/docs/understand-distributed-tracing&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.splunk.com/Observability/gdi/get-data-in/application/span-attributes.html"&gt;https://docs.splunk.com/Observability/gdi/get-data-in/application/span-attributes.html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://opentelemetry.io/docs/concepts/observability-primer/"&gt;https://opentelemetry.io/docs/concepts/observability-primer/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>observability</category>
      <category>aws</category>
      <category>monitoring</category>
      <category>cost</category>
    </item>
    <item>
      <title>Useful Cloud Resource Tags For Cost Optimization</title>
      <dc:creator>Harinder Seera 🇭🇲</dc:creator>
      <pubDate>Thu, 24 Nov 2022 10:59:42 +0000</pubDate>
      <link>https://dev.to/aws-builders/useful-cloud-resource-tags-for-cost-optimization-o12</link>
      <guid>https://dev.to/aws-builders/useful-cloud-resource-tags-for-cost-optimization-o12</guid>
      <description>&lt;p&gt;If you are just getting started with cloud migration, there are a few basic things you can do to monitor and manage your cloud costs. If you use AWS, for example, you can set Budget alerts, use Trusted Advisor for cost optimization advice, AWS Cost Explorer, and so on. These are simple tasks that take little effort but can help you get insights into your cloud cost.&lt;/p&gt;

&lt;p&gt;Organizations tend to purchase expensive third-party tools to help them manage their Cloud costs. These tools have there place and do provide benefits. However, cloud-native tools (the ones mentioned above) and a little Excel magic may provide you with more than enough information to help you monitor and control your cloud spending. To utilize their capabilities, you must have strong resource tagging standards in place. If you want to go Third-party tools path, they can also benefit from from the right resource tagging standards.&lt;/p&gt;

&lt;p&gt;If you aren't sure where to begin with the tagging standard, the post details some of the tags you can use to get you started. The post is mainly focused on AWS but the standard outlined will also apply to other Cloud providers.&lt;/p&gt;

&lt;p&gt;AWS tagging standards outline how tags should be used to identify and categories AWS resources. These standards help to ensure that tags are applied uniformly across AWS resources, making resource management and tracking easier. Tagging is a useful strategy to apply when it comes to tracking your cloud cost consumption.&lt;/p&gt;

&lt;p&gt;Tags should be used only for the most important metadata. Rather than making all tags essential, define optional tags that explicitly state how your teams should implement them if they so desire.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pv8Jmzjq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o5bln9m78ydwufi1ob35.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pv8Jmzjq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o5bln9m78ydwufi1ob35.png" alt="Image description" width="724" height="160"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Environment tag&lt;/strong&gt; - Help determine cost differences among development, test/staging, and production.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Application/Service tag&lt;/strong&gt; - Identifies the primary services the resource belongs to,allowing the organization to differentiate costs among the services that teams are running.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cluster tag&lt;/strong&gt; - Identify resource farms that share a common configuration and perform a specific function for an application. This can be an optional tag.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Application-Role tag&lt;/strong&gt; - Help identify the primary role of the resource.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Name tag&lt;/strong&gt; - Identify the resource using a friendlier identifier than the one given to you by your cloud services provider.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Business unit/Cost-Center tag&lt;/strong&gt; - Defines where the costs of the resource should be allocated within your organization. This will allow for correct cost allocation within your billing data.&lt;br&gt;
&lt;strong&gt;Resource Owner/Support Owner tag&lt;/strong&gt; - Help identify the individual/team responsible for the resource.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some optional tags you may consider defining and not necessarily related to cost optimization include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Compliance tag&lt;/strong&gt; - An identifier for workloads that must adhere to specific compliance requirements Identify the type of data contained on the resource and whether it needs to adhere to specific compliance requirement such as PCI DSS compliant.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Confidentiality tag&lt;/strong&gt; - Identify the amount of scrutiny that needs to be applied to the security level of the resource.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Automation tag&lt;/strong&gt; - Used to select particular versions of resources to archive, update, or remove, as well as to opt in or out of automated actions. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I hope this post has given you a basic knowledge of why tagging is important, as well as some simple tags that you may start using to aid you on your cost optimization journey.&lt;/p&gt;




&lt;p&gt;Thanks for reading!&lt;/p&gt;

&lt;p&gt;If you enjoyed this article feel free to share it on social media 🙂&lt;/p&gt;

&lt;p&gt;Say Hello on: &lt;a href="https://www.linkedin.com/in/harinderseera/"&gt;Linkedin&lt;/a&gt; | &lt;a href="https://twitter.com/harinderseera"&gt;Twitter&lt;/a&gt; | &lt;a href="https://www.polywork.com/harinderseera"&gt;Polywork&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Blogging: &lt;a href="https://dev.to/harinderseera"&gt;Dev&lt;/a&gt; | &lt;a href="https://harinderseera.hashnode.dev/"&gt;Hashnode&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Github: &lt;a href="https://github.com/hseera"&gt;hseera&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloudcost</category>
      <category>finops</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Visualizing Cryptocurrency Data With AWS Serverless Technology</title>
      <dc:creator>Harinder Seera 🇭🇲</dc:creator>
      <pubDate>Sat, 19 Nov 2022 09:43:36 +0000</pubDate>
      <link>https://dev.to/aws-builders/visualizing-cryptocurrency-data-with-aws-serverless-services-3p6c</link>
      <guid>https://dev.to/aws-builders/visualizing-cryptocurrency-data-with-aws-serverless-services-3p6c</guid>
      <description>&lt;p&gt;We have about 20,000 cryptocurrencies, with over 9,000 of them actively trading. Similarly, we have over 4,000 exchanges, with over 500 of them being active. The &lt;a href="https://coinmarketcap.com/"&gt;CoinMarketCap website&lt;/a&gt; has all of this information. However, I wanted to be able to analyse cryptocurrency data beyond just how many cryptocurrencies are active. To accomplish it, I ended up leveraging AWS Serverless services.   &lt;/p&gt;

&lt;p&gt;This blog post describes how I used AWS serverless services to visualize cryptocurrency data using AWS Quicksight. So, if someone wants to do something similar, they know where to start. To achieve my goal, I used the following AWS services: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Lambda Functions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;S3&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS EventBridge&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Step Function&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;QuickSight&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Lambda Functions
&lt;/h2&gt;

&lt;p&gt;In this use scenario, I have three lambda functions. Each lambda function runs a given function and saves the result to an S3 bucket. One of the lambda functions is shown below, which uses the Coinmarketcap map API and saves the response to an S3 bucket.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;os&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;json&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;boto3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;uuid&lt;/span&gt;

&lt;span class="c1"&gt;# from botocore.vendored import requests
&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;requests&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Request&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Session&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;requests.exceptions&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nb"&gt;ConnectionError&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Timeout&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;TooManyRedirects&lt;/span&gt;

&lt;span class="n"&gt;s3_client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boto3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'s3'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;lambda_handler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"https://pro-api.coinmarketcap.com/v1/cryptocurrency/map"&lt;/span&gt;
    &lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="s"&gt;'Accepts'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;'application/json'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="s"&gt;'X-CMC_PRO_API_KEY'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;'xxxxxxxx'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="n"&gt;session&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Session&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;loads&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;json_body&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;'data'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
        &lt;span class="n"&gt;AWS_BUCKET_NAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;'coinmarketcap-data'&lt;/span&gt;
        &lt;span class="n"&gt;S3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boto3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;resource&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"s3"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;bucket_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;S3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Bucket&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;AWS_BUCKET_NAME&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;bucket_name&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;put_object&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;ContentType&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;'application/json'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;Key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"map-file.json"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;Body&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;json_body&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;'statusCode'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;'body'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'file is created'&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;
    &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;ConnectionError&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Timeout&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;TooManyRedirects&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


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

&lt;/div&gt;



&lt;h2&gt;
  
  
  S3
&lt;/h2&gt;

&lt;p&gt;Lambda functions write their data to an S3 bucket, data in S3 is then later consumed by Quicksight for visualization.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--31v2AvNI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/58iu2catyyceebg6pzka.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--31v2AvNI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/58iu2catyyceebg6pzka.png" alt="Image description" width="880" height="106"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is an extract from the map data file stored in S3 bucket.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MyFJDyT4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9dude81hjeeahp2eo29q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MyFJDyT4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9dude81hjeeahp2eo29q.png" alt="Image description" width="707" height="332"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  AWS Step Function
&lt;/h2&gt;

&lt;p&gt;The step function is used to connect Lambda functions into a serverless workflow. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RnwyaDzS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yws5ra0mvbstrlh3wsgp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RnwyaDzS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yws5ra0mvbstrlh3wsgp.png" alt="Image description" width="663" height="76"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  AWS EventBridge
&lt;/h2&gt;

&lt;p&gt;For this specific use case, the EventBridge is used to schedule to run the Step function every 24 hours.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fMurj9q1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5rfw0gsecdhldxqwhk7u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fMurj9q1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5rfw0gsecdhldxqwhk7u.png" alt="Image description" width="880" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  AWS QuickSight
&lt;/h2&gt;

&lt;p&gt;Finally AWS QuickSight is used to load the data from S3 bucket and visualize it as shown below. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kY3Nq4Rq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r3oerx616nmt5kyokh9d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kY3Nq4Rq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r3oerx616nmt5kyokh9d.png" alt="Image description" width="840" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The whole AWS serverless architecture for this use case looks like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dPuCoSPn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5j9ov7wn93ywmllvbvkg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dPuCoSPn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5j9ov7wn93ywmllvbvkg.png" alt="Image description" width="723" height="494"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Thanks for reading!&lt;/p&gt;

&lt;p&gt;If you enjoyed this article feel free to share it on social media 🙂&lt;/p&gt;

&lt;p&gt;Say Hello on: &lt;a href="https://www.linkedin.com/in/harinderseera/"&gt;Linkedin&lt;/a&gt; | &lt;a href="https://twitter.com/harinderseera"&gt;Twitter&lt;/a&gt; | &lt;a href="https://www.polywork.com/harinderseera"&gt;Polywork&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Blogging: &lt;a href="https://dev.to/harinderseera"&gt;Dev&lt;/a&gt; | &lt;a href="https://harinderseera.hashnode.dev/"&gt;Hashnode&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Github: &lt;a href="https://github.com/hseera"&gt;hseera&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>quicksight</category>
      <category>serverless</category>
      <category>visualization</category>
    </item>
  </channel>
</rss>
