<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: DeveloperSteve</title>
    <description>The latest articles on Forem by DeveloperSteve (@developersteve).</description>
    <link>https://forem.com/developersteve</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%2F39502%2F11667724-bf27-4dea-a8b9-d1c0a282fcf1.jpg</url>
      <title>Forem: DeveloperSteve</title>
      <link>https://forem.com/developersteve</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/developersteve"/>
    <language>en</language>
    <item>
      <title>A Guide on Canary Deployments in Kubernetes</title>
      <dc:creator>DeveloperSteve</dc:creator>
      <pubDate>Wed, 12 Apr 2023 00:46:18 +0000</pubDate>
      <link>https://forem.com/developersteve/a-guide-on-mastering-canary-deployments-in-kubernetes-3b3f</link>
      <guid>https://forem.com/developersteve/a-guide-on-mastering-canary-deployments-in-kubernetes-3b3f</guid>
      <description>&lt;p&gt;In the world of software development, releasing new versions of applications can be fraught with risks. Ensuring that changes are introduced without disrupting the user experience is of paramount importance. &lt;/p&gt;

&lt;p&gt;Canary deployments offer a reliable and efficient way to mitigate these risks by progressively rolling out new features to a small subset of users before making them available to everyone. &lt;/p&gt;

&lt;p&gt;In this blog post, we'll delve into the intricacies of implementing canary deployments in Kubernetes and provide code samples to guide you through the process. Let's dive into the world of Kubernetes canary deployments and master the art of progressive releases!&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding Canary Deployments
&lt;/h2&gt;

&lt;p&gt;Canary deployments get their name from the historical practice of using canaries in coal mines to detect dangerous gases. Similarly, canary deployments help detect issues in new releases by gradually rolling them out and monitoring their performance. By limiting the exposure of new features to a small percentage of users, developers can identify and address potential problems before they affect the entire user base.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;p&gt;For the purpose of this guide, we assume that you have a basic understanding of Kubernetes concepts and have access to a running Kubernetes cluster. We will be using a sample application with two versions (v1 and v2) for demonstration purposes.&lt;/p&gt;

&lt;h4&gt;
  
  
  Creating the Base Deployment and Service
&lt;/h4&gt;

&lt;p&gt;First, let's create a base deployment for our application with the v1 version. Create a deployment.yaml file with the following content:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app-v1
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
      version: v1
  template:
    metadata:
      labels:
        app: my-app
        version: v1
    spec:
      containers:
      - name: my-app
        image: my-app:v1
        ports:
        - containerPort: 8080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Apply the deployment using kubectl:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f deployment.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, create a service.yaml file for our application:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: v1
kind: Service
metadata:
  name: my-app-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: LoadBalancer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Apply the service using kubectl:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f service.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Implementing Canary Deployment
&lt;/h2&gt;

&lt;p&gt;To implement a canary deployment, we'll create a separate deployment for the v2 version of our application with a single replica. Create a canary-deployment.yaml file with the following content:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app-v2
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-app
      version: v2
  template:
    metadata:
      labels:
        app: my-app
        version: v2
    spec:
      containers:
      - name: my-app
        image: my-app:v2
        ports:
        - containerPort: 8080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Apply the canary deployment using kubectl:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f canary-deployment.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Configuring Traffic Splitting
&lt;/h2&gt;

&lt;p&gt;In order to direct a portion of the traffic to the v2 version, we'll use Istio, a popular service mesh for Kubernetes. Ensure that Istio is installed and enabled in your cluster. To configure traffic splitting, create a virtual-service.yaml file with the following content:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: my-app-virtual-service
spec:
  hosts:
    - my-app-service
  http:
    - route:
        - destination:
            host: my-app-service
            subset: v1
          weight: 90
        - destination:
            host: my-app-service
            subset: v2
          weight: 10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this configuration, we're directing 90% of the traffic to the v1 version and 10% to the v2 version (our canary release). Apply the virtual service using kubectl:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f virtual-service.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Monitoring and Observability
&lt;/h2&gt;

&lt;p&gt;Effectively monitoring and observing the performance of canary deployments is a crucial aspect of ensuring their success. By collecting metrics, logs, and traces from both the v1 and v2 versions, you can identify discrepancies or issues that might be introduced by the new release. Kubernetes offers built-in monitoring tools like Prometheus and Grafana to facilitate this process, but third-party observability services can further enhance your monitoring capabilities.&lt;/p&gt;

&lt;p&gt;One such third-party service is Lumigo, which provides comprehensive observability for serverless applications, microservices, and Kubernetes clusters. Lumigo enables you to monitor the performance and stability of your canary deployments with real-time insights, helping you detect potential issues early in the process.&lt;/p&gt;

&lt;p&gt;To integrate Lumigo with your Kubernetes cluster, you can use the Lumigo Kubernetes Operator. This open-source project is available on GitHub at &lt;a href="https://github.com/lumigo-io/lumigo-kubernetes-operator"&gt;https://github.com/lumigo-io/lumigo-kubernetes-operator&lt;/a&gt;. The Lumigo Kubernetes Operator automates the deployment and management of the Lumigo tracer in your Kubernetes environment, ensuring seamless integration with your existing monitoring setup.&lt;/p&gt;

&lt;p&gt;To get started with the Lumigo Kubernetes Operator, follow the installation and configuration instructions provided in the project's GitHub repository. Once the operator is deployed and configured, it will automatically inject the Lumigo tracer into your cluster's pods, enabling end-to-end monitoring of your applications.&lt;/p&gt;

&lt;p&gt;With Lumigo, you can gain valuable insights into the performance and health of your canary deployments. The platform provides real-time metrics and visualisations, making it easy to compare the performance of the v1 and v2 versions of your application. If you detect any problems or anomalies, you can quickly roll back the canary release by adjusting the traffic split in the virtual service or by removing the v2 deployment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Scaling Canary Deployments
&lt;/h2&gt;

&lt;p&gt;Once you've confirmed that the canary release is stable and functioning as expected, you can gradually increase the traffic to the v2 version by adjusting the weights in the virtual service. This allows you to safely roll out the new version to more users, while still keeping an eye on performance metrics.&lt;/p&gt;

&lt;p&gt;When you're ready to fully transition to the new version, update the base deployment to use the v2 image and remove the canary deployment:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app-v1
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
      version: v1
  template:
    metadata:
      labels:
        app: my-app
        version: v1
    spec:
      containers:
      - name: my-app
        image: my-app:v2
        ports:
        - containerPort: 8080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Apply the updated deployment using kubectl:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f deployment.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Release your Canary deployment into the wild
&lt;/h2&gt;

&lt;p&gt;Canary deployments in Kubernetes provide a reliable and efficient way to progressively roll out new features, allowing developers to identify and resolve issues before they impact the entire user base. &lt;/p&gt;

&lt;p&gt;By leveraging Istio and monitoring tools, you can confidently introduce changes to your applications with minimal disruption. Master the art of canary deployments in Kubernetes and take your application releases to new heights!&lt;/p&gt;

&lt;p&gt;Happy &lt;a href="https://medium.com/@developersteve/list/kubernetesing-b5fd0dcf009f"&gt;kubernetesing&lt;/a&gt; ☸️&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>canary</category>
      <category>deployment</category>
      <category>orchestration</category>
    </item>
    <item>
      <title>Advanced Regex Techniques to Spice Up Your Text Processing</title>
      <dc:creator>DeveloperSteve</dc:creator>
      <pubDate>Tue, 04 Apr 2023 23:52:27 +0000</pubDate>
      <link>https://forem.com/developersteve/advanced-regex-techniques-to-spice-up-your-text-processing-36g5</link>
      <guid>https://forem.com/developersteve/advanced-regex-techniques-to-spice-up-your-text-processing-36g5</guid>
      <description>&lt;p&gt;Are you ready to embark on an exhilarating Regex adventure? Regular expressions, affectionately known as Regex, are a text processing wizard's best friend. Although mastering the basics is essential, it's the advanced techniques that will transform you from a Regex apprentice to a true pattern-matching sorcerer. In this blog post, we'll delve into some of the more fascinating Regex features, including lookaheads, lookbehinds, backreferences, and recursive patterns. Buckle up, and let's dive into the realm of advanced Regex text processing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lookaheads: A Glimpse into the Future
&lt;/h2&gt;

&lt;p&gt;Lookaheads are like fortune tellers of the Regex world. These clever assertions allow you to peek into the future of your input string without actually matching the lookahead pattern. Lookaheads come in two enticing flavors:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Positive lookahead (?=pattern): Proclaims that the pattern exists after the current position.&lt;/li&gt;
&lt;li&gt;Negative lookahead (?!pattern): Insists that the pattern is nowhere to be found after the current position.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Example:
&lt;/h3&gt;

&lt;p&gt;Picture this: you want to find all the words followed by a comma but don't want the comma to crash the party. Fret not! Use a positive lookahead like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;\b\w+(?=,)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Lookbehinds: Don't Forget to Look Back!
&lt;/h2&gt;

&lt;p&gt;Lookbehinds are the time-travelers of Regex, allowing you to journey back in time and check for a pattern before the current position. These crafty assertions also come in two intriguing forms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Positive lookbehind (?&amp;lt;=pattern): Asserts that the pattern has left its mark before the current position.&lt;/li&gt;
&lt;li&gt;Negative lookbehind (?&amp;lt;!pattern): Declares that the pattern never dared to step foot before the current position.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Example:
&lt;/h3&gt;

&lt;p&gt;Say you're hunting for words that have a dollar sign as their trusty sidekick, but you don't want the dollar sign stealing the spotlight. Fear not! A positive lookbehind is here to save the day:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(?&amp;lt;=\$)\w+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Backreferences: Déjà Vu, Anyone?
&lt;/h2&gt;

&lt;p&gt;Backreferences are like the boomerangs of Regex - they allow you to refer to a previously captured group within the same expression, creating a sense of déjà vu. You can summon a captured group using the magical incantation \1, \2, \3, etc., with the number corresponding to the group's position in the pattern.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example:
&lt;/h3&gt;

&lt;p&gt;If you're on a quest to uncover repeated words in a text, unleash the power of a backreference like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;\b(\w+)\s+\1\b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Recursive Patterns: Taming the Nested Beasts
&lt;/h2&gt;

&lt;p&gt;Nested structures, such as parentheses or HTML tags, can be the dragons of the Regex realm. Fear not, brave Regex warrior! Some regex engines (like Perl, PCRE, and Python's regex module) support recursive patterns, empowering you to slay even the most formidable nested beasts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example:
&lt;/h3&gt;

&lt;p&gt;To conquer the challenge of balanced parentheses, arm yourself with a recursive pattern like this (using the PCRE engine):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;\((?:[^()]|(?R))*\)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By harnessing the enchanting powers of advanced Regex techniques like lookaheads, lookbehinds, backreferences, and recursive patterns, you'll become a true text-processing champion. These mystical abilities grant you precision and control when facing complex patterns, allowing you to vanquish even the most fiendish text-processing foes. Embrace your inner Regex adventurer, and don't be afraid to experiment and combine these powerful techniques to unleash your full pattern-matching potential.&lt;/p&gt;

</description>
      <category>regex</category>
      <category>expression</category>
      <category>processing</category>
      <category>text</category>
    </item>
    <item>
      <title>Helm, the Enchanted Scepter: A novice's Guide to level 5 Kubernetes spells</title>
      <dc:creator>DeveloperSteve</dc:creator>
      <pubDate>Tue, 04 Apr 2023 03:30:36 +0000</pubDate>
      <link>https://forem.com/developersteve/helm-the-enchanted-scepter-a-novices-guide-to-level-5-kubernetes-spells-4fhe</link>
      <guid>https://forem.com/developersteve/helm-the-enchanted-scepter-a-novices-guide-to-level-5-kubernetes-spells-4fhe</guid>
      <description>&lt;p&gt;In the mystical land of container orchestration, Kubernetes reigns supreme. But as powerful as Kubernetes may be, it can sometimes feel like navigating a labyrinth of YAML files and manifests. Fear not, brave adventurer, for there exists a magical tool to tame the complexity of Kubernetes: Helm, the package manager of Kubernetes. &lt;/p&gt;

&lt;p&gt;Just as a trusty map guides weary traveler's through treacherous dungeons, Helm charts guide developers through the intricate process of deploying and managing applications on Kubernetes. In this quest, we shall embark on a journey to master Helm and harness its power to bring order to the chaos.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Acquiring the Helm
&lt;/h3&gt;

&lt;p&gt;First, we must acquire Helm and install it on our local machine. Follow the instructions for your platform from the &lt;a href="https://helm.sh/docs/intro/install/"&gt;Official Helm Documentation&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Initializing the Helm
&lt;/h3&gt;

&lt;p&gt;Once Helm is installed, we can summon its powers by invoking the command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This incantation will reveal the Helm version, proving that the summoning was successful.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Conjuring the Repository of Charts
&lt;/h3&gt;

&lt;p&gt;With Helm at our disposal, we must now seek knowledge in the form of Helm charts. These arcane artifacts provide templates for deploying and managing applications on Kubernetes. We shall add the official repository of charts known as "Bitnami" to our Helm:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm repo add bitnami https://charts.bitnami.com/bitnami
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;To ensure the repository has been successfully added, recite the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm repo list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 4: Unveiling the Charts
&lt;/h3&gt;

&lt;p&gt;The Bitnami repository contains a vast trove of Helm charts. To uncover them, we shall issue the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm search repo bitnami
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will reveal the charts available in the Bitnami repository, ready for your perusal.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5: Summoning the Application
&lt;/h3&gt;

&lt;p&gt;To demonstrate the power of Helm, we shall now summon an application. Let us choose the mighty "nginx" chart and install it on our Kubernetes cluster:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm install my-nginx bitnami/nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This enchantment will create a new release called "my-nginx" using the "bitnami/nginx" chart. Once the spell is complete, Helm will provide instructions on how to access your newly summoned application.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 6: Manipulating the Application
&lt;/h3&gt;

&lt;p&gt;As your mastery over Helm grows, you may wish to manipulate the summoned application. To do so, first inspect the chart's values:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm show values bitnami/nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will reveal the editable parameters within the chart. To alter these values, create a new file called "values.yaml" and apply your desired changes. Then, update the release using the following incantation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm upgrade my-nginx bitnami/nginx -f values.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 7: Banishing the Application
&lt;/h3&gt;

&lt;p&gt;Should you wish to banish your application from the cluster, simply utter the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm uninstall my-nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And just like that, your application will vanish into the void.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Congratulations, adventurer!
&lt;/h2&gt;

&lt;p&gt;You have now traversed the basics of Helm and tamed its formidable powers. With Helm by your side, you shall fearlessly journey through the realm of Kubernetes, conquering complexity and vanquishing disorder. May your path be ever guided by the wisdom of Helm charts!&lt;/p&gt;

</description>
      <category>helm</category>
      <category>kubernetes</category>
      <category>k8s</category>
      <category>container</category>
    </item>
    <item>
      <title>Serverless Days ANZ 2023 Recap</title>
      <dc:creator>DeveloperSteve</dc:creator>
      <pubDate>Wed, 15 Mar 2023 04:51:34 +0000</pubDate>
      <link>https://forem.com/developersteve/serverless-days-anz-2023-recap-1g32</link>
      <guid>https://forem.com/developersteve/serverless-days-anz-2023-recap-1g32</guid>
      <description>&lt;p&gt;Serverless Days ANZ 2023 was a fantastic event that showcased the vibrant serverless community. From the opening keynote to the final panel discussion, there was a palpable energy in the air as attendees shared their experiences, insights, and best practices on all things serverless. The event was a true testament to the power of community and collaboration, bringing together developers and architects from across the ANZ region and beyond.&lt;/p&gt;

&lt;p&gt;Speakers like AWS Serverless hero Jeremy Daly and Kris Howard from AWS spoke about the importance of a well-designed developer experience and thinking in integration patterns. The event also featured panel discussions and a range of topics from security to accessibility. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FbTnwPxS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zftt0emim9tt54has6rk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FbTnwPxS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zftt0emim9tt54has6rk.png" alt="Lumigo Buzzwire game" width="880" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The IoT trace wire game that I shared with the audience was an exciting project that Lumigo used in our booth for re:Invent last year. The game involved players navigating through a wire maze as quickly as possible, with their times recorded and sent via WiFi to a Lambda function and stored in DynamoDB. This allowed us to trace the entire process using Lumigo, demonstrating the power and usefulness of serverless computing.&lt;/p&gt;

&lt;p&gt;The game was a real challenge to build, requiring a lot of logistical planning and work pivots, as well as extensive tinkering with IoT hardware and 3D printing. But the end result was a lot of fun for everyone involved, including myself. If you're interested in learning more about my experience building this game and how we used Lumigo to trace it, be sure to check out my blog post on Observing IoT and Lambda.&lt;/p&gt;

&lt;p&gt;Join us in celebrating the serverless community spirit and the hardworking team that made this event possible. &lt;/p&gt;

&lt;p&gt;Read more about the event and my experience on the Lumigo blog via this link 👉 &lt;a href="https://lumigo.io/blog/serverless-days-anz-2023-recap/"&gt;https://lumigo.io/blog/serverless-days-anz-2023-recap/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>anz</category>
      <category>community</category>
    </item>
    <item>
      <title>Pobody is Nerfect and ChatGPT is no exception</title>
      <dc:creator>DeveloperSteve</dc:creator>
      <pubDate>Wed, 25 Jan 2023 02:30:21 +0000</pubDate>
      <link>https://forem.com/developersteve/pobody-is-nerfect-and-chatgpt-is-no-exception-2ocl</link>
      <guid>https://forem.com/developersteve/pobody-is-nerfect-and-chatgpt-is-no-exception-2ocl</guid>
      <description>&lt;p&gt;In the span of only a few weeks we saw the emergence of many new integrations options for the newly spawned AI service. From Discord to IDE's, we have seen a multitude of options enabling automated experiences that go to a whole new level of engagement with its users. &lt;/p&gt;

&lt;p&gt;ChatGPT, or Generative Pre-trained Transformer 3, is already revolutionising industries even in its emergence infancy. However, as with any technology, there are bound to be mistakes. So, what do we do when ChatGPT gets things wrong?&lt;/p&gt;

&lt;p&gt;First and foremost, it is important to understand that ChatGPT is a machine learning model and, as such, it is not perfect. It is not a human and does not have the same level of understanding or ability to process information as a human does. Therefore, it is important to approach any output from ChatGPT with a critical eye and not assume that it is always correct.&lt;/p&gt;

&lt;p&gt;One way to address errors in ChatGPT's output is through fine-tuning. Fine-tuning involves training the model on a specific dataset or task, which can help improve its performance. For example, if ChatGPT is being used in a customer service chatbot and is consistently misunderstanding a certain type of question, fine-tuning the model on a dataset of similar questions can help improve its understanding.&lt;/p&gt;

&lt;p&gt;The most important way to address errors in ChatGPT's output is through human oversight. This can be as simple as having a human review and approve any output from the model before it is sent to a customer or user. This can help catch any errors or inconsistencies that the model may have generated. Additionally, feedback from human users can be used to improve the model over time and or to refine the service that it is utlized within. &lt;/p&gt;

&lt;p&gt;Of cour it is important to note that ChatGPT's errors can be related to the data that it has been trained on. Like any AI model, ChatGPT's performance is only as good as the data it has been trained on. This means that if the data used to train the model is biased or contains errors, the model's output will also be biased or contain errors. To avoid this, it is important to use a diverse and high-quality dataset when training the model.&lt;/p&gt;

&lt;p&gt;AI applications like ChatGPT, are powerful tools that have immense potential, but it is not without its mistakes especially in its pursuit to appear human. Addressing errors in ChatGPT's output requires a combination of fine-tuning and building in human oversight, especially for critical tasks. &lt;/p&gt;

</description>
      <category>chatgpt</category>
      <category>ai</category>
      <category>errors</category>
    </item>
    <item>
      <title>Comparing Amazon ECS launch types: EC2 vs. Fargate</title>
      <dc:creator>DeveloperSteve</dc:creator>
      <pubDate>Wed, 18 Jan 2023 02:58:33 +0000</pubDate>
      <link>https://forem.com/lumigo/comparing-amazon-ecs-launch-types-ec2-vs-fargate-7c4</link>
      <guid>https://forem.com/lumigo/comparing-amazon-ecs-launch-types-ec2-vs-fargate-7c4</guid>
      <description>&lt;p&gt;Amazon Elastic Container Service (ECS) is a fully managed container orchestration service that enables users to easily run, manage and scale containers on AWS. With ECS, you can deploy containers either on a cluster of Amazon EC2 instances or on AWS Fargate, a serverless computing engine for containers. In this article, we’ll take a closer look at what ECS is and how it works, including the different components and launch types available.&lt;/p&gt;

&lt;p&gt;In this article, we’ll take a closer look at what ECS is and how it works, including the different components and launch types available. We'll also briefly compare the features of EC2 and Fargate, and explore the use cases for each launch type. By the end of this article, you'll have a better understanding of how to use ECS and be able to make an informed decision on which launch type is best for your needs.&lt;/p&gt;

&lt;p&gt;But first, let's define what ECS is. ECS is a highly scalable and powerful tool for orchestrating containers that are run on Docker. It allows you to deploy containers from your local environment via Docker and provision access to those containers from anywhere, resulting in zero downtime and no complicated configurations. With ECS, you can scale numerous containers with just a single click.&lt;/p&gt;

&lt;p&gt;ECS provides the underlying infrastructure to create task definitions for your tasks and services; however, you still have to select a launch type that will handle running, stopping, and deploying your tasks and services.&lt;/p&gt;

&lt;p&gt;Want to find out more? &lt;/p&gt;

&lt;p&gt;&lt;a href="https://lumigo.io/blog/comparing-amazon-ecs-launch-types-ec2-vs-fargate/" rel="noopener noreferrer"&gt;Follow this link&lt;/a&gt; to read the full article and learn how to use ECS to manage and scale your containers on AWS, and take the first step towards streamlining your container orchestration process.&lt;/p&gt;

</description>
      <category>ecs</category>
      <category>fargate</category>
      <category>ec2</category>
    </item>
    <item>
      <title>Regex, dont be scared</title>
      <dc:creator>DeveloperSteve</dc:creator>
      <pubDate>Thu, 08 Dec 2022 23:42:42 +0000</pubDate>
      <link>https://forem.com/developersteve/regex-dont-be-scared-572o</link>
      <guid>https://forem.com/developersteve/regex-dont-be-scared-572o</guid>
      <description>&lt;p&gt;As a developer, you may have heard of regular expressions, also known as regex, and may have even avoided using them because of their reputation for being difficult and intimidating. However, regex is actually a powerful and useful tool that can greatly simplify your code and save you time and effort. Here are a few reasons why you should not be scared of regex and why you should consider using it in your development projects.&lt;/p&gt;

&lt;p&gt;First and foremost, regex is a concise and efficient way to match patterns in a multiple of programming languages. Instead of using lengthy and complex code to search for specific patterns, regex allows you to define a pattern in a simple and intuitive way. For example, the following regex pattern will match any string that starts with "hello" and ends with "world":&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/^hello.*world$/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Not only is this pattern much easier to read and understand than a longer and more complex code, it is also more efficient and faster to execute. By using regex, you can easily search for and match patterns in strings, making your code more efficient and effective.&lt;/p&gt;

&lt;p&gt;Another reason to not be scared of regex is that it is a versatile and flexible tool. Regex can be used for a wide range of tasks, from simple string matching to complex data manipulation and validation. For instance, you can use regex to validate email addresses, phone numbers, URLs, or any other type of data. The following regex pattern will match any valid email address:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/^[a-zA-Z0-9.!#$%&amp;amp;’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By using regex, you can easily and accurately validate data, ensuring that your code only processes valid and correct inputs. This can save you time and effort, and can prevent errors and bugs in your code.&lt;/p&gt;

&lt;p&gt;Finally, regex is a widely used and supported tool that is available in many programming languages and frameworks. Most modern programming languages and frameworks have built-in support for regex, allowing you to easily integrate regex into your code. For instance, the following code snippet shows how to use regex in JavaScript:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let regex = /^hello.*world$/;
let string = "hello world";
let result = regex.test(string);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By using regex, you can benefit from the extensive support and resources available for this tool, and can easily integrate it into your development projects.&lt;/p&gt;

&lt;p&gt;What i love about regex the most is it being a powerful and useful tool that can greatly simplify your code and save you time and effort. It is a concise and efficient way to match patterns in strings, a versatile and flexible tool that can be used for a wide range of tasks, and a widely used and supported tool that is available in many programming languages and frameworks. &lt;/p&gt;

&lt;p&gt;Don't be scared of regex – embrace it and start using it in your development projects.&lt;/p&gt;

</description>
      <category>regex</category>
      <category>regularexpression</category>
      <category>sanitize</category>
      <category>filtering</category>
    </item>
    <item>
      <title>The Hidden Costs of Serverless Observability</title>
      <dc:creator>DeveloperSteve</dc:creator>
      <pubDate>Thu, 08 Dec 2022 23:05:57 +0000</pubDate>
      <link>https://forem.com/lumigo/the-hidden-costs-of-serverless-observability-jff</link>
      <guid>https://forem.com/lumigo/the-hidden-costs-of-serverless-observability-jff</guid>
      <description>&lt;p&gt;Serverless architectures are becoming increasingly popular, which has led to an increased need for solutions to the challenges of microservice observability. Observability solutions enable fast and easy debugging of applications, as well as driving optimization and cost efficiency. However, the complexity of serverless systems presents challenges to observability, and the wrong tool set can lead to unexpected costs.&lt;/p&gt;

&lt;p&gt;In a serverless environment, not only are developers abstracted from the underlying infrastructure that runs their code, but the distributed, event-driven nature of serverless applications makes traditional approaches to monitoring and debugging ineffective. Serverless functions are often chained through asynchronous event sources such as AWS SNS, SQS, Kinesis, or DynamoDB, making tracing extremely difficult.&lt;/p&gt;

&lt;p&gt;The distributed nature of serverless architectures makes monitoring harder, as there isn't one central, monolithic application server anymore. Instead, developers are faced with a distributed architecture and an abundance of competing tools to conduct serverless monitoring.&lt;/p&gt;

&lt;p&gt;Serverless observability tools are purpose built to support serverless architectures. They allow developers to reap all the benefits of serverless technology without sacrificing insights into the system, allowing them to retain opportunities to catch errors and optimize for cost and responsiveness.&lt;/p&gt;

&lt;p&gt;Building an observability solution tailored to a serverless system requires data, and a lot of it. Logs, metrics, and traces are required to ensure the system can answer as many questions as possible about how it's working, whether you're repairing or optimizing. Each source contributes a different perspective on how your application is performing and, when analyzed together, give a complete picture of its health.&lt;/p&gt;

&lt;p&gt;There are many different serverless observability tools available, each with its own unique features and capabilities. Choosing the right one for your needs can be a daunting task. Some popular options include IOpipe, Dashbird, and Epsagon.&lt;/p&gt;

&lt;p&gt;Follow this &lt;a href="https://lumigo.io/blog/the-hidden-costs-of-serverless-observability/" rel="noopener noreferrer"&gt;link to read more&lt;/a&gt;&lt;/p&gt;

</description>
      <category>observability</category>
      <category>lumigo</category>
      <category>serverless</category>
      <category>lambda</category>
    </item>
    <item>
      <title>Getting started with Bun.js</title>
      <dc:creator>DeveloperSteve</dc:creator>
      <pubDate>Thu, 08 Dec 2022 22:52:37 +0000</pubDate>
      <link>https://forem.com/developersteve/getting-started-with-bunjs-3ml1</link>
      <guid>https://forem.com/developersteve/getting-started-with-bunjs-3ml1</guid>
      <description>&lt;p&gt;Bun.js is a powerful JavaScript framework that allows you to easily create dynamic and interactive user interfaces. In this blog post, we will go over some of the basics of using bun.js and how you can get started with it.&lt;/p&gt;

&lt;p&gt;First, let's go over what bun.js is and why you might want to use it. Bun.js is a front-end framework that makes it easy to build complex user interfaces using a declarative approach. This means that you can describe what your user interface should look like, and bun.js will take care of the details of rendering it on the page. This is in contrast to imperative approaches, where you have to write code to manually manipulate the elements on the page.&lt;/p&gt;

&lt;p&gt;One of the key features of bun.js is its reactive nature. This means that when data changes in your application, the user interface will automatically update to reflect those changes. This can make it much easier to build dynamic and responsive applications, as you don't have to worry about manually updating the user interface whenever the data changes.&lt;/p&gt;

&lt;p&gt;Now that you have an idea of what bun.js is and why you might want to use it, let's go over how you can get started with it.&lt;/p&gt;

&lt;p&gt;The first step to using bun.js is to include the bun.js library in your HTML page. Most commonly this can be done by adding a &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; tag to your page that points to the bun.js library. You can either download the library and include it locally, or use a CDN (Content Delivery Network) to include it in your page.&lt;/p&gt;

&lt;p&gt;Once you have included the bun.js library in your page, you can start using it to build your user interface. The first thing you will need to do is create a bun.app object, which will be the root of your user interface. This can be done by calling the &lt;code&gt;bun.app()&lt;/code&gt; function and passing it a DOM element where you want the user interface to be rendered.&lt;/p&gt;

&lt;p&gt;Once you have created a bun.app object, you can start defining the components of your user interface. This is done using the bun.component() function, which allows you to create custom components that you can use to build your user interface. A component is a self-contained piece of the user interface that can be reused in different parts of your application.&lt;/p&gt;

&lt;p&gt;To create a component, you simply call the bun.component() function and pass it a name and a function that returns the component's template. The template is a string of HTML that describes the structure of the component. You can use the special bun-bind attribute to bind data to the template, which will cause the user interface to update automatically whenever the data changes.&lt;/p&gt;

&lt;p&gt;Once you have created your components, you can use them to build your user interface by using the bun-component attribute on DOM elements in your template. This will tell (bun.js)[&lt;a href="https://bun.sh/"&gt;https://bun.sh/&lt;/a&gt;] to render the specified component in that spot in the user interface.&lt;/p&gt;

&lt;p&gt;In addition to components, &lt;a href="https://bun.sh/"&gt;bun.js&lt;/a&gt; also provides a number of built-in elements and features that you can use to build your user interface. These include things like bun-if and bun-for attributes for conditional rendering and looping, bun-click for handling user interactions, and much more.&lt;/p&gt;

&lt;p&gt;By following these steps, you can get started with &lt;a href="https://bun.sh/"&gt;bun.js&lt;/a&gt; and begin building dynamic and interactive user interfaces. With its powerful reactive capabilities and easy-to-use syntax, &lt;a href="https://bun.sh/"&gt;bun.js&lt;/a&gt; is a great choice for building modern web applications.&lt;/p&gt;

</description>
      <category>bunjs</category>
      <category>node</category>
    </item>
    <item>
      <title>Tracing and Observing AWS ECS</title>
      <dc:creator>DeveloperSteve</dc:creator>
      <pubDate>Thu, 08 Sep 2022 06:02:02 +0000</pubDate>
      <link>https://forem.com/lumigo/tracing-and-observing-aws-ecs-56mh</link>
      <guid>https://forem.com/lumigo/tracing-and-observing-aws-ecs-56mh</guid>
      <description>&lt;p&gt;It’s no secret that application containerization has revolutionized the digital world as we know it by providing a transient gateway into elastic infrastructure that can scale and grow as needed. Where traditional virtualization was all about creating a single homogenous entity, containers are self-contained units of software, able to run in just about any environment, making them extremely portable.&lt;/p&gt;

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

&lt;p&gt;Like with all excellent adventures, there are a few things we need to prepare before we begin our journey. Have an AWS account set up and at least one ECS cluster deployed—extra points for also having a few Lambdas or other traceable services.&lt;/p&gt;

&lt;p&gt;The other thing you will need is a Lumigo account that is connected to your AWS. It’s easy to do, free, and only takes a few minutes. &lt;/p&gt;

&lt;p&gt;To get started, head to the Lumigo signup page and create your account by clicking the “Continue with Google” button, or by entering an email and password. The next step is then to connect your AWS account by clicking the “Connect to AWS” button. &lt;/p&gt;

&lt;p&gt;Once the AWS connection process is complete, Lumigo will automatically start scanning for services and applications to trace from the connected account. This process will identify resources of interest and will start tracing them in your Lumigo instance. &lt;/p&gt;

&lt;p&gt;Give it a few moments to complete the initial scans, then explore your newly created Lumigo account to see which applications have been observed and discovered. Clicking into the ECS tab from your Lumigo instance will display any clusters that Lumigo has detected from your connected AWS account. &lt;/p&gt;

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

&lt;p&gt;It’s really important to note here that those cluster metrics are only visible if you have CloudWatch container insights enabled on your cluster.&lt;/p&gt;

&lt;p&gt;Clicking into a monitored ECS application will display an overview for a cluster that includes metrics such as CPU and Memory utilization alongside running task metrics. These metrics combined give a useful insight into where resources are being consumed and the timing associated with their usage. &lt;/p&gt;

&lt;p&gt;This is where things get &lt;strong&gt;REALLY&lt;/strong&gt; interesting.&lt;/p&gt;

&lt;p&gt;By adding the Lumigo tracers into our application you can gain even more insight into the inner workings of your ECS container applications. &lt;/p&gt;

&lt;p&gt;To get started all you need to do is add a library, a few lines of code, and some environmental variables. This will slightly vary depending on what your language and codebase look like, but first, let’s check out some libraries. &lt;/p&gt;

&lt;p&gt;Lumigo has some open-source libraries for getting trace information from your application. It currently supports [Python}(&lt;a href="https://github.com/lumigo-io/opentelemetry-js-distro"&gt;https://github.com/lumigo-io/opentelemetry-js-distro&lt;/a&gt;) and &lt;a href="https://github.com/lumigo-io/opentelemetry-js-distro"&gt;NodeJS&lt;/a&gt; languages.&lt;/p&gt;

&lt;p&gt;Install the library with your nominated package manager and reference the library from within your application. Again, this may vary slightly depending on how your application is structured. &lt;/p&gt;

&lt;p&gt;Finally, we need to set 2 environmental variables on the container as part of its deployment to ECS. These can be set within the code as part of the library, but it is highly recommended to set these as environment variables.&lt;/p&gt;

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

&lt;p&gt;Now we will be able to see a lot more information from that ECS cluster application, right down to the application level and beyond. Clicking through from the services button on the cluster overview page will whisk you away to the Explore page with a resource filter set. &lt;/p&gt;

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

&lt;p&gt;This will then let you see additional information from a trace and view the associated invocation in greater detail. &lt;/p&gt;

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

&lt;p&gt;From the invocation view page you can see any associated connected services, which is really handy to being able to see the full end to end trace view from your ECS deployments.&lt;/p&gt;

&lt;p&gt;To read more check out &lt;a href="https://lumigo.io/blog/tracing-and-observing-aws-ecs/"&gt;Observing ECS Containers&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ecs</category>
      <category>containers</category>
      <category>observability</category>
    </item>
    <item>
      <title>Observing AWS ECS deployments</title>
      <dc:creator>DeveloperSteve</dc:creator>
      <pubDate>Tue, 06 Sep 2022 03:39:32 +0000</pubDate>
      <link>https://forem.com/lumigo/observing-aws-ecs-deployments-1966</link>
      <guid>https://forem.com/lumigo/observing-aws-ecs-deployments-1966</guid>
      <description>&lt;p&gt;It’s no secret that application containerization has revolutionized the digital world as we know it by providing a transient gateway into elastic infrastructure that can scale and grow as needed. Where traditional virtualization was all about creating a single homogenous entity, containers are self-contained units of software, able to run in just about any environment, making them extremely portable.&lt;/p&gt;

&lt;p&gt;To look at it another way, and to build on a popular quote with ancient origins, “With great scale comes the need for great observability”. Tracing and monitoring can help surface these issues while observing the resources being utilized by your containers. &lt;/p&gt;

&lt;p&gt;Here’s how to get started on observing and monitoring your ECS clusters with Lumigo. &lt;/p&gt;

&lt;p&gt;Like with all excellent adventures, there are a few things we need to prepare before we begin our journey. Have an AWS account set up and at least one ECS cluster deployed—extra points for also having a few Lambdas or other traceable services. To find out how Lumigo can help with your Lambda traces.&lt;/p&gt;

&lt;p&gt;The other thing you will need is a Lumigo account that is connected to your AWS. It’s easy to do, free, and only takes a few minutes. &lt;/p&gt;

&lt;p&gt;This is where things get REALLY interesting.&lt;/p&gt;

&lt;p&gt;By adding the Lumigo tracers into our application you can gain even more insight into the inner workings of your ECS container applications. &lt;/p&gt;

&lt;p&gt;To get started all you need to do is add a library, a few lines of code, and some environmental variables. This will slightly vary depending on what your language and codebase look like, but first, let’s check out some libraries. &lt;/p&gt;

&lt;p&gt;Lumigo has some open-source libraries for getting trace information from your application. It currently supports Python and NodeJS languages. &lt;/p&gt;

&lt;p&gt;If you are using another language for your application, you can still connect your trace information, but you may need a few additional steps and should use one of the OpenTelemetry collector libraries.&lt;/p&gt;

&lt;p&gt;Install the library with your nominated package manager and reference the library from within your application. Again, this may vary slightly depending on how your application is structured. &lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;OTEL_SERVICE_NAME&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This sets the application name on the service application traces and should reflect something specific to the application being traced within this container. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LUMIGO_TRACER_TOKEN&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This helps identify your traces to your Lumigo instance. It can be found by visiting Settings and then Tracing from your Lumigo dashboard. &lt;/p&gt;

&lt;p&gt;Now we will be able to see a lot more information from that ECS cluster application, right down to the application level and beyond. Clicking through from the services button on the cluster overview page will whisk you away to the Explore page with a resource filter set. &lt;/p&gt;

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

&lt;p&gt;Check out &lt;a href="https://lumigo.io/blog/tracing-and-observing-aws-ecs/"&gt;tracing and observing AWS ECS to read more&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ecs</category>
      <category>containers</category>
      <category>microservices</category>
    </item>
    <item>
      <title>With great scale comes great observability</title>
      <dc:creator>DeveloperSteve</dc:creator>
      <pubDate>Tue, 23 Aug 2022 07:47:46 +0000</pubDate>
      <link>https://forem.com/developersteve/with-great-scale-comes-great-observability-2fio</link>
      <guid>https://forem.com/developersteve/with-great-scale-comes-great-observability-2fio</guid>
      <description>&lt;p&gt;Building on Microservices is a great way to deploy applications that can scale with rapid adoption. Scaling modern microservice applications generates a large amount of logs and metrics data on multiple levels, having the right tools to manage them all is integral to microservices success. Modern architecture needs a new approach and for microservices, distributed tracing brings monitoring into the modern world of observability.&lt;/p&gt;

&lt;p&gt;Join us for the live session, 31st of August 9am ET&lt;/p&gt;

&lt;p&gt;In this live geek out session, we will get hands on deploying a multi-microservices application to AWS ECS and use distributed tracing to find, track and troubleshoot issues&lt;/p&gt;

&lt;p&gt;&lt;a href="https://info.lumigo.io/webinar-distributed-tracing-microservices"&gt;Click here to find out more&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ecs</category>
      <category>observability</category>
      <category>microservices</category>
    </item>
  </channel>
</rss>
