<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[devops]]></title><description><![CDATA[Everything you need to know about DevOps]]></description><link>https://devops.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!rMm8!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fdevops.substack.com%2Fimg%2Fsubstack.png</url><title>devops</title><link>https://devops.substack.com</link></image><generator>Substack</generator><lastBuildDate>Tue, 09 Jun 2026 17:01:16 GMT</lastBuildDate><atom:link href="https://devops.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Devops_Substack]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[devops@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[devops@substack.com]]></itunes:email><itunes:name><![CDATA[DevOps Editorial]]></itunes:name></itunes:owner><itunes:author><![CDATA[DevOps Editorial]]></itunes:author><googleplay:owner><![CDATA[devops@substack.com]]></googleplay:owner><googleplay:email><![CDATA[devops@substack.com]]></googleplay:email><googleplay:author><![CDATA[DevOps Editorial]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Building High-Performance AI Infrastructure for Enterprise Systems]]></title><description><![CDATA[Enterprises that want reliable, scalable, and cost-effective AI must design infrastructure that supports the entire lifecycle: data ingestion and preparation, model training, model optimization, deployment, observability, and continuous re-training.]]></description><link>https://devops.substack.com/p/building-high-performance-ai-infrastructure</link><guid isPermaLink="false">https://devops.substack.com/p/building-high-performance-ai-infrastructure</guid><dc:creator><![CDATA[Luciano Niamh]]></dc:creator><pubDate>Wed, 24 Dec 2025 17:22:25 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!WM51!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae93f97e-3726-497d-947d-07d05f1b3874_1332x749.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WM51!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae93f97e-3726-497d-947d-07d05f1b3874_1332x749.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WM51!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae93f97e-3726-497d-947d-07d05f1b3874_1332x749.png 424w, https://substackcdn.com/image/fetch/$s_!WM51!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae93f97e-3726-497d-947d-07d05f1b3874_1332x749.png 848w, https://substackcdn.com/image/fetch/$s_!WM51!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae93f97e-3726-497d-947d-07d05f1b3874_1332x749.png 1272w, https://substackcdn.com/image/fetch/$s_!WM51!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae93f97e-3726-497d-947d-07d05f1b3874_1332x749.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WM51!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae93f97e-3726-497d-947d-07d05f1b3874_1332x749.png" width="1332" height="749" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ae93f97e-3726-497d-947d-07d05f1b3874_1332x749.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:749,&quot;width&quot;:1332,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WM51!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae93f97e-3726-497d-947d-07d05f1b3874_1332x749.png 424w, https://substackcdn.com/image/fetch/$s_!WM51!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae93f97e-3726-497d-947d-07d05f1b3874_1332x749.png 848w, https://substackcdn.com/image/fetch/$s_!WM51!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae93f97e-3726-497d-947d-07d05f1b3874_1332x749.png 1272w, https://substackcdn.com/image/fetch/$s_!WM51!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae93f97e-3726-497d-947d-07d05f1b3874_1332x749.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Enterprises that want reliable, scalable, and cost-effective AI must design infrastructure that supports the entire lifecycle: data ingestion and preparation, model training, model optimization, deployment, observability, and continuous re-training. Today, most large companies already run AI in production. According to a recent McKinsey global survey, <a href="https://www.mckinsey.com/capabilities/quantumblack/our-insights/the-state-of-ai-2024">65% of respondents</a> report their organizations are regularly using generative AI in at least one business function.<a href="https://www.mckinsey.com/capabilities/quantumblack/our-insights/the-state-of-ai-2024?utm_source=chatgpt.com"> </a>This article covers the key architecture and engineering choices that produce high-performance AI systems at enterprise scale.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://devops.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading devops! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>Core Design Goals</h2><p>High-performance AI systems require predictable throughput, low-latency execution, and strict resource control. Architecture decisions must align model complexity, hardware selection, and operational SLAs for the appropriate <a href="https://lakefs.io/blog/ai-infrastructure/">AI infrastructure</a>.</p><ol><li><p><strong>Throughput and latency:</strong> Tune for your SLAs (batch throughput for analytics pipelines; sub-100ms or lower for many interactive services).</p></li><li><p><strong>Cost-effectiveness:</strong> Pick hardware and execution modes that match workload characteristics (spot/interruptible for non-critical training, GPU/accelerator types for LLMs).</p></li><li><p><strong>Resilience and availability: </strong>Automatic failover, multi-AZ or multi-region deployments, and versioned model rollout.</p></li><li><p><strong>Reproducibility and traceability:</strong> Data and model lineage, immutable artifacts, and ID-based provenance.</p></li><li><p><strong>Manageability: </strong>Standard operational controls: CI/CD for models, automated tests, canary rollout, and observability.</p></li></ol><h2>Data and Feature Infrastructure</h2><p>Reliable ML pipelines need consistent schemas, automated validation, and a feature store with both online (low-latency) and offline (batch) access paths. Data readiness directly affects training stability and inference accuracy.</p><ul><li><p>Use a streaming ingestion layer (Kafka/<a href="https://aws.amazon.com/kinesis/">Kinesis</a>) for event-driven features and a batch ETL layer for heavy transforms.</p></li><li><p>Materialize features in a feature store with low-latency read paths for online inference and higher-throughput stores for training.</p></li><li><p>Ensure schema evolution and backward compatibility; implement automated validation gates to avoid silent data drift.</p></li></ul><h2>Training Infrastructure And Orchestration</h2><p>Distributed training across GPUs or accelerators depends on optimized container images, efficient networking, and managed orchestration. Checkpointing and autoscaling ensure training can resume seamlessly and handle variable workloads.</p><ul><li><p>Containerized training images with a standard entrypoint.</p></li><li><p>Orchestrate distributed jobs using Kubernetes with specialized operators (Kubeflow, KServe) or managed services (Amazon SageMaker) to reduce operational overhead.</p></li><li><p>Use spot/interruptible instances for non-critical workloads to cut cost, but ensure checkpointing and restart logic.</p></li></ul><p><strong>Example:</strong> Start a <a href="https://aws.amazon.com/sagemaker/?refid=c9170d6d-cb2e-4d34-bd66-249df2d78c64">SageMaker</a> training job using the Python SDK (real-life, minimal form):</p><p><code>from sagemaker import Session, TrainingInput<br>from sagemaker.pytorch import PyTorch<br><br>sess = Session()<br>role = &#8220;arn:aws:iam::123456789012:role/SageMakerExecutionRole&#8221;<br><br>estimator = PyTorch(<br>    entry_point=&#8221;train.py&#8221;,<br>    role=role,<br>    instance_count=4,<br>    instance_type=&#8221;ml.trn1.2xlarge&#8221;,  # Trainium-backed instance for large models<br>    framework_version=&#8221;2.2&#8221;,<br>    py_version=&#8221;py39&#8221;,<br>    hyperparameters={&#8221;batch_size&#8221;: 64, &#8220;epochs&#8221;: 10}<br>)</code><br><br>estimator.fit(inputs={&#8221;training&#8221;: TrainingInput(&#8221;s3://my-bucket/training&#8221;)})</p><p>This launches a distributed training job on AWS Trainium instances; Trainium is purpose-built for training demanding models and can reduce training time and cost.</p><h2>Model Optimization and Serving</h2><p>Techniques like quantization, pruning, and compiler-based acceleration reduce inference cost while preserving accuracy. Scalable serving platforms need autoscaling, canary deployment, and optimized runtimes such as <a href="https://onnx.ai/">ONNX</a> or AWS Neuron.</p><ul><li><p>Quantization (INT8, FP16) and pruning for smaller models.</p></li><li><p>Convert to efficient runtimes (ONNX, TensorRT, AWS Neuron for Inferentia/Trainium).</p></li><li><p>Use multi-model endpoints or model sharding for large numbers of small models; use model parallelism for very large single models.</p></li></ul><p><strong>Example:</strong> A simple PyTorch dynamic quantization step before export:</p><p><code>import torch<br><br>model = torch.load("model_fp32.pt")<br>model.eval()<br>quantized = torch.quantization.quantize_dynamic(<br>    model, {torch.nn.Linear}, dtype=torch.qint8<br>)<br>torch.save(quantized, "model_int8.pt")</code></p><p>Quantization is effective for transformer-based models in many inference scenarios, cutting memory and CPU/GPU cycles without large accuracy loss.</p><p>For serving, managed platforms like Amazon SageMaker offer serverless endpoints, real-time endpoints, asynchronous endpoints, and options to host on Inferentia-powered instances for cost-effective high-throughput inference. Use autoscaling, multi-AZ endpoints, and integrate A/B or canary deployment for safe rollouts.</p><h2>Cloud AI Infrastructure and Services</h2><p>Public cloud providers provide support for end-to-end AI workloads. For example, AWS provides Trainium/Inferentia accelerators, SageMaker for managed MLOps, and Neuron SDK for optimized model execution. These services enable cost-efficient, high-throughput training and inference at scale.</p><ul><li><p><strong>Compute and accelerators:</strong> <a href="https://aws.amazon.com/ec2/instance-types/trn1">EC2 Trn1</a> (Trainium) and Inf1/Inf2 (Inferentia) instances for training and inference, respectively. Trainium targets training of very large models; Inferentia targets high-throughput, low-cost inference.</p><p></p></li><li><p><strong>Managed ML platform:</strong> Amazon SageMaker provides managed training, hyperparameter tuning, model registry, model deployment, and MLOps integrations. SageMaker supports policy-driven CI/CD and a variety of endpoint types for different inference patterns.<br></p></li><li><p><strong>Model acceleration toolchain:</strong> AWS Neuron and SageMaker integrations enable models to run efficiently on AWS accelerators, with tooling to compile and profile models.</p></li></ul><p>When to use which AWS option: for rapid iteration and managed pipelines, use SageMaker Studio and JumpStart. For lowest-cost, highest-throughput production inference for many requests, consider Inferentia-backed instances with Neuron-compiled models. For training very large models at scale, Trn1 instances reduce time-to-train compared to general-purpose GPUs in many cases.</p><h2>Observability, Governance, and Reliability</h2><p>Effective AI operations rely on detailed telemetry across latency, errors, drift, and resource utilization. Centralized model governance ensures traceability, controlled access, and compliance-ready audit trails.</p><ul><li><p><strong>Metrics and tracing:</strong> Log latency, p99/p50, throughput, error rates, and model-level signals (confidence scores, distribution shifts). Integrate with <a href="https://prometheus.io/">Prometheus</a>/Grafana or CloudWatch/AWS X-Ray.<br></p></li><li><p><strong>Data and model drift detection:</strong> Use statistical tests and automated retraining triggers. Keep human review thresholds for high-impact decisions.<br></p></li><li><p><strong>Security and compliance:</strong> Isolate training data, encrypt model artifacts at rest, enforce RBAC on model registries, and ensure audit trails for data lineage. For regulated workloads, use VPC isolation, private S3 endpoints, and KMS-managed keys.</p></li></ul><h2>Cost controls and operational playbooks</h2><p>Profiling helps select the right compute for training and inference, while autoscaling and spot instances reduce overhead. Operational runbooks support failure recovery, performance tuning, and consistent deployment workflows.</p><ul><li><p>Right-size instances by profiling workloads and using mixed instance types.</p></li><li><p>Use batch inference for large offline jobs; reserve real-time capacity only for latency-sensitive paths.</p></li><li><p>Maintain robust checkpointing and test-runbooks for accelerator failures and instance terminations.</p></li></ul><p><strong>Example:</strong> Invoking an endpoint (runtime call)</p><p><code>import boto3<br>import json<br><br>client = boto3.client("sagemaker-runtime")<br>response = client.invoke_endpoint(<br>    EndpointName="my-llm-endpoint",<br>    ContentType="application/json",<br>    Body=json.dumps({"input": "Summarize the following..."})<br>)<br>result = json.loads(response["Body"].read().decode())<br>print(result)</code></p><p>This shows the straightforward client-side path to get low-latency predictions from a SageMaker endpoint.</p><h2>Conclusion</h2><p>Building high-performance AI infrastructure requires deliberate choices across hardware, orchestration, model optimization, and operational practice. Match hardware to workload (Trainium for heavy training, Inferentia for high-throughput inference), use managed platforms to reduce operational friction, and instrument everything for observability and governance.</p><p>Remember that adoption is broad, but scaling to production-grade value often fails without the right infrastructure. Many organizations are using generative AI now, but the differences between pilots and reliable, long-running systems lie squarely in architecture, automation, and engineering rigor.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://devops.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading devops! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Infrastructure Monitoring for Better Reliability and Lower Operational Risk]]></title><description><![CDATA[Infrastructure monitoring is important to maintain reliability and reduce operational risk in modern systems.]]></description><link>https://devops.substack.com/p/infrastructure-monitoring-for-better</link><guid isPermaLink="false">https://devops.substack.com/p/infrastructure-monitoring-for-better</guid><dc:creator><![CDATA[Luciano Niamh]]></dc:creator><pubDate>Wed, 10 Dec 2025 10:41:22 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!mjTa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9748e98-26eb-4ed0-a175-574985c20fe9_1170x780.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mjTa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9748e98-26eb-4ed0-a175-574985c20fe9_1170x780.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mjTa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9748e98-26eb-4ed0-a175-574985c20fe9_1170x780.png 424w, https://substackcdn.com/image/fetch/$s_!mjTa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9748e98-26eb-4ed0-a175-574985c20fe9_1170x780.png 848w, https://substackcdn.com/image/fetch/$s_!mjTa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9748e98-26eb-4ed0-a175-574985c20fe9_1170x780.png 1272w, https://substackcdn.com/image/fetch/$s_!mjTa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9748e98-26eb-4ed0-a175-574985c20fe9_1170x780.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mjTa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9748e98-26eb-4ed0-a175-574985c20fe9_1170x780.png" width="1170" height="780" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e9748e98-26eb-4ed0-a175-574985c20fe9_1170x780.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:780,&quot;width&quot;:1170,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mjTa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9748e98-26eb-4ed0-a175-574985c20fe9_1170x780.png 424w, https://substackcdn.com/image/fetch/$s_!mjTa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9748e98-26eb-4ed0-a175-574985c20fe9_1170x780.png 848w, https://substackcdn.com/image/fetch/$s_!mjTa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9748e98-26eb-4ed0-a175-574985c20fe9_1170x780.png 1272w, https://substackcdn.com/image/fetch/$s_!mjTa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9748e98-26eb-4ed0-a175-574985c20fe9_1170x780.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Infrastructure monitoring is important to maintain reliability and reduce operational risk in modern systems. As the digital workload grows across distributed architectures, any small failure can quickly escalate into outages. According to the Uptime Institute 2024 Global Data Center Survey, <a href="https://www.datacenterdynamics.com/en/news/uptime-institute-outages-in-2024-less-frequent-and-severe-but-more-expensive/">53% of operators reported having experienced an outage</a> in the past three years (2021&#8211;2024). This makes end-to-end, real-time visibility across all infrastructure layers a core requirement for technical teams.</p><p>Infrastructure monitoring is a way of constantly monitoring and analyzing all aspects of a system (for example, compute, storage, network, databases, containers and cloud resources) to identify abnormal patterns before they lead to a failure, and to help achieve consistent and predictable performance of the system over time. An effective infrastructure monitoring strategy helps organizations eliminate blind spots, improve incident management processes, and provide a basis for making operational decisions using objective data.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://devops.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading devops! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>Why Infrastructure Monitoring Matters</h2><p>Modern systems are complex, interconnected, and highly dynamic. Infrastructure is no longer limited to servers and network switches. Teams now manage hybrid cloud clusters, containerized workloads, serverless functions, managed databases, and distributed data pipelines. This makes manual observation impractical. Effective monitoring helps teams:</p><ul><li><p>Detect performance degradation before it impacts users</p></li><li><p>Identify root causes faster during incidents</p></li><li><p>Reduce mean time to detect (MTTD) and mean time to resolve (MTTR)</p></li><li><p>Improve change safety during deployments</p></li><li><p>Reduce infrastructure-related security and compliance risks</p></li><li><p>Support capacity planning and cost control</p></li></ul><p>Monitoring also creates the technical baseline required for automation, self-healing systems, and predictive maintenance.</p><h2>Key Pillars of Infrastructure Monitoring</h2><p>A comprehensive <a href="https://www.groundcover.com/product/infrastructure-monitoring">infrastructure monitoring</a> strategy spans multiple layers. Advanced teams cover at least the following pillars.</p><h3>Compute Monitoring</h3><p>Monitoring of all computing resources should include CPU utilization, memory consumption, disk I/O, thread count and load averages. Monitoring allows you to identify whether resources are over-provisioned or under-provisioned, or if there are any starved resources. The computation metrics in both virtualized and containerized environments also include container limits, throttling and node pressure states.</p><h3>Network Monitoring</h3><p>Network health will have a direct impact on latency, throughput and availability. Packet loss, bandwidth utilization, jitter, connection errors and routing performance are critical metrics to track. Monitoring will also include VPC flow logs, nat gateway capacity, health of peering and edges for cloud environments.</p><h3>Storage and Database Monitoring</h3><p>I/O latency, throughput, and storage saturation are leading causes of service degradation. Monitoring helps detect high write pressure, slow reads, snapshot backlogs, index fragmentation, and connection pool exhaustion. Database monitoring should cover query execution times, locks, replication lag, cache hit ratios, and failover health.</p><h3>Cloud Service Monitoring</h3><p>Cloud vendors provide managed components - load balancers, serverless runtimes, message queues, API gateways, and more. Monitoring these services requires integration with native tools such as CloudWatch, <a href="https://azure.microsoft.com/en-us/products/monitor">Azure Monitor</a>, and Google Cloud Operations. Key indicators include throttles, failures, request latency, and service-specific quotas.</p><h3>Container and Orchestration Monitoring</h3><p>Containers have enabled quick scalability, created temporary lifecycles, and allowed for the separation of infrastructure from applications. The monitoring of cluster nodes, pod scheduling, container restart events, and API server performance is required to adequately monitor these features of a Kubernetes cluster. Cluster-level failures can be avoided by ensuring observability of the Kubernetes control plane and etcd health.</p><h2>Telemetry Types Required for Effective Monitoring</h2><p>Advanced monitoring relies on three kinds of telemetry.</p><ul><li><p><strong>Metrics</strong>: Time-series numerical measurements are the backbone of alerting and dashboards. Metrics are lightweight and ideal for tracking resource usage, performance, and thresholds.<br><br></p></li><li><p><strong>Logs</strong>: Logs provide granular event detail. Centralized log aggregation helps correlate infrastructure events across components, detect anomalies, and support investigations.</p><p></p></li><li><p><strong>Traces: </strong>Distributed tracing shows end-to-end request flow across multiple services. While traditionally categorized under application observability, traces also expose infrastructure bottlenecks such as slow network calls or saturated hosts.</p><p></p><p>Together, these signals provide a complete operational picture.</p></li></ul><h2>Building a Reliable Monitoring Architecture</h2><p>A mature monitoring architecture requires thoughtful design across data collection, processing, storage, visualization, and alerting.</p><h3>1. Data Collection Agents</h3><p>Agents gather metrics, logs, and traces from hosts, containers, network devices, and cloud services. Common tools include Prometheus exporters, Fluent Bit, <a href="https://opentelemetry.io/">OpenTelemetry</a> collectors, and cloud-native monitoring agents.</p><h3>2. Aggregation and Storage Layer</h3><p>Monitoring platforms must store large volumes of telemetry efficiently. The system should support high-availability storage, retention policies, downsampling, and query optimization.</p><h3>3. Real-Time Processing</h3><p>Stream-based pipelines help detect anomalies early. Techniques include rule-based alerts, threshold-based detection, and ML-driven anomaly scoring.</p><h3>4. Dashboards and Analytics</h3><p>Clear dashboards help operators see system health at a glance. Effective dashboards include:</p><ul><li><p>Node health summaries</p></li><li><p>Resource saturation heatmaps</p></li><li><p>Network performance panels</p></li><li><p>Database pressure indicators</p></li><li><p>Cluster-level capacity views</p></li></ul><p>Dashboards must support drill-downs and correlation across components.</p><h3>5. Alerting Framework</h3><p>Alerts should be actionable, noise-free, and based on well-defined severity levels. Advanced alerting includes:</p><ul><li><p>Multi-signal alerts (metrics + logs)</p></li><li><p>Rate-of-change alerts</p></li><li><p>SLO-based alerts</p></li><li><p>Silence windows during planned changes</p></li></ul><p>Clear routing rules ensure alerts reach the right team promptly.</p><h2>Reducing Operational Risk Through Monitoring</h2><p>Monitoring reduces operational risk by improving visibility and enabling better control over system stability. Key ways it helps include:</p><h3>Predicting Failures</h3><p>Trend analysis detects increasing load, memory leaks, I/O pressure, and network congestion before failure occurs.</p><h3>Improving Change Reliability</h3><p>Monitoring captures system behavior before, during, and after deployments. This helps validate stability and reduces rollback frequency.</p><h3>Strengthening Incident Response</h3><p>Real-time telemetry helps responders quickly identify failing components. This reduces <a href="https://www.ibm.com/think/topics/mttr">MTTR</a> and minimizes downtime impact.</p><h3>Supporting Compliance and Audits</h3><p>Centralized logs and monitoring data support audit trails, access tracking, and configuration verification.</p><h3>Enhancing Capacity Planning</h3><p>Historical data lets teams estimate future demand, optimize resource allocation, and avoid cost overruns.</p><h2>What Advanced Teams Do Differently</h2><p>Organizations with mature monitoring practices usually implement:</p><ul><li><p>Full coverage across all infrastructure layers</p></li><li><p>Unified telemetry via OpenTelemetry</p></li><li><p>Automated remediation for recurring scenarios</p></li><li><p>SLO-driven alerting instead of static thresholds</p></li><li><p>Chaos testing integrated with monitoring workflows</p></li><li><p>Predictive analytics using ML models</p></li><li><p>Integration with runbooks and incident automation</p></li></ul><p>These practices reduce human effort, increase resilience, and create systems that degrade gracefully under stress.</p><h2>Building a Monitoring-Driven Culture</h2><p>Tools alone cannot ensure reliability. Teams need an operational culture that treats monitoring as a first-class requirement. This includes:</p><ul><li><p>Defining clear ownership for every infrastructure component</p></li><li><p>Regularly reviewing dashboards and alerts for relevance</p></li><li><p>Documenting runbooks and escalation paths</p></li><li><p>Running drills based on real incident data</p></li><li><p>Continuously improving coverage as architecture evolves</p></li></ul><p>Monitoring must be integrated into the development, deployment, and operations lifecycle.</p><h2>Conclusion</h2><p>Infrastructure monitoring is one of the most effective ways to improve reliability and reduce operational risk. As infrastructure becomes more distributed and complex, real-time visibility across all components becomes essential. A strong monitoring strategy gives teams the insight they need to prevent failures, respond quickly, and plan for future growth. With consistent investment in telemetry, alerting, and operational processes, organizations can build systems that remain reliable under increasing scale and complexity.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://devops.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading devops! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Top 5 LLM Observability Tools in 2025]]></title><description><![CDATA[Most teams discover that their LLM stack is drifting, leaking PII, or burning tokens during a customer&#8209;visible incident, not from unit tests.]]></description><link>https://devops.substack.com/p/top-5-llm-observability-tools-in</link><guid isPermaLink="false">https://devops.substack.com/p/top-5-llm-observability-tools-in</guid><dc:creator><![CDATA[Luciano Niamh]]></dc:creator><pubDate>Wed, 26 Nov 2025 17:51:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!5Wf9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3530f989-b0f8-4cb9-a582-97989e707653_1600x1066.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5Wf9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3530f989-b0f8-4cb9-a582-97989e707653_1600x1066.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5Wf9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3530f989-b0f8-4cb9-a582-97989e707653_1600x1066.png 424w, https://substackcdn.com/image/fetch/$s_!5Wf9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3530f989-b0f8-4cb9-a582-97989e707653_1600x1066.png 848w, https://substackcdn.com/image/fetch/$s_!5Wf9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3530f989-b0f8-4cb9-a582-97989e707653_1600x1066.png 1272w, https://substackcdn.com/image/fetch/$s_!5Wf9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3530f989-b0f8-4cb9-a582-97989e707653_1600x1066.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5Wf9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3530f989-b0f8-4cb9-a582-97989e707653_1600x1066.png" width="1456" height="970" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3530f989-b0f8-4cb9-a582-97989e707653_1600x1066.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:970,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5Wf9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3530f989-b0f8-4cb9-a582-97989e707653_1600x1066.png 424w, https://substackcdn.com/image/fetch/$s_!5Wf9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3530f989-b0f8-4cb9-a582-97989e707653_1600x1066.png 848w, https://substackcdn.com/image/fetch/$s_!5Wf9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3530f989-b0f8-4cb9-a582-97989e707653_1600x1066.png 1272w, https://substackcdn.com/image/fetch/$s_!5Wf9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3530f989-b0f8-4cb9-a582-97989e707653_1600x1066.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Most teams discover that their LLM stack is drifting, leaking PII, or burning tokens during a customer&#8209;visible incident, not from unit tests. Working across different tech companies, I have seen this play out when RAG retrieval falls out of sync with embeddings, when a gateway silently retries into a cost spike, or when guardrails add 150 ms and blow SLOs. The fastest fixes come from standard telemetry. The OpenTelemetry GenAI semantic conventions now define spans, metrics, and events for LLM calls, tools, and agents, which means you can trace prompts, token usage, and tool calls instead of guessing what went wrong. My picks below favor that approach.</p><p>The Observability Tools and Platforms Market is projected to grow to <a href="https://www.marketsandmarkets.com/Market-Reports/observability-tools-and-platforms-market-69804486.html#:~:text=The%20global%20observability%20tools%20and%20platforms%20market%20is%20expected%20to,2028%2C%20at%20a%20Compound%20Annual">approximately $4.1 billion by 2028</a>, signaling that AI workloads are reshaping monitoring budgets. I analyzed 14 platforms across LLM tracing, evals, and production monitoring, then narrowed to five that consistently delivered on real&#8209;time visibility, OpenTelemetry alignment, and enterprise deployment options. You will learn where each tool fits, how it impacts latency and cost, and which one saves you the most engineering time in 2025.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://devops.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading devops! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>Top 5 LLM Observability Tools in 2025</h2><p>LLM systems fail in ways that are subtle, fast, and expensive, and teams often notice only when incidents hit production. New observability platforms designed specifically for GenAI now help teams trace prompts, measure behavior, and detect failures long before customers feel the impact. Below are the top five tools in 2025 that consistently deliver real-time, OTEL-aligned visibility for modern AI stacks.</p><h3>1. groundcover</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yxcw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cef093d-54d4-4393-bdd4-826b85728d46_1600x905.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yxcw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cef093d-54d4-4393-bdd4-826b85728d46_1600x905.png 424w, https://substackcdn.com/image/fetch/$s_!yxcw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cef093d-54d4-4393-bdd4-826b85728d46_1600x905.png 848w, https://substackcdn.com/image/fetch/$s_!yxcw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cef093d-54d4-4393-bdd4-826b85728d46_1600x905.png 1272w, https://substackcdn.com/image/fetch/$s_!yxcw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cef093d-54d4-4393-bdd4-826b85728d46_1600x905.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yxcw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cef093d-54d4-4393-bdd4-826b85728d46_1600x905.png" width="1456" height="824" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2cef093d-54d4-4393-bdd4-826b85728d46_1600x905.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:824,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yxcw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cef093d-54d4-4393-bdd4-826b85728d46_1600x905.png 424w, https://substackcdn.com/image/fetch/$s_!yxcw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cef093d-54d4-4393-bdd4-826b85728d46_1600x905.png 848w, https://substackcdn.com/image/fetch/$s_!yxcw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cef093d-54d4-4393-bdd4-826b85728d46_1600x905.png 1272w, https://substackcdn.com/image/fetch/$s_!yxcw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cef093d-54d4-4393-bdd4-826b85728d46_1600x905.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://www.groundcover.com/ai-observability/llm-observability">groundcover</a> brings zero&#8209;instrumentation LLM and agent observability built on eBPF with a Bring Your Own Cloud (BYOC) architecture. Per vendor documentation, it traces prompts, completions, costs, and reasoning paths without SDKs, keeping all data in your VPC.</p><p><strong>Best for:</strong> Platform teams that want production LLM visibility without adding SDKs or shipping data to a vendor.</p><p><strong>Key Features:</strong></p><ul><li><p>eBPF sensor captures LLM API calls with zero code changes.</p></li><li><p>BYOC deployment so prompts and responses stay in your cloud.</p></li><li><p>Tracing of prompts, token usage, latency, errors, and multi-turn agent steps.</p></li><li><p>Cost and performance analytics for RAG and tool-calling workflows.</p></li><li><p>Alignment to OpenTelemetry GenAI conventions.</p></li></ul><p><strong>Why we like it:</strong> The kernel-level capture is a time saver when you cannot pause releases to add wrappers. It also reduces data egress risk for regulated workloads.</p><p><strong>Notable Limitations:</strong></p><ul><li><p>Linux and Kubernetes first, so non&#8209;K8s estates get less benefit, as echoed by user feedback on review sites.</p></li><li><p>Some reviewers note documentation gaps and cluster resource impact in large deployments.</p></li></ul><p><strong>Pricing:</strong> Public marketplace listing shows a Team plan at <a href="https://aws.amazon.com/marketplace/pp/prodview-azkwsa4l777ww">$20 per node per month</a> and enterprise private offers, plus your own AWS infra costs.</p><h3>2. Phoenix (Arize Phoenix)</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gQ-0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08e7d752-2b59-4667-9443-f5588a8ebc19_1600x853.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gQ-0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08e7d752-2b59-4667-9443-f5588a8ebc19_1600x853.png 424w, https://substackcdn.com/image/fetch/$s_!gQ-0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08e7d752-2b59-4667-9443-f5588a8ebc19_1600x853.png 848w, https://substackcdn.com/image/fetch/$s_!gQ-0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08e7d752-2b59-4667-9443-f5588a8ebc19_1600x853.png 1272w, https://substackcdn.com/image/fetch/$s_!gQ-0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08e7d752-2b59-4667-9443-f5588a8ebc19_1600x853.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gQ-0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08e7d752-2b59-4667-9443-f5588a8ebc19_1600x853.png" width="1456" height="776" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/08e7d752-2b59-4667-9443-f5588a8ebc19_1600x853.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:776,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gQ-0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08e7d752-2b59-4667-9443-f5588a8ebc19_1600x853.png 424w, https://substackcdn.com/image/fetch/$s_!gQ-0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08e7d752-2b59-4667-9443-f5588a8ebc19_1600x853.png 848w, https://substackcdn.com/image/fetch/$s_!gQ-0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08e7d752-2b59-4667-9443-f5588a8ebc19_1600x853.png 1272w, https://substackcdn.com/image/fetch/$s_!gQ-0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F08e7d752-2b59-4667-9443-f5588a8ebc19_1600x853.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Open-source LLM tracing, evaluation, and experimentation built on OpenTelemetry, backed by Arize AI. Self host with Docker or run locally for fast debugging.</p><p><strong>Best for:</strong> Teams that want an OSS stack for traces and evals with standard OTLP ingestion.</p><p><strong>Key Features:</strong></p><ul><li><p>OpenTelemetry-based LLM tracing and span visualization.</p></li><li><p>Evals library for hallucination, toxicity, relevance, and RAG quality.</p></li><li><p>Prompt experimentation and replay from traces.</p></li><li><p>Framework integrations, for example, LangChain, LlamaIndex, DSPy.</p></li><li><p>Dataset management for reproducible experiments.</p></li></ul><p><strong>Why we like it:</strong> It gets you from notebook to repeatable evals quickly, and OTLP makes it portable to any backend.</p><p><strong>Notable Limitations:</strong></p><ul><li><p>Requires instrumentation and storage planning when you move beyond laptop use.</p></li><li><p>Community posts highlight that UX leans developer first, so non-technical stakeholders may need enablement.</p></li></ul><p><strong>Pricing:</strong> Free and open source to self host under an OSS license. Arize also offers a commercial platform, pricing not publicly listed.</p><h3>3. OpenLIT</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!d_Bj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb2f74a-e845-41bd-9399-a331f1993759_1600x855.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!d_Bj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb2f74a-e845-41bd-9399-a331f1993759_1600x855.png 424w, https://substackcdn.com/image/fetch/$s_!d_Bj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb2f74a-e845-41bd-9399-a331f1993759_1600x855.png 848w, https://substackcdn.com/image/fetch/$s_!d_Bj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb2f74a-e845-41bd-9399-a331f1993759_1600x855.png 1272w, https://substackcdn.com/image/fetch/$s_!d_Bj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb2f74a-e845-41bd-9399-a331f1993759_1600x855.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!d_Bj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb2f74a-e845-41bd-9399-a331f1993759_1600x855.png" width="1456" height="778" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fdb2f74a-e845-41bd-9399-a331f1993759_1600x855.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:778,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!d_Bj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb2f74a-e845-41bd-9399-a331f1993759_1600x855.png 424w, https://substackcdn.com/image/fetch/$s_!d_Bj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb2f74a-e845-41bd-9399-a331f1993759_1600x855.png 848w, https://substackcdn.com/image/fetch/$s_!d_Bj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb2f74a-e845-41bd-9399-a331f1993759_1600x855.png 1272w, https://substackcdn.com/image/fetch/$s_!d_Bj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdb2f74a-e845-41bd-9399-a331f1993759_1600x855.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Open-source, OpenTelemetry-native LLM observability with drop-in auto-instrumentation, cost tracking, prompt management, and a vault for secrets.</p><p><strong>Best for:</strong> Engineering teams standardizing on OpenTelemetry that want an OSS, privacy-first option they can self host.</p><p><strong>Key Features:</strong></p><ul><li><p>OTEL-native tracing and metrics with an instrument CLI.</p></li><li><p>Cost tracking across LLM providers, vector DBs, and GPUs.</p></li><li><p>Prompt versioning and an evaluation playground.</p></li><li><p>Exceptions monitoring and ClickHouse-backed analytics.</p></li><li><p>Kubernetes operator for zero-code injection (or auto-instrumentation).</p></li></ul><p><strong>Why we like it:</strong> It adopts OTEL conventions end to end, so you can route data to Grafana, Jaeger, or any OTLP backend and avoid lock-in.</p><p><strong>Notable Limitations:</strong></p><ul><li><p>Younger project, so enterprises may want to validate support and change cadence.</p></li><li><p>Self hosting means you own storage and upgrades.</p></li></ul><p><strong>Pricing:</strong> Free and open source to self host under Apache 2.0.</p><h3>4. Fiddler AI LLMOps Observability</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pzyl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055821a8-bde2-48d8-8521-fdc1a31c908d_1600x853.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pzyl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055821a8-bde2-48d8-8521-fdc1a31c908d_1600x853.png 424w, https://substackcdn.com/image/fetch/$s_!pzyl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055821a8-bde2-48d8-8521-fdc1a31c908d_1600x853.png 848w, https://substackcdn.com/image/fetch/$s_!pzyl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055821a8-bde2-48d8-8521-fdc1a31c908d_1600x853.png 1272w, https://substackcdn.com/image/fetch/$s_!pzyl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055821a8-bde2-48d8-8521-fdc1a31c908d_1600x853.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pzyl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055821a8-bde2-48d8-8521-fdc1a31c908d_1600x853.png" width="1456" height="776" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/055821a8-bde2-48d8-8521-fdc1a31c908d_1600x853.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:776,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pzyl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055821a8-bde2-48d8-8521-fdc1a31c908d_1600x853.png 424w, https://substackcdn.com/image/fetch/$s_!pzyl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055821a8-bde2-48d8-8521-fdc1a31c908d_1600x853.png 848w, https://substackcdn.com/image/fetch/$s_!pzyl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055821a8-bde2-48d8-8521-fdc1a31c908d_1600x853.png 1272w, https://substackcdn.com/image/fetch/$s_!pzyl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F055821a8-bde2-48d8-8521-fdc1a31c908d_1600x853.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Enterprise AI observability and guardrails for GenAI, with dashboards, policy-based moderation, and integrations in the NVIDIA ecosystem.</p><p><strong>Best for:</strong> Enterprises that need low-latency guardrails, policy auditing, and compliance, plus ML monitoring in one place.</p><p><strong>Key Features:</strong></p><ul><li><p>Real-time guardrails for safety, PII, jailbreak, and faithfulness.</p></li><li><p>Prompt and response analysis with alerting and reports.</p></li><li><p>50 plus LLM metrics and custom metrics for domain checks.</p></li><li><p>Integrations with NVIDIA NeMo Guardrails and partner marketplaces.</p></li><li><p>SOC 2 and HIPAA posture, focus on regulated environments.</p></li></ul><p><strong>Why we like it:</strong> The &lt;100 ms moderation path (Source 2.1) is practical for chat flows where latency budgets are tight, and the public sector routes show deployment maturity.</p><p><strong>Notable Limitations:</strong></p><ul><li><p>Learning curve and customization noted in third-party reviews.</p></li><li><p>Some marketplace tiers exclude LLM features, so validate the SKU scope for GenAI.</p></li></ul><p><strong>Pricing:</strong> Not broadly published. On AWS Marketplace, there are contract SKUs for SageMaker Partner AI Apps, for example <strong>$24,000 per year for Lite</strong> and model-based tiers, with LLM features excluded in certain SKUs, plus AWS infra costs.</p><h3>5. Openlayer LLM Observability</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bkkg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbcc1417-fb8d-44cd-af94-de8a50e2314f_1600x862.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bkkg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbcc1417-fb8d-44cd-af94-de8a50e2314f_1600x862.png 424w, https://substackcdn.com/image/fetch/$s_!bkkg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbcc1417-fb8d-44cd-af94-de8a50e2314f_1600x862.png 848w, https://substackcdn.com/image/fetch/$s_!bkkg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbcc1417-fb8d-44cd-af94-de8a50e2314f_1600x862.png 1272w, https://substackcdn.com/image/fetch/$s_!bkkg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbcc1417-fb8d-44cd-af94-de8a50e2314f_1600x862.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bkkg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbcc1417-fb8d-44cd-af94-de8a50e2314f_1600x862.png" width="1456" height="784" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dbcc1417-fb8d-44cd-af94-de8a50e2314f_1600x862.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:784,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bkkg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbcc1417-fb8d-44cd-af94-de8a50e2314f_1600x862.png 424w, https://substackcdn.com/image/fetch/$s_!bkkg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbcc1417-fb8d-44cd-af94-de8a50e2314f_1600x862.png 848w, https://substackcdn.com/image/fetch/$s_!bkkg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbcc1417-fb8d-44cd-af94-de8a50e2314f_1600x862.png 1272w, https://substackcdn.com/image/fetch/$s_!bkkg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbcc1417-fb8d-44cd-af94-de8a50e2314f_1600x862.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Observability for GenAI pipelines with tracing of prompts, latency, and cost, plus safety tests and real-time alerts for issues like hallucination or prompt injection.</p><p><strong>Best for:</strong> Product and platform teams that want tracing plus testing in one workflow, and plan to expand into governance.</p><p><strong>Key Features:</strong></p><ul><li><p>Trace prompts, tool calls, and responses across chained workflows.</p></li><li><p>Real-time alerts for latency spikes, toxic output, and injection attempts.</p></li><li><p>Cost estimation and token analytics across providers.</p></li><li><p>Integrations with OpenTelemetry, LangChain, and Anthropic.</p></li><li><p>Unified surface with evaluation features for pre-production.</p></li></ul><p><strong>Why we like it:</strong> The combination of tests and live monitors helps teams keep a single source of truth as changes move from CI to production.</p><p><strong>Notable Limitations:</strong></p><ul><li><p>Pricing and plan details change as the product evolves.</p></li><li><p>Integration depth varies by framework, so confirm coverage for your stack.</p></li></ul><p><strong>Pricing:</strong> Basic plan information appears on public product materials, but specific dollars are not published.</p><h2>LLM Observability Platform Comparison</h2><p>Before choosing an LLM observability platform, it helps to understand how the leading tools differ across tracing depth, evaluation workflows, cost insights, and safety features. The summaries below show how each solution approaches the fundamentals of LLM monitoring, particularly OpenTelemetry alignment, real-time visibility, and enterprise-ready deployment options.</p><h3>groundcover</h3><p>groundcover provides OTEL-aligned tracing for prompts, token usage, latency, and agent steps, paired with a BYOC deployment model that keeps all prompt and response data within the customer&#8217;s cloud. The platform includes cost analytics, basic quality insights, and privacy-oriented guardrail capabilities. Its major value lies in zero-code eBPF-based capture, giving teams full observability without modifying application code.</p><h3>Phoenix</h3><p>Phoenix offers OTEL-native tracing with span visualization, an open-source evaluation library, and comprehensive cost analytics. Safety-related checks focus on toxicity and faithfulness templates. Because the platform is open source, teams can run Phoenix locally or self-hosted with full OTLP compatibility, making it portable across tracing backends.</p><h3>OpenLIT</h3><p>OpenLIT delivers OTEL-native observability with automated instrumentation and detailed cost tracking across LLM providers. Its evaluation workflows and guardrails are documented directly in the open repository, and the platform is designed for full self-hosting. With ClickHouse-backed analytics and prompt versioning, OpenLIT gives teams strong ownership of both data and pipelines.</p><h3>Fiddler AI</h3><p>Fiddler AI brings enterprise-grade observability, policy-driven guardrails, and compliance-oriented dashboards. It supports OTEL-compatible tracing, advanced safety features, and real-time moderation paths integrated with NVIDIA NeMo Guardrails. The platform targets regulated environments, emphasizing control, auditability, and low-latency safety checks.</p><h3>Openlayer</h3><p>Openlayer provides tracing for prompts, workflows, and tool calls, along with safety-oriented alerts for injection attempts and toxicity. Cost analytics and evaluation tools are also included, and OTEL integrations ensure compatibility across modern GenAI stacks. For teams wanting testing and live observability on the same surface, Openlayer balances both.</p><h2>LLM Observability Strategic Decision Framework</h2><p>Selecting the right observability platform goes beyond features. The framework below outlines core architectural and operational decisions that determine which solution is a fit for production-grade GenAI deployments. These questions help teams balance developer velocity, compliance needs, latency budgets, and operational risk:</p><p><strong>1. Do we need zero-code capture in production? </strong>Zero-code capture is essential when teams cannot modify application code or add frameworks. Evaluating eBPF-based visibility, network-level tracing, and BYOC options helps minimize lead time and integration risk. Platforms requiring extensive SDK changes or proxy rewrites add friction to critical paths.</p><p><strong>2. Is our telemetry aligned to OTEL GenAI? </strong>OTEL GenAI spans, metrics, and events ensure portability across vendors and prevent lock-in. Assess OTLP compatibility, adherence to GenAI semantic conventions, and support for standardized attributes. Proprietary schemas without OTEL mapping reduce long-term flexibility.</p><p><strong>3. What is the latency budget for guardrails? </strong>Guardrails exceeding 100&#8211;200 ms can degrade chat UX. Evaluate moderation latency under realistic load and ensure batching or NeMo-style optimizations are available. Solutions that introduce high latency without tuning create downstream performance bottlenecks.</p><p><strong>4. Where will data reside? </strong>Prompts and outputs often contain PII, secrets, or regulated content. Review whether the platform supports BYOC, VPC-only data paths, or self-hosting. Pure SaaS systems that route sensitive data through vendor infrastructure may be unsuitable for high-compliance environments.</p><h2>LLM Observability Solutions Comparison: Pricing and Capabilities Overview</h2><p>Different organizational stages require different approaches to LLM observability. The guidance below summarizes deployment strategies, cost expectations, and capability fit across early-stage teams, scaling companies, and regulated enterprises. Each recommendation considers instrumentation effort, storage cost, compliance posture, and platform maturity:</p><h3>Startup or Seed</h3><p>Early-stage teams benefit from open-source, self-hosted solutions such as Phoenix or OpenLIT, paired with an OTEL backend like Grafana or Jaeger. Annual investment remains low, with spending focused on storage for traces and minimal infrastructure costs.</p><h3>Growth Stage</h3><p>Growing organizations typically pair groundcover for zero-code production tracing with Phoenix for evaluation workflows. Costs scale with node count, data volume, and cloud infrastructure usage, and marketplace options simplify budgeting.</p><h3>Enterprise or Regulated Environments</h3><p>Enterprises with compliance requirements often combine Fiddler AI for guardrails, dashboards, and policy enforcement with Phoenix or OpenLIT for development-side evals. Annual investment can reach six-figure ranges depending on scale, SLAs, and regulatory controls.</p><h2>Problems and Solutions</h2><p>LLM systems fail in predictable patterns, such as unexpected behavior in production, cost overruns, unpredictable RAG quality, and integration gaps across agents and tools. The solutions below summarize how leading platforms address these issues with real-time visibility, guardrails, and OTEL-native telemetry:</p><ul><li><p><strong>Prompt injection and toxic output: </strong>Fiddler AI provides sub-100 ms NeMo-native moderation for injection, toxicity, and jailbreak attempts, enabling low-latency safety enforcement. Openlayer adds real-time alerts for injection and toxicity within the same interface used for tracing and incident triage.</p></li><li><p><strong>Token cost spikes and silent retries: </strong>groundcover&#8217;s eBPF capture surfaces token usage across providers without SDK instrumentation and keeps all telemetry in your VPC. OpenLIT&#8217;s OTEL-native tracing adds detailed cost tracking that can flow into any OTLP backend.</p></li><li><p><strong>Slow debugging of RAG regressions: </strong>Phoenix offers OTEL-based traces and evaluation templates for faithfulness and relevance, enabling side-by-side comparisons of prompts and datasets before and after regressions. OTEL GenAI conventions make these spans queryable across different backends.</p></li><li><p><strong>Procurement and vendor onboarding barriers: </strong>groundcover and Fiddler AI both publish marketplace SKUs that simplify procurement, budgeting, and cost visibility. Public pricing references and established marketplace contracts reduce friction for large teams.</p></li></ul><h2>Bottom Line for 2025</h2><p>The right LLM observability strategy depends less on the model you use and more on how your organization builds and operates AI systems. Across all maturity levels, one trend is unmistakable: LLM applications behave more like dynamic systems than static models, and observability must evolve accordingly.</p><p>Standardizing on OTEL GenAI conventions, implementing trace-based debugging, and maintaining visibility into token usage and agent behavior are no longer nice-to-haves; they are foundational to running AI safely and cost-effectively at scale. As organizations expand their GenAI footprint in 2025, those that treat observability as part of the build process, and not a post-incident tool, will ship faster, spend smarter, and maintain far more resilient AI systems.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://devops.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading devops! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Leveraging Synthetic Monitoring Tools for Proactive Monitoring Techniques ]]></title><description><![CDATA[Synthetic monitoring is adding and simulating real user scenarios in your pipelines.]]></description><link>https://devops.substack.com/p/leveraging-synthetic-monitoring-tools</link><guid isPermaLink="false">https://devops.substack.com/p/leveraging-synthetic-monitoring-tools</guid><dc:creator><![CDATA[Luciano Niamh]]></dc:creator><pubDate>Tue, 26 Mar 2024 08:49:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ZX-M!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbb92fa5-d2f6-4438-8bdb-679ebc90012a_1600x1040.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Synthetic monitoring is adding and simulating real user scenarios in your pipelines. Often, multiple developers collaborate on a project, and code is constantly being pushed into the codebase. Now, these features can be interdependent, and with the volume of code being pushed, it is pretty hard for code reviewers to ensure that these changes don't introduce bugs or slowness in other parts of the application.</p><p>This is where synthetic monitoring comes in. With synthetic monitoring, developers can add tests that simulate real user behaviors like logging in, adding a new product to a cart, making a payment, and making a purchase. They can add test suites for all features and end-user flows, covering all the critical aspects of the application. The code will get merged only if these pipelines run successfully, which helps prevent faulty code from getting merged and also production incidents.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://devops.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading devops! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Businesses can also get metrics on API response times using synthetic monitoring, which helps understand the kind of load your application is currently able to handle and if it requires upscaling. That said, there are several synthetic monitoring tools in the market. We will discuss eight of the top-used tools for synthetic monitoring and understand the advantages of each of them.</p><h2>Checkly</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZX-M!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbb92fa5-d2f6-4438-8bdb-679ebc90012a_1600x1040.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZX-M!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbb92fa5-d2f6-4438-8bdb-679ebc90012a_1600x1040.png 424w, https://substackcdn.com/image/fetch/$s_!ZX-M!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbb92fa5-d2f6-4438-8bdb-679ebc90012a_1600x1040.png 848w, https://substackcdn.com/image/fetch/$s_!ZX-M!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbb92fa5-d2f6-4438-8bdb-679ebc90012a_1600x1040.png 1272w, https://substackcdn.com/image/fetch/$s_!ZX-M!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbb92fa5-d2f6-4438-8bdb-679ebc90012a_1600x1040.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZX-M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbb92fa5-d2f6-4438-8bdb-679ebc90012a_1600x1040.png" width="1456" height="946" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dbb92fa5-d2f6-4438-8bdb-679ebc90012a_1600x1040.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:946,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZX-M!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbb92fa5-d2f6-4438-8bdb-679ebc90012a_1600x1040.png 424w, https://substackcdn.com/image/fetch/$s_!ZX-M!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbb92fa5-d2f6-4438-8bdb-679ebc90012a_1600x1040.png 848w, https://substackcdn.com/image/fetch/$s_!ZX-M!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbb92fa5-d2f6-4438-8bdb-679ebc90012a_1600x1040.png 1272w, https://substackcdn.com/image/fetch/$s_!ZX-M!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdbb92fa5-d2f6-4438-8bdb-679ebc90012a_1600x1040.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://www.checklyhq.com/">Checkly</a> is a synthetic monitoring tool that helps you proactively test and monitor your web applications. It simulates real end-user behavior and provides actionable insights to ensure a smooth user experience. Developers and stakeholders can view useful metrics on API response times and identify bottlenecks to optimize application performance. Checkly can send alerts on several channels, including Slack and SMS. It also provides detailed logs to enable on-call engineers to debug issues rapidly. Checkly provides Microsoft Playwright integration, which enables automated testing of the UI. It is a great solution for teams to get started with synthetic monitoring on applications. It integrates seamlessly with popular CI/CD tools and alerting platforms. Checkly is a great choice for organizations getting started owing to its free tier and flexible code-based monitoring, allowing for custom texts in your setup.</p><h2>Pingdom</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fuZ5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F038cbd45-fc71-468f-bcfd-cca525cc55aa_1591x835.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fuZ5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F038cbd45-fc71-468f-bcfd-cca525cc55aa_1591x835.png 424w, https://substackcdn.com/image/fetch/$s_!fuZ5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F038cbd45-fc71-468f-bcfd-cca525cc55aa_1591x835.png 848w, https://substackcdn.com/image/fetch/$s_!fuZ5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F038cbd45-fc71-468f-bcfd-cca525cc55aa_1591x835.png 1272w, https://substackcdn.com/image/fetch/$s_!fuZ5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F038cbd45-fc71-468f-bcfd-cca525cc55aa_1591x835.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fuZ5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F038cbd45-fc71-468f-bcfd-cca525cc55aa_1591x835.png" width="1456" height="764" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/038cbd45-fc71-468f-bcfd-cca525cc55aa_1591x835.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:764,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fuZ5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F038cbd45-fc71-468f-bcfd-cca525cc55aa_1591x835.png 424w, https://substackcdn.com/image/fetch/$s_!fuZ5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F038cbd45-fc71-468f-bcfd-cca525cc55aa_1591x835.png 848w, https://substackcdn.com/image/fetch/$s_!fuZ5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F038cbd45-fc71-468f-bcfd-cca525cc55aa_1591x835.png 1272w, https://substackcdn.com/image/fetch/$s_!fuZ5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F038cbd45-fc71-468f-bcfd-cca525cc55aa_1591x835.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://www.pingdom.com/">Pingdom</a> is a synthetic monitoring tool popular for its user-friendly interface. It can provide powerful performance insights. You can monitor your website's speed and ensure all the functionality is working as expected, ensuring a smooth user experience. It is a great load testing tool, measuring the loading times of webpages and individual components, which helps in identifying issues and optimization. The interface is easy to use for non-technical users. You can get started with basic monitoring for free using the free tier. However, if you want to write advanced testing scripts, you will need external tools, as Pingdom only allows basic customs checks. Prices can be on the higher side for small businesses.</p><h2>Sematext&nbsp;</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bBfN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdc9c6b5-b95b-4129-bdf2-4d62dab06121_1600x682.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bBfN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdc9c6b5-b95b-4129-bdf2-4d62dab06121_1600x682.png 424w, https://substackcdn.com/image/fetch/$s_!bBfN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdc9c6b5-b95b-4129-bdf2-4d62dab06121_1600x682.png 848w, https://substackcdn.com/image/fetch/$s_!bBfN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdc9c6b5-b95b-4129-bdf2-4d62dab06121_1600x682.png 1272w, https://substackcdn.com/image/fetch/$s_!bBfN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdc9c6b5-b95b-4129-bdf2-4d62dab06121_1600x682.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bBfN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdc9c6b5-b95b-4129-bdf2-4d62dab06121_1600x682.png" width="1456" height="621" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cdc9c6b5-b95b-4129-bdf2-4d62dab06121_1600x682.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:621,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bBfN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdc9c6b5-b95b-4129-bdf2-4d62dab06121_1600x682.png 424w, https://substackcdn.com/image/fetch/$s_!bBfN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdc9c6b5-b95b-4129-bdf2-4d62dab06121_1600x682.png 848w, https://substackcdn.com/image/fetch/$s_!bBfN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdc9c6b5-b95b-4129-bdf2-4d62dab06121_1600x682.png 1272w, https://substackcdn.com/image/fetch/$s_!bBfN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcdc9c6b5-b95b-4129-bdf2-4d62dab06121_1600x682.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://sematext.com/">Sematext</a> is a synthetic mentoring tool known for being cost-effective and efficient. It checks if your application is up and running from different parts of the world, sending alerts in case of downtime. Developers can measure load times and API response times, which can help you find bottlenecks and fix them. Sematext lets you write scripts to simulate real end-user behavior to test complex application flows. Developers can create customized alerts based on your requirements and trigger cases for more focused errors. Sematext integrates seamlessly with several open source platforms, making it more flexible. However, the global coverage for testing is less than that of other synthetic monitoring tools. Sematext would be a good, cost-effective choice for businesses that are just starting with synthetic monitoring.</p><h2>Dynatrace</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PlSz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c210dff-ae9a-4e06-a3ff-1bb84864abb2_1600x948.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PlSz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c210dff-ae9a-4e06-a3ff-1bb84864abb2_1600x948.png 424w, https://substackcdn.com/image/fetch/$s_!PlSz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c210dff-ae9a-4e06-a3ff-1bb84864abb2_1600x948.png 848w, https://substackcdn.com/image/fetch/$s_!PlSz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c210dff-ae9a-4e06-a3ff-1bb84864abb2_1600x948.png 1272w, https://substackcdn.com/image/fetch/$s_!PlSz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c210dff-ae9a-4e06-a3ff-1bb84864abb2_1600x948.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PlSz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c210dff-ae9a-4e06-a3ff-1bb84864abb2_1600x948.png" width="1456" height="863" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2c210dff-ae9a-4e06-a3ff-1bb84864abb2_1600x948.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:863,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PlSz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c210dff-ae9a-4e06-a3ff-1bb84864abb2_1600x948.png 424w, https://substackcdn.com/image/fetch/$s_!PlSz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c210dff-ae9a-4e06-a3ff-1bb84864abb2_1600x948.png 848w, https://substackcdn.com/image/fetch/$s_!PlSz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c210dff-ae9a-4e06-a3ff-1bb84864abb2_1600x948.png 1272w, https://substackcdn.com/image/fetch/$s_!PlSz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c210dff-ae9a-4e06-a3ff-1bb84864abb2_1600x948.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://www.dynatrace.com/">Dynatrace</a> is a powerful synthetic monitoring tool. It allows you to create tests simulating complex user journeys with multiple steps and interactions. You can monitor the uptimes of selected web pages and analyze API usage metrics for certain endpoints. Dynatrace lets you create custom alerts based on specific triggers and threshold values to receive meaningful notifications and reduce false alerts. You can use detailed logs and metrics provided by Dynatrace to perform a detailed root-cause analysis of bugs. It also provides waterfall chats to visualize the loading of web pages and identify bottlenecks. Davis, Dynatrace&#8217;s AI engine, provides actionable recommendations and suggestions for troubleshooting based on the application performance data.</p><h2>New Relic</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jGFx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22027aaa-5083-4654-8897-8ea3b25255c7_1600x872.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jGFx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22027aaa-5083-4654-8897-8ea3b25255c7_1600x872.png 424w, https://substackcdn.com/image/fetch/$s_!jGFx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22027aaa-5083-4654-8897-8ea3b25255c7_1600x872.png 848w, https://substackcdn.com/image/fetch/$s_!jGFx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22027aaa-5083-4654-8897-8ea3b25255c7_1600x872.png 1272w, https://substackcdn.com/image/fetch/$s_!jGFx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22027aaa-5083-4654-8897-8ea3b25255c7_1600x872.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jGFx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22027aaa-5083-4654-8897-8ea3b25255c7_1600x872.png" width="1456" height="794" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/22027aaa-5083-4654-8897-8ea3b25255c7_1600x872.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:794,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jGFx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22027aaa-5083-4654-8897-8ea3b25255c7_1600x872.png 424w, https://substackcdn.com/image/fetch/$s_!jGFx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22027aaa-5083-4654-8897-8ea3b25255c7_1600x872.png 848w, https://substackcdn.com/image/fetch/$s_!jGFx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22027aaa-5083-4654-8897-8ea3b25255c7_1600x872.png 1272w, https://substackcdn.com/image/fetch/$s_!jGFx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22027aaa-5083-4654-8897-8ea3b25255c7_1600x872.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://newrelic.com/">New Relic</a> is a popular synthetic monitoring tool providing several powerful features. Developers can simulate complex user journeys for their applications. New Relic is beginner-friendly, allowing easy user journey simulation with drag-and-drop scripting. This makes it easier for both technical and non-technical users to use. It has shared dashboards and alerting for fast incident resolution. Developers can create complex user workflows with JavaScript with the help of New Relic&#8217;s advanced scripting capabilities. New Relic also allows you to integrate with other tools for a unified monitoring experience. It scales seamlessly, accommodating different monitoring scenarios. However, New Relic might be on the pricier side as compared to its competitors for basic monitoring.</p><h2>Catchpoint</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!r5pd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ff7e400-a610-43cc-ad6f-c8329329686d_1600x774.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!r5pd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ff7e400-a610-43cc-ad6f-c8329329686d_1600x774.png 424w, https://substackcdn.com/image/fetch/$s_!r5pd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ff7e400-a610-43cc-ad6f-c8329329686d_1600x774.png 848w, https://substackcdn.com/image/fetch/$s_!r5pd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ff7e400-a610-43cc-ad6f-c8329329686d_1600x774.png 1272w, https://substackcdn.com/image/fetch/$s_!r5pd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ff7e400-a610-43cc-ad6f-c8329329686d_1600x774.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!r5pd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ff7e400-a610-43cc-ad6f-c8329329686d_1600x774.png" width="1456" height="704" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0ff7e400-a610-43cc-ad6f-c8329329686d_1600x774.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:704,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!r5pd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ff7e400-a610-43cc-ad6f-c8329329686d_1600x774.png 424w, https://substackcdn.com/image/fetch/$s_!r5pd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ff7e400-a610-43cc-ad6f-c8329329686d_1600x774.png 848w, https://substackcdn.com/image/fetch/$s_!r5pd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ff7e400-a610-43cc-ad6f-c8329329686d_1600x774.png 1272w, https://substackcdn.com/image/fetch/$s_!r5pd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ff7e400-a610-43cc-ad6f-c8329329686d_1600x774.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://www.catchpoint.com/">Catchpoint</a> is a synthetic mentoring tool known for its unmatched global reach, with coverage of over 75+ countries. Correlator, Catchpoint&#8217;s AI brain, analyzes data, pinpointing root causes and suggesting solutions. You can track performance and spot trends, which enable you to make effective scaling decisions to prevent issues. Catchpoint allows you to create complex tests for user stories, which can run at scheduled intervals to identify potential issues. Along with web applications, you can also test mobile apps and IoT devices with Catchpoint.</p><h2>Uptrends</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-bnQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96645e5c-03b2-4c19-b130-3277265d4c6c_1600x838.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-bnQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96645e5c-03b2-4c19-b130-3277265d4c6c_1600x838.png 424w, https://substackcdn.com/image/fetch/$s_!-bnQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96645e5c-03b2-4c19-b130-3277265d4c6c_1600x838.png 848w, https://substackcdn.com/image/fetch/$s_!-bnQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96645e5c-03b2-4c19-b130-3277265d4c6c_1600x838.png 1272w, https://substackcdn.com/image/fetch/$s_!-bnQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96645e5c-03b2-4c19-b130-3277265d4c6c_1600x838.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-bnQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96645e5c-03b2-4c19-b130-3277265d4c6c_1600x838.png" width="1456" height="763" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/96645e5c-03b2-4c19-b130-3277265d4c6c_1600x838.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:763,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-bnQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96645e5c-03b2-4c19-b130-3277265d4c6c_1600x838.png 424w, https://substackcdn.com/image/fetch/$s_!-bnQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96645e5c-03b2-4c19-b130-3277265d4c6c_1600x838.png 848w, https://substackcdn.com/image/fetch/$s_!-bnQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96645e5c-03b2-4c19-b130-3277265d4c6c_1600x838.png 1272w, https://substackcdn.com/image/fetch/$s_!-bnQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96645e5c-03b2-4c19-b130-3277265d4c6c_1600x838.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://www.uptrends.com/">Uptrends</a> is a user-friendly solution focusing on real-browser checks. It simulates user journeys from global regions across browsers, delivering actionable insights. Uptrends has visual scripting, which makes it easier for non-technical users to create complex checks using drag-and-drop mechanisms. It provides real-time metrics, charts, and reports based on your application&#8217;s performance across devices and regions. You can customize alerts and send them to several channels, including SMS and Slack.</p><h2>Datadog</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zCNa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3b03bc-d686-42c0-81c0-56ca3e41f35f_1600x798.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zCNa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3b03bc-d686-42c0-81c0-56ca3e41f35f_1600x798.png 424w, https://substackcdn.com/image/fetch/$s_!zCNa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3b03bc-d686-42c0-81c0-56ca3e41f35f_1600x798.png 848w, https://substackcdn.com/image/fetch/$s_!zCNa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3b03bc-d686-42c0-81c0-56ca3e41f35f_1600x798.png 1272w, https://substackcdn.com/image/fetch/$s_!zCNa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3b03bc-d686-42c0-81c0-56ca3e41f35f_1600x798.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zCNa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3b03bc-d686-42c0-81c0-56ca3e41f35f_1600x798.png" width="1456" height="726" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7c3b03bc-d686-42c0-81c0-56ca3e41f35f_1600x798.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:726,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zCNa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3b03bc-d686-42c0-81c0-56ca3e41f35f_1600x798.png 424w, https://substackcdn.com/image/fetch/$s_!zCNa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3b03bc-d686-42c0-81c0-56ca3e41f35f_1600x798.png 848w, https://substackcdn.com/image/fetch/$s_!zCNa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3b03bc-d686-42c0-81c0-56ca3e41f35f_1600x798.png 1272w, https://substackcdn.com/image/fetch/$s_!zCNa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c3b03bc-d686-42c0-81c0-56ca3e41f35f_1600x798.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://www.datadoghq.com/">Datadog</a> is a synthetic monitoring solution with advanced capabilities and scalability. It provides global coverage for testing along with the ability to create complex scripts simulating user logins and journeys. Datatog comes with intelligent anomaly detection and alerting mechanisms as opposed to traditional threshold-based alerting systems, reducing false positives. It can integrate seamlessly with other DevOps workflows and tools, streamlining the testing process and making it easier for development teams to detect and resolve bugs faster.</p><h2>Conclusion</h2><p>As teams collaborate and application codebases get more and more complex, it gets increasingly hard to ensure that new changes don&#8217;t break existing functionalities, especially when multiple developers are working on the same code base. This can lead to production incidents and reduced application performance. It is also important to ensure that the application behaves as expected uniformly across different browsers, devices, and regions.&nbsp;</p><p>Hence, teams need to have a robust end-to-end testing mechanism in place so that their issues are detected and fixed before the code gets pushed to the code base. Integrating <a href="https://www.checklyhq.com/blog/what-is-synthetic-monitoring/">synthetic monitoring</a> tools with CI/CD pipelines helps teams streamline development, resolve incidents before they occur, and also gain actionable information from reports to improve scaling strategies.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://devops.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading devops! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Kubernetes Monitoring Made Easy: Tools and Best Practices]]></title><description><![CDATA[Introduction]]></description><link>https://devops.substack.com/p/kubernetes-monitoring-made-easy-tools</link><guid isPermaLink="false">https://devops.substack.com/p/kubernetes-monitoring-made-easy-tools</guid><dc:creator><![CDATA[Luciano Niamh]]></dc:creator><pubDate>Fri, 27 Oct 2023 12:57:41 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!GhuB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd93fb2fe-ebd7-4a70-b4bf-2bdc77ad5410_1600x1063.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1></h1><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GhuB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd93fb2fe-ebd7-4a70-b4bf-2bdc77ad5410_1600x1063.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GhuB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd93fb2fe-ebd7-4a70-b4bf-2bdc77ad5410_1600x1063.png 424w, https://substackcdn.com/image/fetch/$s_!GhuB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd93fb2fe-ebd7-4a70-b4bf-2bdc77ad5410_1600x1063.png 848w, https://substackcdn.com/image/fetch/$s_!GhuB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd93fb2fe-ebd7-4a70-b4bf-2bdc77ad5410_1600x1063.png 1272w, https://substackcdn.com/image/fetch/$s_!GhuB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd93fb2fe-ebd7-4a70-b4bf-2bdc77ad5410_1600x1063.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GhuB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd93fb2fe-ebd7-4a70-b4bf-2bdc77ad5410_1600x1063.png" width="1456" height="967" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d93fb2fe-ebd7-4a70-b4bf-2bdc77ad5410_1600x1063.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:967,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GhuB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd93fb2fe-ebd7-4a70-b4bf-2bdc77ad5410_1600x1063.png 424w, https://substackcdn.com/image/fetch/$s_!GhuB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd93fb2fe-ebd7-4a70-b4bf-2bdc77ad5410_1600x1063.png 848w, https://substackcdn.com/image/fetch/$s_!GhuB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd93fb2fe-ebd7-4a70-b4bf-2bdc77ad5410_1600x1063.png 1272w, https://substackcdn.com/image/fetch/$s_!GhuB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd93fb2fe-ebd7-4a70-b4bf-2bdc77ad5410_1600x1063.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Introduction</h2><p>Kubernetes, the versatile container orchestration platform, has revolutionized the world of containerization and microservices. While Kubernetes offers powerful features for managing applications, it's essential to monitor your clusters to ensure optimal performance, reliability, and security. Kubernetes monitoring tools play a pivotal role in helping you gain insights into the health and performance of your clusters. In this listicle, we'll explore eight essential Kubernetes monitoring tools, each with unique features to make your monitoring tasks easier and more efficient.</p><h2>groundcover</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AXgo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7b650ea-2fc0-4a27-aefb-c8035f98d42d_1600x662.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AXgo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7b650ea-2fc0-4a27-aefb-c8035f98d42d_1600x662.png 424w, https://substackcdn.com/image/fetch/$s_!AXgo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7b650ea-2fc0-4a27-aefb-c8035f98d42d_1600x662.png 848w, https://substackcdn.com/image/fetch/$s_!AXgo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7b650ea-2fc0-4a27-aefb-c8035f98d42d_1600x662.png 1272w, https://substackcdn.com/image/fetch/$s_!AXgo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7b650ea-2fc0-4a27-aefb-c8035f98d42d_1600x662.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AXgo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7b650ea-2fc0-4a27-aefb-c8035f98d42d_1600x662.png" width="1456" height="602" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b7b650ea-2fc0-4a27-aefb-c8035f98d42d_1600x662.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:602,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!AXgo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7b650ea-2fc0-4a27-aefb-c8035f98d42d_1600x662.png 424w, https://substackcdn.com/image/fetch/$s_!AXgo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7b650ea-2fc0-4a27-aefb-c8035f98d42d_1600x662.png 848w, https://substackcdn.com/image/fetch/$s_!AXgo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7b650ea-2fc0-4a27-aefb-c8035f98d42d_1600x662.png 1272w, https://substackcdn.com/image/fetch/$s_!AXgo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7b650ea-2fc0-4a27-aefb-c8035f98d42d_1600x662.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://www.groundcover.com/">groundcover</a> is an all-in-one Kubernetes (cloud native application) monitoring solution that excels in real-time monitoring, alerting, and log aggregation. With its user-friendly interface and customizable alerting system, groundcover simplifies the process of keeping your Kubernetes clusters healthy and performant. It provides comprehensive insights into resource usage, performance bottlenecks, and potential issues within your clusters. groundcover's robust log aggregation capabilities make troubleshooting a breeze, allowing you to pinpoint and resolve issues quickly.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://devops.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading devops! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>In addition to monitoring clusters, groundcover also offers powerful visualization tools, enabling you to create customized dashboards tailored to your specific needs. These dashboards help you gain real-time insights into the state of your applications and infrastructure, making it easier to optimize resource allocation and ensure the reliability of your services.</p><h2>Prometheus</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pA3V!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F471e0d71-6886-4a1c-a994-b87a27853780_1563x561.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pA3V!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F471e0d71-6886-4a1c-a994-b87a27853780_1563x561.png 424w, https://substackcdn.com/image/fetch/$s_!pA3V!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F471e0d71-6886-4a1c-a994-b87a27853780_1563x561.png 848w, https://substackcdn.com/image/fetch/$s_!pA3V!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F471e0d71-6886-4a1c-a994-b87a27853780_1563x561.png 1272w, https://substackcdn.com/image/fetch/$s_!pA3V!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F471e0d71-6886-4a1c-a994-b87a27853780_1563x561.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pA3V!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F471e0d71-6886-4a1c-a994-b87a27853780_1563x561.png" width="1456" height="523" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/471e0d71-6886-4a1c-a994-b87a27853780_1563x561.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:523,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pA3V!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F471e0d71-6886-4a1c-a994-b87a27853780_1563x561.png 424w, https://substackcdn.com/image/fetch/$s_!pA3V!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F471e0d71-6886-4a1c-a994-b87a27853780_1563x561.png 848w, https://substackcdn.com/image/fetch/$s_!pA3V!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F471e0d71-6886-4a1c-a994-b87a27853780_1563x561.png 1272w, https://substackcdn.com/image/fetch/$s_!pA3V!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F471e0d71-6886-4a1c-a994-b87a27853780_1563x561.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://prometheus.io/">Prometheus</a> is an open-source monitoring and alerting toolkit that is widely adopted in the Kubernetes community. It stands out for its ability to collect, query, and alert on time-series data, which is crucial for understanding the performance and health of your Kubernetes clusters. Prometheus is designed to be highly adaptable, making it easy to integrate with various systems and applications.</p><p>One of its strengths lies in its alerting capabilities. You can set up custom alerts based on specific conditions or thresholds, ensuring you are notified of potential issues as soon as they arise. With Prometheus, you can also create dynamic and informative dashboards, empowering you to visualize and analyze the data collected from your clusters.</p><h2>Grafana</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MsF7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab4c33a3-f807-4408-9126-ff53768134c8_1570x730.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MsF7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab4c33a3-f807-4408-9126-ff53768134c8_1570x730.png 424w, https://substackcdn.com/image/fetch/$s_!MsF7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab4c33a3-f807-4408-9126-ff53768134c8_1570x730.png 848w, https://substackcdn.com/image/fetch/$s_!MsF7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab4c33a3-f807-4408-9126-ff53768134c8_1570x730.png 1272w, https://substackcdn.com/image/fetch/$s_!MsF7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab4c33a3-f807-4408-9126-ff53768134c8_1570x730.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MsF7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab4c33a3-f807-4408-9126-ff53768134c8_1570x730.png" width="1456" height="677" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ab4c33a3-f807-4408-9126-ff53768134c8_1570x730.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:677,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!MsF7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab4c33a3-f807-4408-9126-ff53768134c8_1570x730.png 424w, https://substackcdn.com/image/fetch/$s_!MsF7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab4c33a3-f807-4408-9126-ff53768134c8_1570x730.png 848w, https://substackcdn.com/image/fetch/$s_!MsF7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab4c33a3-f807-4408-9126-ff53768134c8_1570x730.png 1272w, https://substackcdn.com/image/fetch/$s_!MsF7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fab4c33a3-f807-4408-9126-ff53768134c8_1570x730.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://grafana.com/">Grafana</a> is a versatile open-source platform for monitoring and observability that complements Prometheus and other data sources seamlessly. It offers a range of features that simplify Kubernetes monitoring, including a rich set of visualization options, alerting, and interactive dashboards. Grafana is known for its user-friendly interface, making it accessible to both beginners and seasoned professionals.</p><p>With Grafana, you can create customized dashboards with easy-to-understand visualizations that provide insights into your Kubernetes clusters' performance, resource usage, and overall health. It supports various data sources, ensuring you can consolidate data from multiple systems into a single dashboard.</p><h2>Datadog</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iuYL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe568e8e3-134a-4c2d-94bb-cd8a82126e3c_1600x782.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iuYL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe568e8e3-134a-4c2d-94bb-cd8a82126e3c_1600x782.png 424w, https://substackcdn.com/image/fetch/$s_!iuYL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe568e8e3-134a-4c2d-94bb-cd8a82126e3c_1600x782.png 848w, https://substackcdn.com/image/fetch/$s_!iuYL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe568e8e3-134a-4c2d-94bb-cd8a82126e3c_1600x782.png 1272w, https://substackcdn.com/image/fetch/$s_!iuYL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe568e8e3-134a-4c2d-94bb-cd8a82126e3c_1600x782.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iuYL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe568e8e3-134a-4c2d-94bb-cd8a82126e3c_1600x782.png" width="1456" height="712" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e568e8e3-134a-4c2d-94bb-cd8a82126e3c_1600x782.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:712,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!iuYL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe568e8e3-134a-4c2d-94bb-cd8a82126e3c_1600x782.png 424w, https://substackcdn.com/image/fetch/$s_!iuYL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe568e8e3-134a-4c2d-94bb-cd8a82126e3c_1600x782.png 848w, https://substackcdn.com/image/fetch/$s_!iuYL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe568e8e3-134a-4c2d-94bb-cd8a82126e3c_1600x782.png 1272w, https://substackcdn.com/image/fetch/$s_!iuYL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe568e8e3-134a-4c2d-94bb-cd8a82126e3c_1600x782.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://www.datadoghq.com/">Datadog</a> is a cloud-based monitoring and analytics platform that offers Kubernetes-specific integrations, making it a top choice for those working with containerized applications. Datadog provides end-to-end visibility into your Kubernetes clusters, including infrastructure monitoring, APM, and distributed tracing.</p><p>One of Datadog's standout features is its machine learning capabilities, which can help you identify patterns and anomalies within your Kubernetes environment, allowing for proactive issue resolution. It also offers extensive integrations, allowing you to monitor various other services, applications, and databases in conjunction with your Kubernetes clusters.&nbsp;</p><h2>New Relic</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!0rbX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf7edf3c-9a5d-474e-92e3-ce80b6fb97d8_1600x603.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!0rbX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf7edf3c-9a5d-474e-92e3-ce80b6fb97d8_1600x603.png 424w, https://substackcdn.com/image/fetch/$s_!0rbX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf7edf3c-9a5d-474e-92e3-ce80b6fb97d8_1600x603.png 848w, https://substackcdn.com/image/fetch/$s_!0rbX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf7edf3c-9a5d-474e-92e3-ce80b6fb97d8_1600x603.png 1272w, https://substackcdn.com/image/fetch/$s_!0rbX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf7edf3c-9a5d-474e-92e3-ce80b6fb97d8_1600x603.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!0rbX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf7edf3c-9a5d-474e-92e3-ce80b6fb97d8_1600x603.png" width="1456" height="549" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bf7edf3c-9a5d-474e-92e3-ce80b6fb97d8_1600x603.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:549,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!0rbX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf7edf3c-9a5d-474e-92e3-ce80b6fb97d8_1600x603.png 424w, https://substackcdn.com/image/fetch/$s_!0rbX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf7edf3c-9a5d-474e-92e3-ce80b6fb97d8_1600x603.png 848w, https://substackcdn.com/image/fetch/$s_!0rbX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf7edf3c-9a5d-474e-92e3-ce80b6fb97d8_1600x603.png 1272w, https://substackcdn.com/image/fetch/$s_!0rbX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf7edf3c-9a5d-474e-92e3-ce80b6fb97d8_1600x603.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://newrelic.com/">New Relic</a> is a complete observability platform that offers Kubernetes monitoring as part of its broader suite of tools. New Relic's real-time data, distributed tracing, and AI-driven insights make it a powerful choice for managing Kubernetes deployments.</p><p>With New Relic, you can gain deep insights into the performance of your applications and infrastructure, enabling you to identify and resolve issues quickly. Its AIOps features assist in automating the detection and remediation of anomalies, ensuring the stability and reliability of your Kubernetes clusters.&nbsp;</p><h2>Sysdig</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7L_5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04543e75-b20b-4225-ada7-feeed17b7c83_1600x676.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7L_5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04543e75-b20b-4225-ada7-feeed17b7c83_1600x676.png 424w, https://substackcdn.com/image/fetch/$s_!7L_5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04543e75-b20b-4225-ada7-feeed17b7c83_1600x676.png 848w, https://substackcdn.com/image/fetch/$s_!7L_5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04543e75-b20b-4225-ada7-feeed17b7c83_1600x676.png 1272w, https://substackcdn.com/image/fetch/$s_!7L_5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04543e75-b20b-4225-ada7-feeed17b7c83_1600x676.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7L_5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04543e75-b20b-4225-ada7-feeed17b7c83_1600x676.png" width="1456" height="615" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/04543e75-b20b-4225-ada7-feeed17b7c83_1600x676.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:615,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7L_5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04543e75-b20b-4225-ada7-feeed17b7c83_1600x676.png 424w, https://substackcdn.com/image/fetch/$s_!7L_5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04543e75-b20b-4225-ada7-feeed17b7c83_1600x676.png 848w, https://substackcdn.com/image/fetch/$s_!7L_5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04543e75-b20b-4225-ada7-feeed17b7c83_1600x676.png 1272w, https://substackcdn.com/image/fetch/$s_!7L_5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04543e75-b20b-4225-ada7-feeed17b7c83_1600x676.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://sysdig.com/">Sysdig</a> is a container intelligence platform built specifically for Kubernetes. It excels in providing deep visibility into containers, infrastructure, and security aspects. Sysdig's Kubernetes integration ensures you can monitor and secure your clusters effectively.</p><p>One of Sysdig's strengths is its ability to capture system-level data, which is crucial for understanding container performance and security. It offers powerful troubleshooting features, including the ability to trace system calls, making it a valuable tool for diagnosing issues within your Kubernetes clusters.&nbsp;</p><h2>Zabbix</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kjG0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8fcc3ef-a4ce-4962-b636-fce60c53f422_1600x704.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kjG0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8fcc3ef-a4ce-4962-b636-fce60c53f422_1600x704.png 424w, https://substackcdn.com/image/fetch/$s_!kjG0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8fcc3ef-a4ce-4962-b636-fce60c53f422_1600x704.png 848w, https://substackcdn.com/image/fetch/$s_!kjG0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8fcc3ef-a4ce-4962-b636-fce60c53f422_1600x704.png 1272w, https://substackcdn.com/image/fetch/$s_!kjG0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8fcc3ef-a4ce-4962-b636-fce60c53f422_1600x704.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kjG0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8fcc3ef-a4ce-4962-b636-fce60c53f422_1600x704.png" width="1456" height="641" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8fcc3ef-a4ce-4962-b636-fce60c53f422_1600x704.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:641,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kjG0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8fcc3ef-a4ce-4962-b636-fce60c53f422_1600x704.png 424w, https://substackcdn.com/image/fetch/$s_!kjG0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8fcc3ef-a4ce-4962-b636-fce60c53f422_1600x704.png 848w, https://substackcdn.com/image/fetch/$s_!kjG0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8fcc3ef-a4ce-4962-b636-fce60c53f422_1600x704.png 1272w, https://substackcdn.com/image/fetch/$s_!kjG0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8fcc3ef-a4ce-4962-b636-fce60c53f422_1600x704.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://www.zabbix.com/">Zabbix</a> is an open-source monitoring platform that offers a wide array of monitoring capabilities for Kubernetes environments. With Zabbix, you can monitor cluster health, resource usage, and individual containers. It stands out for its flexibility, allowing you to create custom checks and alerting rules to suit your specific monitoring needs.</p><p>Zabbix's powerful yet straightforward web interface makes it accessible to users of all levels, while its extensibility through plugins and templates ensures you can adapt it to your evolving Kubernetes infrastructure.&nbsp;</p><h2>Kibana</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DIGl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ce2d4e2-7511-4f54-bda0-c30f5e461e0d_1600x748.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DIGl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ce2d4e2-7511-4f54-bda0-c30f5e461e0d_1600x748.png 424w, https://substackcdn.com/image/fetch/$s_!DIGl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ce2d4e2-7511-4f54-bda0-c30f5e461e0d_1600x748.png 848w, https://substackcdn.com/image/fetch/$s_!DIGl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ce2d4e2-7511-4f54-bda0-c30f5e461e0d_1600x748.png 1272w, https://substackcdn.com/image/fetch/$s_!DIGl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ce2d4e2-7511-4f54-bda0-c30f5e461e0d_1600x748.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DIGl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ce2d4e2-7511-4f54-bda0-c30f5e461e0d_1600x748.png" width="1456" height="681" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6ce2d4e2-7511-4f54-bda0-c30f5e461e0d_1600x748.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:681,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DIGl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ce2d4e2-7511-4f54-bda0-c30f5e461e0d_1600x748.png 424w, https://substackcdn.com/image/fetch/$s_!DIGl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ce2d4e2-7511-4f54-bda0-c30f5e461e0d_1600x748.png 848w, https://substackcdn.com/image/fetch/$s_!DIGl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ce2d4e2-7511-4f54-bda0-c30f5e461e0d_1600x748.png 1272w, https://substackcdn.com/image/fetch/$s_!DIGl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6ce2d4e2-7511-4f54-bda0-c30f5e461e0d_1600x748.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://www.elastic.co/kibana">Kibana</a>, part of the Elastic Stack, is known for its strong data visualization capabilities and is often used for log analysis and monitoring. It can be seamlessly integrated with Elasticsearch and Beats to provide a comprehensive Kubernetes monitoring solution.</p><p>Kibana excels in creating interactive and insightful dashboards for log and performance data. It allows you to aggregate and analyze logs from various Kubernetes clusters and applications, providing valuable insights into system and application health.&nbsp;</p><p>Each of these Kubernetes monitoring tools brings a unique set of features and capabilities to the table, making it possible to tailor your monitoring strategy to your specific requirements. By choosing the right tools and leveraging their capabilities, you can ensure the health, performance, and security of your Kubernetes clusters while simplifying the monitoring process.</p><h2>Conclusion</h2><p>Kubernetes monitoring is a critical aspect of managing containerized applications effectively. The right tools can make this task easier and more efficient. By using the mentioned tools, you can gain real-time insights, <a href="https://www.groundcover.com/kubernetes-troubleshooting">troubleshoot issues</a>, and ensure the performance and security of your Kubernetes clusters. Whether you are an operator, developer, or DevOps engineer, these monitoring tools will help you keep your Kubernetes clusters healthy and performant.</p><p>With the right set of tools in your arsenal, Kubernetes monitoring can become a breeze, allowing you to focus on what truly matters &#8211; delivering reliable and efficient containerized applications. Remember, the choice of monitoring tools should align with your specific use case, and you can explore each tool's documentation for more in-depth information. Kubernetes monitoring is within your grasp with the help of these indispensable tools. Happy monitoring!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://devops.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading devops! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Survival Guide for Debugging Serverless Applications With Lumigo]]></title><description><![CDATA[Introduction]]></description><link>https://devops.substack.com/p/survival-guide-for-debugging-serverless</link><guid isPermaLink="false">https://devops.substack.com/p/survival-guide-for-debugging-serverless</guid><dc:creator><![CDATA[Luciano Niamh]]></dc:creator><pubDate>Thu, 15 Jun 2023 13:18:21 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zkYi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4e0cf10-19d7-40f0-84b4-aaf1e05b55d7_1600x797.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>Introduction</h2><p>In the world of serverless applications, developers enjoy the freedom of crafting and deploying their code without the burden of managing and provisioning servers. This is made possible by leveraging third-party cloud providers such as Amazon Web Services (AWS), Google Cloud Platform (GCP), and Microsoft Azure, which handle the entire underlying infrastructure of their dedicated servers.</p><p>In contrast, traditional application architectures impose upon developers the duty of maintaining their own servers and assuming full responsibility for the entire application stack. This involves maintaining the actual physical hardware, cooling systems, handling server failures, and the incredibly complicated scaling operation, among other tons of tedious, time and resource-consuming tasks. Recognizing these challenges, an increasing number of today's developers are shifting toward the more appealing realm of serverless applications.</p><h2>Understanding The Challenges of Debugging Serverless Applications</h2><p>Despite the numerous benefits <a href="https://www.redhat.com/en/topics/cloud-native-apps/what-is-serverless">serverless applications</a> bring to developers, including unparalleled ease of use and peace of mind, they aren't without their own set of challenges. One of the most significant hurdles developers encounter is the limited transparency into the underlying infrastructure. This constraint makes it difficult to monitor server and application performance effectively, which consequently creates a blind spot in application performance monitoring, which causes its own set of challenges.</p><p>Having acknowledged this, in the upcoming sections of this article, we will delve deeper into the complexities of debugging serverless applications. Additionally, we'll introduce a contemporary solution known as Lumigo that tackles these challenges head-on, paving the way for smoother serverless application management and development. Despite the numerous challenges associated with debugging serverless applications, two issues are particularly prevalent within this realm.</p><h3>Limited Control over the Infrastructure</h3><p>When using <a href="https://azure.microsoft.com/en-in/resources/cloud-computing-dictionary/what-is-a-cloud-provider/#:~:text=A%20cloud%20service%20provider%20is,use%2C%20as%20business%20demands%20require.">third-party cloud providers</a> like AWS, developers have limited visibility and control over the underlying infrastructure of serverless applications. The cloud provider abstracts away the servers and infrastructure details, making it challenging for developers to have deep insights or make direct modifications to the underlying infrastructure components.</p><p>Although developers still have control over their application logic, they rely on the cloud provider's infrastructure management and configuration. This limited control can pose challenges when debugging and troubleshooting issues related to specific infrastructure configurations or performance bottlenecks.</p><h3>Lack of Server Diagnosis Due to Bad Monitoring and Observability</h3><p>It is crucial for developers to monitor the number of users accessing their server at any given moment, tally system failures, assess current CPU utilization, and evaluate <a href="https://www.dnsstuff.com/bandwidth-usage">bandwidth usage</a>. It's essential to have precise, real-time insights into these system metrics to maintain optimal performance.</p><p>Monitoring refers to the systematic process of gathering and analyzing these system metrics. This practice aids in comprehending the system&#8217;s overall performance and identifying potential or existing issues.</p><p>To facilitate effective monitoring, servers should maintain specific logs that record every action performed by a user. This is not done to track an individual user's behavior but rather to monitor the system's holistic performance. It allows us to identify trends, troubleshoot issues, and understand how users interact with the system.</p><h2>Exploring the Benefits of Lumigo for Serverless Debugging</h2><p>Lumigo is a dedicated troubleshooting platform that allows developers to easily troubleshoot, monitor and debug servers and containerized environments with a range of complexities. In the ensuing discussion, we will state a few ways in which developers can employ such a tool in their day-to-day tasks to ease their workload and enhance their productivity.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zkYi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4e0cf10-19d7-40f0-84b4-aaf1e05b55d7_1600x797.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zkYi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4e0cf10-19d7-40f0-84b4-aaf1e05b55d7_1600x797.png 424w, https://substackcdn.com/image/fetch/$s_!zkYi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4e0cf10-19d7-40f0-84b4-aaf1e05b55d7_1600x797.png 848w, https://substackcdn.com/image/fetch/$s_!zkYi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4e0cf10-19d7-40f0-84b4-aaf1e05b55d7_1600x797.png 1272w, https://substackcdn.com/image/fetch/$s_!zkYi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4e0cf10-19d7-40f0-84b4-aaf1e05b55d7_1600x797.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zkYi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4e0cf10-19d7-40f0-84b4-aaf1e05b55d7_1600x797.png" width="1456" height="725" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d4e0cf10-19d7-40f0-84b4-aaf1e05b55d7_1600x797.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:725,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zkYi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4e0cf10-19d7-40f0-84b4-aaf1e05b55d7_1600x797.png 424w, https://substackcdn.com/image/fetch/$s_!zkYi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4e0cf10-19d7-40f0-84b4-aaf1e05b55d7_1600x797.png 848w, https://substackcdn.com/image/fetch/$s_!zkYi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4e0cf10-19d7-40f0-84b4-aaf1e05b55d7_1600x797.png 1272w, https://substackcdn.com/image/fetch/$s_!zkYi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4e0cf10-19d7-40f0-84b4-aaf1e05b55d7_1600x797.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Advanced Server Tracing</h3><p>By leveraging specially-designed monitoring and troubleshooting platforms like <a href="https://lumigo.io/lp-microservices-troubleshooting/">Lumigo</a>, developers can efficiently track transactions across a multitude of application microservices. The platform offers an intuitive, hands-on visualization interface that assists developers in identifying and resolving problematic patterns within their systems.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dgox!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf2c6c59-4840-4d18-9b9f-daa9e0434c49_1600x843.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dgox!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf2c6c59-4840-4d18-9b9f-daa9e0434c49_1600x843.png 424w, https://substackcdn.com/image/fetch/$s_!dgox!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf2c6c59-4840-4d18-9b9f-daa9e0434c49_1600x843.png 848w, https://substackcdn.com/image/fetch/$s_!dgox!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf2c6c59-4840-4d18-9b9f-daa9e0434c49_1600x843.png 1272w, https://substackcdn.com/image/fetch/$s_!dgox!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf2c6c59-4840-4d18-9b9f-daa9e0434c49_1600x843.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dgox!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf2c6c59-4840-4d18-9b9f-daa9e0434c49_1600x843.png" width="1456" height="767" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/af2c6c59-4840-4d18-9b9f-daa9e0434c49_1600x843.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:767,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dgox!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf2c6c59-4840-4d18-9b9f-daa9e0434c49_1600x843.png 424w, https://substackcdn.com/image/fetch/$s_!dgox!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf2c6c59-4840-4d18-9b9f-daa9e0434c49_1600x843.png 848w, https://substackcdn.com/image/fetch/$s_!dgox!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf2c6c59-4840-4d18-9b9f-daa9e0434c49_1600x843.png 1272w, https://substackcdn.com/image/fetch/$s_!dgox!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf2c6c59-4840-4d18-9b9f-daa9e0434c49_1600x843.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The image above shows the visualization interface where developers can monitor specific functions and track details like the number of times each function is invoked, the cost of such a transaction, its duration, memory usage, and the frequency of failures, among other useful data. Thus, Lumigo enables developers to identify the functions generating the most errors. This feature facilitates rapid problem resolution, decreases overall system costs by identifying exceptionally costly functions, and improves system performance by identifying slower server calls that are reducing the system&#8217;s overall bottleneck capacity.</p><h3>Simplified Error Detection</h3><p>Efficient error detection is the cornerstone of software development and maintenance. It allows developers to identify and correct system errors promptly. This efficiency not only streamlines the troubleshooting process but also significantly enhances the system's reliability. By minimizing the time between the occurrence of an error and its resolution, businesses can ensure seamless user experiences, ultimately bolstering user satisfaction and trust in their services.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bZPa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765226d6-7ba2-48f3-9d4b-8cfc53c90569_1600x836.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bZPa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765226d6-7ba2-48f3-9d4b-8cfc53c90569_1600x836.png 424w, https://substackcdn.com/image/fetch/$s_!bZPa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765226d6-7ba2-48f3-9d4b-8cfc53c90569_1600x836.png 848w, https://substackcdn.com/image/fetch/$s_!bZPa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765226d6-7ba2-48f3-9d4b-8cfc53c90569_1600x836.png 1272w, https://substackcdn.com/image/fetch/$s_!bZPa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765226d6-7ba2-48f3-9d4b-8cfc53c90569_1600x836.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bZPa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765226d6-7ba2-48f3-9d4b-8cfc53c90569_1600x836.png" width="1456" height="761" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/765226d6-7ba2-48f3-9d4b-8cfc53c90569_1600x836.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:761,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bZPa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765226d6-7ba2-48f3-9d4b-8cfc53c90569_1600x836.png 424w, https://substackcdn.com/image/fetch/$s_!bZPa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765226d6-7ba2-48f3-9d4b-8cfc53c90569_1600x836.png 848w, https://substackcdn.com/image/fetch/$s_!bZPa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765226d6-7ba2-48f3-9d4b-8cfc53c90569_1600x836.png 1272w, https://substackcdn.com/image/fetch/$s_!bZPa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F765226d6-7ba2-48f3-9d4b-8cfc53c90569_1600x836.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Alerting and Notification Features</h3><p>Specialized alerts can be put in place to flag things like high error rates, server costs, and more. After all, two of the most common and highly used alert types are Event Alert (triggered when an event occurs that matches the exact alert condition specified by the user) and Metric Alert (triggered when a metric exceeds a specific threshold). For example, this can be the case if the server exceeds the specified network bandwidth provided.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VOgr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bfe9d1c-eb26-4484-8453-30dd26478e68_1600x908.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VOgr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bfe9d1c-eb26-4484-8453-30dd26478e68_1600x908.png 424w, https://substackcdn.com/image/fetch/$s_!VOgr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bfe9d1c-eb26-4484-8453-30dd26478e68_1600x908.png 848w, https://substackcdn.com/image/fetch/$s_!VOgr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bfe9d1c-eb26-4484-8453-30dd26478e68_1600x908.png 1272w, https://substackcdn.com/image/fetch/$s_!VOgr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bfe9d1c-eb26-4484-8453-30dd26478e68_1600x908.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VOgr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bfe9d1c-eb26-4484-8453-30dd26478e68_1600x908.png" width="1456" height="826" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6bfe9d1c-eb26-4484-8453-30dd26478e68_1600x908.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:826,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!VOgr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bfe9d1c-eb26-4484-8453-30dd26478e68_1600x908.png 424w, https://substackcdn.com/image/fetch/$s_!VOgr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bfe9d1c-eb26-4484-8453-30dd26478e68_1600x908.png 848w, https://substackcdn.com/image/fetch/$s_!VOgr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bfe9d1c-eb26-4484-8453-30dd26478e68_1600x908.png 1272w, https://substackcdn.com/image/fetch/$s_!VOgr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bfe9d1c-eb26-4484-8453-30dd26478e68_1600x908.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The Lumigo platform makes the creation process of such alerts incredibly easy. The image above details the process of creating an alert using Lumigo. In this specific example, we're establishing a Metric Event Alert. This alert is configured to notify us via email when memory usage surpasses the 90 percent threshold, informing us in case our system&#8217;s memory is overloaded.</p><h2>Conclusion</h2><p>The power of efficient debugging for serverless applications cannot be underestimated. Given the complexity of today's distributed systems, developers require more than just an efficient monitoring method&#8212;they need dependable and user-friendly tools to navigate this intricate process. Tools such as Lumigo stand out in this regard, providing users with the means to monitor the health of their systems closely.</p><p>With streamlined debugging and monitoring processes, businesses can deliver superior services to their customers. This ensures reliability and infuses positivity into their offerings, strengthening customer trust and ultimately boosting overall business profitability. It's a digital age where effectiveness, efficiency, and ease of operations are critical to success, and tools like Lumigo help unlock that potential.</p>]]></content:encoded></item><item><title><![CDATA[Advanced Security Measures for NodeJS Authentication]]></title><description><![CDATA[As more and more businesses prefer using NodeJS to create their web applications, the need for robust security measures is more significant than ever.]]></description><link>https://devops.substack.com/p/advanced-security-measures-for-nodejs</link><guid isPermaLink="false">https://devops.substack.com/p/advanced-security-measures-for-nodejs</guid><dc:creator><![CDATA[Luciano Niamh]]></dc:creator><pubDate>Wed, 11 Jan 2023 14:20:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Adqh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84fe8010-1235-4a27-9db9-6ca09b81c1ea_1600x1066.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Adqh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84fe8010-1235-4a27-9db9-6ca09b81c1ea_1600x1066.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Adqh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84fe8010-1235-4a27-9db9-6ca09b81c1ea_1600x1066.png 424w, https://substackcdn.com/image/fetch/$s_!Adqh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84fe8010-1235-4a27-9db9-6ca09b81c1ea_1600x1066.png 848w, https://substackcdn.com/image/fetch/$s_!Adqh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84fe8010-1235-4a27-9db9-6ca09b81c1ea_1600x1066.png 1272w, https://substackcdn.com/image/fetch/$s_!Adqh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84fe8010-1235-4a27-9db9-6ca09b81c1ea_1600x1066.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Adqh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84fe8010-1235-4a27-9db9-6ca09b81c1ea_1600x1066.png" width="1456" height="970" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/84fe8010-1235-4a27-9db9-6ca09b81c1ea_1600x1066.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:970,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Adqh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84fe8010-1235-4a27-9db9-6ca09b81c1ea_1600x1066.png 424w, https://substackcdn.com/image/fetch/$s_!Adqh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84fe8010-1235-4a27-9db9-6ca09b81c1ea_1600x1066.png 848w, https://substackcdn.com/image/fetch/$s_!Adqh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84fe8010-1235-4a27-9db9-6ca09b81c1ea_1600x1066.png 1272w, https://substackcdn.com/image/fetch/$s_!Adqh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84fe8010-1235-4a27-9db9-6ca09b81c1ea_1600x1066.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>As more and more businesses prefer using NodeJS to create their web applications, the need for robust security measures is more significant than ever. NodeJS has some great authentication mechanisms. However, your business could be at risk if these mechanisms aren't implemented correctly.&nbsp;</p><p>In this article, we will discuss advanced security measures for NodeJS authentication. We will cover how to protect our applications from unauthorized access and how to set up secure authentication mechanisms. Let's get started!</p><h2>Why We Need Secure Authentication</h2><p>One of the most crucial things for developers to remember building web applications is the value of secure authentication. Without proper authentication, unauthorized users can find a way to access your application and steal sensitive data. This could lead to major security breaches and serious financial losses for your business.</p><p>Thus, it is important to implement strong authentication measures in your <a href="https://nodejs.org/en/">NodeJS</a> application. By doing so, you can ensure that only authorized users are able to access your data. This protects your business from costly security breaches and keeps your data safe and secure.</p><p>There are actually many authentication services out in the market, like Firebase Auth, Amazon Cognito, Auth0, and Frontegg. Each authentication service provides a similar set of features for user login service management, with slight variations in the user management and security handling features.&nbsp;</p><p>For this article, we are going to look at implementing secure NodeJS authentication using Frontegg. <a href="https://frontegg.com/">Frontegg</a> is a cloud-based authentication and authorization service that helps businesses protect their data and secure their applications. It provides various features, including user registration and management, passwordless authentication, and social login.</p><p>Frontegg also offers robust security measures, including 2-factor authentication and <a href="https://learn.microsoft.com/en-us/iis/manage/configuring-security/using-dynamic-ip-restrictions">IP restrictions</a>. This ensures that only authorized users are able to access your data. The service has a free version which we will be using for the demonstration today.</p><h2>SaaS Modules</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vuHn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c32b080-c0e9-47a4-9de4-fd71edd5b4e5_1600x981.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vuHn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c32b080-c0e9-47a4-9de4-fd71edd5b4e5_1600x981.png 424w, https://substackcdn.com/image/fetch/$s_!vuHn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c32b080-c0e9-47a4-9de4-fd71edd5b4e5_1600x981.png 848w, https://substackcdn.com/image/fetch/$s_!vuHn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c32b080-c0e9-47a4-9de4-fd71edd5b4e5_1600x981.png 1272w, https://substackcdn.com/image/fetch/$s_!vuHn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c32b080-c0e9-47a4-9de4-fd71edd5b4e5_1600x981.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vuHn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c32b080-c0e9-47a4-9de4-fd71edd5b4e5_1600x981.png" width="1456" height="893" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9c32b080-c0e9-47a4-9de4-fd71edd5b4e5_1600x981.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:893,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vuHn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c32b080-c0e9-47a4-9de4-fd71edd5b4e5_1600x981.png 424w, https://substackcdn.com/image/fetch/$s_!vuHn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c32b080-c0e9-47a4-9de4-fd71edd5b4e5_1600x981.png 848w, https://substackcdn.com/image/fetch/$s_!vuHn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c32b080-c0e9-47a4-9de4-fd71edd5b4e5_1600x981.png 1272w, https://substackcdn.com/image/fetch/$s_!vuHn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c32b080-c0e9-47a4-9de4-fd71edd5b4e5_1600x981.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>After you sign up on Frontegg, we'll start by setting up the following SaaS modules: Login Box, Profile, Collaboration, Engagement, and Monetization. When you move to the Experience view, the page will display all the modules with previews.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CHhQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F352bf62d-f877-41e2-85f1-31cf216ced75_1600x991.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CHhQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F352bf62d-f877-41e2-85f1-31cf216ced75_1600x991.png 424w, https://substackcdn.com/image/fetch/$s_!CHhQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F352bf62d-f877-41e2-85f1-31cf216ced75_1600x991.png 848w, https://substackcdn.com/image/fetch/$s_!CHhQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F352bf62d-f877-41e2-85f1-31cf216ced75_1600x991.png 1272w, https://substackcdn.com/image/fetch/$s_!CHhQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F352bf62d-f877-41e2-85f1-31cf216ced75_1600x991.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CHhQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F352bf62d-f877-41e2-85f1-31cf216ced75_1600x991.png" width="1456" height="902" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/352bf62d-f877-41e2-85f1-31cf216ced75_1600x991.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:902,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CHhQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F352bf62d-f877-41e2-85f1-31cf216ced75_1600x991.png 424w, https://substackcdn.com/image/fetch/$s_!CHhQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F352bf62d-f877-41e2-85f1-31cf216ced75_1600x991.png 848w, https://substackcdn.com/image/fetch/$s_!CHhQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F352bf62d-f877-41e2-85f1-31cf216ced75_1600x991.png 1272w, https://substackcdn.com/image/fetch/$s_!CHhQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F352bf62d-f877-41e2-85f1-31cf216ced75_1600x991.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Login Box</h3><p>As you can see from the screen above, it provides an option for quick sign-in and covers all common social login and business-level login service integration options, including OpenID and SAML. It also covers all situations for login: sign-in, sign-up, activate account, forgot password, and reset password.&nbsp;</p><p>On preview mode, it covers all device previews, which is pretty handy.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SfJl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe06f4429-3669-4c33-afc9-b1d330d6f4f9_1600x988.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SfJl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe06f4429-3669-4c33-afc9-b1d330d6f4f9_1600x988.png 424w, https://substackcdn.com/image/fetch/$s_!SfJl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe06f4429-3669-4c33-afc9-b1d330d6f4f9_1600x988.png 848w, https://substackcdn.com/image/fetch/$s_!SfJl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe06f4429-3669-4c33-afc9-b1d330d6f4f9_1600x988.png 1272w, https://substackcdn.com/image/fetch/$s_!SfJl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe06f4429-3669-4c33-afc9-b1d330d6f4f9_1600x988.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SfJl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe06f4429-3669-4c33-afc9-b1d330d6f4f9_1600x988.png" width="1456" height="899" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e06f4429-3669-4c33-afc9-b1d330d6f4f9_1600x988.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:899,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!SfJl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe06f4429-3669-4c33-afc9-b1d330d6f4f9_1600x988.png 424w, https://substackcdn.com/image/fetch/$s_!SfJl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe06f4429-3669-4c33-afc9-b1d330d6f4f9_1600x988.png 848w, https://substackcdn.com/image/fetch/$s_!SfJl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe06f4429-3669-4c33-afc9-b1d330d6f4f9_1600x988.png 1272w, https://substackcdn.com/image/fetch/$s_!SfJl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe06f4429-3669-4c33-afc9-b1d330d6f4f9_1600x988.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In my opinion, Frontegg might be slightly complex for beginner users but will be critically valuable for enterprise-level clients. The <a href="https://docs.frontegg.com/docs/get-started">start guide</a> they provide on their website is very helpful, especially for new users.&nbsp;</p><h2>Development Intergation</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MLvW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e1664b8-3d36-4689-8d2e-4e609347cd5b_1600x976.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MLvW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e1664b8-3d36-4689-8d2e-4e609347cd5b_1600x976.png 424w, https://substackcdn.com/image/fetch/$s_!MLvW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e1664b8-3d36-4689-8d2e-4e609347cd5b_1600x976.png 848w, https://substackcdn.com/image/fetch/$s_!MLvW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e1664b8-3d36-4689-8d2e-4e609347cd5b_1600x976.png 1272w, https://substackcdn.com/image/fetch/$s_!MLvW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e1664b8-3d36-4689-8d2e-4e609347cd5b_1600x976.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MLvW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e1664b8-3d36-4689-8d2e-4e609347cd5b_1600x976.png" width="1456" height="888" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2e1664b8-3d36-4689-8d2e-4e609347cd5b_1600x976.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:888,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!MLvW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e1664b8-3d36-4689-8d2e-4e609347cd5b_1600x976.png 424w, https://substackcdn.com/image/fetch/$s_!MLvW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e1664b8-3d36-4689-8d2e-4e609347cd5b_1600x976.png 848w, https://substackcdn.com/image/fetch/$s_!MLvW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e1664b8-3d36-4689-8d2e-4e609347cd5b_1600x976.png 1272w, https://substackcdn.com/image/fetch/$s_!MLvW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e1664b8-3d36-4689-8d2e-4e609347cd5b_1600x976.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The great thing about Frontegg is that it covers almost all development ecosystems, including React, Angular, Vue, Next, and Vanilla.&nbsp;</p><p>I will use <a href="https://reactjs.org/">React</a> as an example to provide you with a step-by-step guide.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!82yS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff20d8744-59b8-4676-92ed-500d3a82c3ae_1208x730.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!82yS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff20d8744-59b8-4676-92ed-500d3a82c3ae_1208x730.png 424w, https://substackcdn.com/image/fetch/$s_!82yS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff20d8744-59b8-4676-92ed-500d3a82c3ae_1208x730.png 848w, https://substackcdn.com/image/fetch/$s_!82yS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff20d8744-59b8-4676-92ed-500d3a82c3ae_1208x730.png 1272w, https://substackcdn.com/image/fetch/$s_!82yS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff20d8744-59b8-4676-92ed-500d3a82c3ae_1208x730.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!82yS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff20d8744-59b8-4676-92ed-500d3a82c3ae_1208x730.png" width="1208" height="730" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f20d8744-59b8-4676-92ed-500d3a82c3ae_1208x730.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:730,&quot;width&quot;:1208,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!82yS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff20d8744-59b8-4676-92ed-500d3a82c3ae_1208x730.png 424w, https://substackcdn.com/image/fetch/$s_!82yS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff20d8744-59b8-4676-92ed-500d3a82c3ae_1208x730.png 848w, https://substackcdn.com/image/fetch/$s_!82yS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff20d8744-59b8-4676-92ed-500d3a82c3ae_1208x730.png 1272w, https://substackcdn.com/image/fetch/$s_!82yS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff20d8744-59b8-4676-92ed-500d3a82c3ae_1208x730.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ol><li><p>Create a React app:</p></li></ol><p><code>npx create-react-app app-with-frontegg</code></p><p><code>cd app-with-frontegg</code></p><ol start="2"><li><p>Install:</p></li></ol><p><code>npm install @frontegg/react react-router-dom</code></p><ol start="3"><li><p>Configure:</p></li></ol><p><code>import React from 'react';</code></p><p><code>import ReactDOM from 'react-dom';</code></p><p><code>import App from './App';</code></p><p><code>import './index.css';</code></p><p><code>import { FronteggProvider } from '@frontegg/react';</code></p><p><code>const contextOptions = {</code></p><p><code>&nbsp;&nbsp;baseUrl: 'https://[YOUR_SUBDOMAIN].frontegg.com',</code></p><p><code>&nbsp;&nbsp;clientId: '[YOUR-CLIENT-ID]'</code></p><p><code>};</code></p><p><code>const authOptions = {</code></p><p><code>&nbsp;// keepSessionAlive: true // Uncomment this in order to maintain the session alive</code></p><p><code>};</code></p><p><code>ReactDOM.render(</code></p><p><code>&nbsp;&nbsp;&nbsp;&nbsp;&lt;FronteggProvider contextOptions={contextOptions} hostedLoginBox={true} authOptions={authOptions}&gt;</code></p><p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;App /&gt;</code></p><p><code>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/FronteggProvider&gt;,</code></p><p><code>&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById('root')</code></p><p><code>);</code></p><ol start="4"><li><p>Redirect to login:</p></li></ol><p><code>import './App.css';</code></p><p><code>// import { useEffect } from 'react';</code></p><p><code>import { ContextHolder } from '@frontegg/rest-api';</code></p><p><code>import { useAuth, useLoginWithRedirect } from "@frontegg/react";</code></p><p><code>function App() {</code></p><p><code>&nbsp;&nbsp;const { user, isAuthenticated } = useAuth();</code></p><p><code>&nbsp;&nbsp;const loginWithRedirect = useLoginWithRedirect();</code></p><p><code>&nbsp;&nbsp;// Uncomment this to redirect to login automatically</code></p><p><code>&nbsp;&nbsp;// useEffect(() =&gt; {</code></p><p><code>&nbsp;&nbsp;// &nbsp; if (!isAuthenticated) {</code></p><p><code>&nbsp;&nbsp;// &nbsp; &nbsp; loginWithRedirect();</code></p><p><code>&nbsp;&nbsp;// &nbsp; }</code></p><p><code>&nbsp;&nbsp;// }, [isAuthenticated, loginWithRedirect]);</code></p><p><code>&nbsp;&nbsp;const logout = () =&gt; {</code></p><p><code>&nbsp;&nbsp;&nbsp;const baseUrl = ContextHolder.getContext().baseUrl;</code></p><p><code>&nbsp;&nbsp;&nbsp;window.location.href = `${baseUrl}/oauth/logout?post_logout_redirect_uri=${window.location}`;</code></p><p><code>&nbsp;&nbsp;};</code></p><p><code>&nbsp;&nbsp;return (</code></p><p><code>&nbsp;&nbsp;&nbsp;&nbsp;&lt;div className="App"&gt;</code></p><p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ isAuthenticated ? (</code></p><p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&gt;</code></p><p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&gt;</code></p><p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;img src={user?.profilePictureUrl} alt={user?.name}/&gt;</code></p><p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;</code></p><p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&gt;</code></p><p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;span&gt;Logged in as: {user?.name}&lt;/span&gt;</code></p><p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;</code></p><p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&gt;</code></p><p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;button onClick={() =&gt; alert(user.accessToken)}&gt;What is my access token?&lt;/button&gt;</code></p><p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;</code></p><p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&gt;</code></p><p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;button onClick={() =&gt; logout()}&gt;Click to logout&lt;/button&gt;</code></p><p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;</code></p><p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;</code></p><p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;) : (</code></p><p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&gt;</code></p><p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;button onClick={() =&gt; loginWithRedirect()}&gt;Click me to login&lt;/button&gt;</code></p><p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;</code></p><p><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)}</code></p><p><code>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;</code></p><p><code>&nbsp;&nbsp;);</code></p><p><code>}</code></p><p><code>export default App;</code></p><p>Try it now!<br>You will see a button that says &#8220;Click me to login&#8221;. Click and you will see the login page you created with Frontegg.</p><h2>Conclusion</h2><p>Frontegg provides fairly advanced features within the authentication domain, including quick setup, user management, security handling and industrial standard support. While it is not beginner friendly, it does offer intermediate users some truly advanced-level features. And most importantly, it speeds up the processes so much that it makes incorporating these complex features a much simpler task.</p><p>You may ask: Does a fresh new e-commerce store startup really need to incorporate such complex management? Well, maybe. It all depends on how much time and effort you are willing to invest at this stage of your business. Frontegg could be really helpful for setting you up for the long haul.</p>]]></content:encoded></item><item><title><![CDATA[Perils of Load Testing: Common Mistakes and How to Avoid Them ]]></title><description><![CDATA[Load testing is a type of performance testing that examines an application's performance under expected, real-world load.]]></description><link>https://devops.substack.com/p/perils-of-load-testing</link><guid isPermaLink="false">https://devops.substack.com/p/perils-of-load-testing</guid><dc:creator><![CDATA[Luciano Niamh]]></dc:creator><pubDate>Wed, 07 Dec 2022 13:41:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!erQK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8b30f4f-12c9-4aee-bedc-ef3811f24d4c_1600x1066.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!erQK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8b30f4f-12c9-4aee-bedc-ef3811f24d4c_1600x1066.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!erQK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8b30f4f-12c9-4aee-bedc-ef3811f24d4c_1600x1066.jpeg 424w, https://substackcdn.com/image/fetch/$s_!erQK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8b30f4f-12c9-4aee-bedc-ef3811f24d4c_1600x1066.jpeg 848w, https://substackcdn.com/image/fetch/$s_!erQK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8b30f4f-12c9-4aee-bedc-ef3811f24d4c_1600x1066.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!erQK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8b30f4f-12c9-4aee-bedc-ef3811f24d4c_1600x1066.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!erQK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8b30f4f-12c9-4aee-bedc-ef3811f24d4c_1600x1066.jpeg" width="1456" height="970" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/a8b30f4f-12c9-4aee-bedc-ef3811f24d4c_1600x1066.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:970,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!erQK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8b30f4f-12c9-4aee-bedc-ef3811f24d4c_1600x1066.jpeg 424w, https://substackcdn.com/image/fetch/$s_!erQK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8b30f4f-12c9-4aee-bedc-ef3811f24d4c_1600x1066.jpeg 848w, https://substackcdn.com/image/fetch/$s_!erQK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8b30f4f-12c9-4aee-bedc-ef3811f24d4c_1600x1066.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!erQK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8b30f4f-12c9-4aee-bedc-ef3811f24d4c_1600x1066.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Load testing is a type of performance testing that examines an application's performance under expected, real-world load. Although it may be difficult to perceive the value of performance testing, it is just as vital as other types of testing. Slow apps, time-out issues, and dissatisfied users are the effects of underperforming programs. Users expect speed and quick loading times. Therefore, this is especially problematic for businesses. Thus, organizations need to treat performance testing as a higher priority.&nbsp;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://devops.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading devops! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>What is Load Testing?</h2><p>The process of running software or applications through both typical and projected peak loads to gauge their responsiveness under such circumstances is known as <a href="http://www.blazemeter.com/blog/performance-testing-vs-load-testing-vs-stress-testing">load testing</a>, which is a component of performance testing. It enables you to spot flaws such as load balancing and capacity problems and assess response times, throughput rates, and resource usage level concerns before deploying to production.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LNHv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0e05a47b-e4d8-4de3-be98-061c124baa90_1332x1331.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LNHv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0e05a47b-e4d8-4de3-be98-061c124baa90_1332x1331.png 424w, https://substackcdn.com/image/fetch/$s_!LNHv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0e05a47b-e4d8-4de3-be98-061c124baa90_1332x1331.png 848w, https://substackcdn.com/image/fetch/$s_!LNHv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0e05a47b-e4d8-4de3-be98-061c124baa90_1332x1331.png 1272w, https://substackcdn.com/image/fetch/$s_!LNHv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0e05a47b-e4d8-4de3-be98-061c124baa90_1332x1331.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LNHv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0e05a47b-e4d8-4de3-be98-061c124baa90_1332x1331.png" width="1332" height="1331" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/0e05a47b-e4d8-4de3-be98-061c124baa90_1332x1331.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1331,&quot;width&quot;:1332,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!LNHv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0e05a47b-e4d8-4de3-be98-061c124baa90_1332x1331.png 424w, https://substackcdn.com/image/fetch/$s_!LNHv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0e05a47b-e4d8-4de3-be98-061c124baa90_1332x1331.png 848w, https://substackcdn.com/image/fetch/$s_!LNHv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0e05a47b-e4d8-4de3-be98-061c124baa90_1332x1331.png 1272w, https://substackcdn.com/image/fetch/$s_!LNHv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0e05a47b-e4d8-4de3-be98-061c124baa90_1332x1331.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Advantages&nbsp;</h3><p>Load testing raises the level of security. It aids in the process of detecting performance problems early and creating a scalable infrastructure.</p><h3>Disadvantages&nbsp;</h3><p>Tools for load testing call for specific technical expertise. Moreover, many load testing tools require you to purchase a license or pay a fee. Additionally, load testing might consume additional resources and produce spurious performance issues if configured incorrectly.</p><h2>Common Load Testing Mistakes and How to Avoid Them</h2><h3>Overloading load generators</h3><p>Load <a href="https://www.tutorialspoint.com/software_testing_dictionary/load_generator.htm">generating</a> devices might potentially bias the findings of your tests even while supporting your testing objectives. For example, there may be no load created at all or load generated, and the skewed results might be due to an overloaded load generator machine. Check machine resources like CPU, RAM, context switches, and transactions per second to determine whether your load generators are overburdened.&nbsp;</p><h4>How to avoid it</h4><p>Softwares that are no longer needed should be removed from your computers. You need to verify the network connectivity and bandwidth of the generators, among other things. You will need a lot of load generators if you plan to run a lot of virtual users. The test's success depends on reliable connectivity between the various parts of the testing instrument you are using.</p><h3>Not documenting test runs</h3><p>Load testing includes re-running scenarios and comparing outcomes between runs. However, keeping track of the changes performed throughout each test session can become impossible if this is done repeatedly while modifying parameters, application versions, and test settings. Make sure to record details such as the goals of each scenario, the precise configurations of the system being tested, the test environment configurations, the outcomes, and the conclusions of each scenario run.</p><h4>How to avoid it</h4><p>These reports should make it evident whether the current version of the application satisfies the minimum performance requirements and how much load the server is bearing during each testing phase.</p><h3>Avoid excessive logging</h3><p>The configuration of the various load-testing instruments in use offers a variety of logging options at different levels. They provide options for <a href="https://learn.microsoft.com/en-us/iis/configuration/system.webserver/httplogging">logging HTTP</a> responses and informative messages about script activities, parameter substitutions, warnings, and errors.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5xbt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F977755f5-58d7-42ec-a600-1db4b06175dc_1024x729.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5xbt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F977755f5-58d7-42ec-a600-1db4b06175dc_1024x729.png 424w, https://substackcdn.com/image/fetch/$s_!5xbt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F977755f5-58d7-42ec-a600-1db4b06175dc_1024x729.png 848w, https://substackcdn.com/image/fetch/$s_!5xbt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F977755f5-58d7-42ec-a600-1db4b06175dc_1024x729.png 1272w, https://substackcdn.com/image/fetch/$s_!5xbt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F977755f5-58d7-42ec-a600-1db4b06175dc_1024x729.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5xbt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F977755f5-58d7-42ec-a600-1db4b06175dc_1024x729.png" width="1024" height="729" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/977755f5-58d7-42ec-a600-1db4b06175dc_1024x729.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:729,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5xbt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F977755f5-58d7-42ec-a600-1db4b06175dc_1024x729.png 424w, https://substackcdn.com/image/fetch/$s_!5xbt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F977755f5-58d7-42ec-a600-1db4b06175dc_1024x729.png 848w, https://substackcdn.com/image/fetch/$s_!5xbt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F977755f5-58d7-42ec-a600-1db4b06175dc_1024x729.png 1272w, https://substackcdn.com/image/fetch/$s_!5xbt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F977755f5-58d7-42ec-a600-1db4b06175dc_1024x729.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://www.freecodecamp.org/news/how-to-use-logs-effectively-in-your-code/">Source</a></p><h4>How to avoid it</h4><p>Keep logging as little as possible when the performance test is actually being run. The resource usage of load generator devices will grow as the amount of logging increases. Failures of load generators are typically caused by intensive tool logging.&nbsp;</p><h3>Using hardcoded data in requests</h3><p>Many performance experts write programs with parameter values that are <a href="https://www.techopedia.com/definition/16934/hardcode">hardcoded</a>. These identical queries are frequently recognized by more intelligent apps and existing database technology, which then starts automatically caching them. It will have the effect of making the system as a whole appear faster than it is&#8212;an invalid performance test results from this. One product page might not function exactly like every other product page on the website, which is the issue.</p><h4>How to avoid it</h4><p>Although you don't always need to use changeable parameters, it's vital to consider scenarios where the performance can change.</p><h3>Focusing too much on response times</h3><p>The most obvious load test statistic is response times, but that isn't the only factor to consider. If an application has a high error rate, fast reaction times aren't all that important. Effective performance tests track a wide range of data to comprehensively understand how an application responds to various loads.</p><h4>How to avoid it</h4><p>Helping developers identify performance issues is equally crucial. After all, it's useless to inform a developer that the checkout procedure takes too long without also informing them of the problems that occurred during the specific steps.</p><h2>Conclusion&nbsp;</h2><p>No test or simulation can eliminate the possibility of a site failure entirely. Even the world's most resilient and scalable websites are susceptible to black swan events that occasionally bring them down. However, your chances can be significantly increased with some testing in the appropriate areas.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://devops.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading devops! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[What Are Helm Charts and How Can They Help with Kubernetes?]]></title><description><![CDATA[Through dangerous tides of cloud, chart the wind as you helm your sailing vessel.]]></description><link>https://devops.substack.com/p/what-are-helm-charts-and-how-can</link><guid isPermaLink="false">https://devops.substack.com/p/what-are-helm-charts-and-how-can</guid><dc:creator><![CDATA[DevOps Editorial]]></dc:creator><pubDate>Tue, 22 Nov 2022 16:23:59 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!5RAJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F00188de3-be40-4f5e-92d9-d066a6507bba_1074x806.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5RAJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F00188de3-be40-4f5e-92d9-d066a6507bba_1074x806.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5RAJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F00188de3-be40-4f5e-92d9-d066a6507bba_1074x806.png 424w, https://substackcdn.com/image/fetch/$s_!5RAJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F00188de3-be40-4f5e-92d9-d066a6507bba_1074x806.png 848w, https://substackcdn.com/image/fetch/$s_!5RAJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F00188de3-be40-4f5e-92d9-d066a6507bba_1074x806.png 1272w, https://substackcdn.com/image/fetch/$s_!5RAJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F00188de3-be40-4f5e-92d9-d066a6507bba_1074x806.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5RAJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F00188de3-be40-4f5e-92d9-d066a6507bba_1074x806.png" width="1074" height="806" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/00188de3-be40-4f5e-92d9-d066a6507bba_1074x806.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:806,&quot;width&quot;:1074,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5RAJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F00188de3-be40-4f5e-92d9-d066a6507bba_1074x806.png 424w, https://substackcdn.com/image/fetch/$s_!5RAJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F00188de3-be40-4f5e-92d9-d066a6507bba_1074x806.png 848w, https://substackcdn.com/image/fetch/$s_!5RAJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F00188de3-be40-4f5e-92d9-d066a6507bba_1074x806.png 1272w, https://substackcdn.com/image/fetch/$s_!5RAJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F00188de3-be40-4f5e-92d9-d066a6507bba_1074x806.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Kubernetes is the industry standard to manage containerized applications. As workloads in the cluster grow in complexity, it will provide great value by managing the applications as reusable packages. Helm is the open source tool Kubernetes uses to enable this.</p><p>In this article, we&#8217;ll discuss what Helm is and how Helm charts work.&nbsp;</p><h2>What is Helm?</h2><p>Helm is <em><strong>the</strong></em> package manager for Kubernetes. Kubernetes manages containers similar to how operating systems manage processes. They provide an environment for the given unit, either pods or processes, to run. This is why after Kubernetes was released, the community soon realized the need for a package manager and Helm was founded.</p><h2>What is a Helm Chart?</h2><p>A Helm chart is what describes a package that can be installed on a Kubernetes cluster. It&#8217;s a packaging format used by Helm, and is a collection of files structured in a certain format. The files will describe a related set of Kubernetes resources, and if the directory can be accessed by Helm through HTTP, Helm can use it to install and manage the specified resources.</p><p>This hosted directory will then be called a Helm repository.</p><p>In this article, we&#8217;ll use <a href="https://github.com/kubescape/kubescape">Kubescape</a> to evaluate the security risks of the packages.&nbsp;</p><p>Kubescape is an open source tool that can be used for Kubernetes hardening. It does things such as risk analysis, security compliance, RBAC visualizer and image vulnerability scanning.</p><p>With its simple CLI and adaptable output format, it can be easily integrated into CI/CD pipelines. It also natively supports various devops tools such as Jenkins, CircleCI, GitHub workflows and Prometheus. This allows developers to place it early in the pipeline and catch any violations before the system is impacted. It also provides a SaaS offering to help you meet security compliance and manage K8s RBAC.</p><p>To get Helm charts from the <a href="https://github.com/kubescape/kubescape">repository</a>:</p><p><code>helm repo add kubescape https://kubescape.github.io/helm-charts/<br>helm repo update</code></p><p>Helm charts also provide methods for templating. Default configuration values can be stored in a file and then, when the manifests are to be generated, values can be provided by the user or taken from the file. This file is then used to replace placeholders in the chart. Let&#8217;s explore a sample chart provided by Helm.</p><p><code># Create sample chart<br>helm create sample-chart<br># Show directory structure<br>tree sample-chart<br># sample-chart/<br># &#9500;&#9472;&#9472; Chart.yaml<br># &#9500;&#9472;&#9472; charts<br># &#9500;&#9472;&#9472; templates<br># &#9474; &nbsp; &#9500;&#9472;&#9472; NOTES.txt<br># &#9474; &nbsp; &#9500;&#9472;&#9472; _helpers.tpl<br># &#9474; &nbsp; &#9500;&#9472;&#9472; deployment.yaml<br># &#9474; &nbsp; &#9500;&#9472;&#9472; hpa.yaml<br># &#9474; &nbsp; &#9500;&#9472;&#9472; ingress.yaml<br># &#9474; &nbsp; &#9500;&#9472;&#9472; service.yaml<br># &#9474; &nbsp; &#9500;&#9472;&#9472; serviceaccount.yaml<br># &#9474; &nbsp; &#9492;&#9472;&#9472; tests<br># &#9474; &nbsp; &nbsp; &nbsp; &#9492;&#9472;&#9472; test-connection.yaml<br># &#9492;&#9472;&#9472; values.yaml<br>#<br># 3 directories, 10 files<br>cat sample-chart/values.yaml | head -n 15</code></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NVnW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2e17d080-f821-45c0-86fa-052e36402cf0_822x330.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NVnW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2e17d080-f821-45c0-86fa-052e36402cf0_822x330.png 424w, https://substackcdn.com/image/fetch/$s_!NVnW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2e17d080-f821-45c0-86fa-052e36402cf0_822x330.png 848w, https://substackcdn.com/image/fetch/$s_!NVnW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2e17d080-f821-45c0-86fa-052e36402cf0_822x330.png 1272w, https://substackcdn.com/image/fetch/$s_!NVnW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2e17d080-f821-45c0-86fa-052e36402cf0_822x330.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NVnW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2e17d080-f821-45c0-86fa-052e36402cf0_822x330.png" width="822" height="330" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/2e17d080-f821-45c0-86fa-052e36402cf0_822x330.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:330,&quot;width&quot;:822,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NVnW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2e17d080-f821-45c0-86fa-052e36402cf0_822x330.png 424w, https://substackcdn.com/image/fetch/$s_!NVnW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2e17d080-f821-45c0-86fa-052e36402cf0_822x330.png 848w, https://substackcdn.com/image/fetch/$s_!NVnW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2e17d080-f821-45c0-86fa-052e36402cf0_822x330.png 1272w, https://substackcdn.com/image/fetch/$s_!NVnW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2e17d080-f821-45c0-86fa-052e36402cf0_822x330.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The values.yaml file is what contains the default values for the chart. The values can later be overridden by using the <code>--set</code> argument.</p><p>With this, a configurable and reusable set of manifests can be generated by Helm. This ensures reusability of the package across clusters and time.</p><h2>Investigate Kubescape Helm Charts</h2><p>Instead of creating a chart from scratch, let&#8217;s learn top-down style and investigate a production-ready Helm chart. Fortunately, Helm makes this simple.</p><p><code># Add and index the repo<br>helm repo add kubescape https://kubescape.github.io/helm-charts/<br>helm repo update<br># Download the chart<br>helm pull kubescape/kubescape-cloud-operator --untar<br># Explore<br>tree kubescape-cloud-operator</code></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KMSQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7b85f8aa-c1c3-413c-9ee9-95136ba7557a_533x237.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KMSQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7b85f8aa-c1c3-413c-9ee9-95136ba7557a_533x237.png 424w, https://substackcdn.com/image/fetch/$s_!KMSQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7b85f8aa-c1c3-413c-9ee9-95136ba7557a_533x237.png 848w, https://substackcdn.com/image/fetch/$s_!KMSQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7b85f8aa-c1c3-413c-9ee9-95136ba7557a_533x237.png 1272w, https://substackcdn.com/image/fetch/$s_!KMSQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7b85f8aa-c1c3-413c-9ee9-95136ba7557a_533x237.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KMSQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7b85f8aa-c1c3-413c-9ee9-95136ba7557a_533x237.png" width="533" height="237" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/7b85f8aa-c1c3-413c-9ee9-95136ba7557a_533x237.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:237,&quot;width&quot;:533,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KMSQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7b85f8aa-c1c3-413c-9ee9-95136ba7557a_533x237.png 424w, https://substackcdn.com/image/fetch/$s_!KMSQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7b85f8aa-c1c3-413c-9ee9-95136ba7557a_533x237.png 848w, https://substackcdn.com/image/fetch/$s_!KMSQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7b85f8aa-c1c3-413c-9ee9-95136ba7557a_533x237.png 1272w, https://substackcdn.com/image/fetch/$s_!KMSQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7b85f8aa-c1c3-413c-9ee9-95136ba7557a_533x237.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>First take a look at README.md. It talks about how to install and use the chart. This file is optional, but nonetheless one of the most important. It also describes how to configure the chart when installing, and gives an architecture diagram of the application. For example, configure the installation with <code>--set</code>:</p><p><code>helm upgrade --install kubescape kubescape/kubescape-cloud-operator -n kubescape --create-namespace --set account=&lt;my_account_ID&gt; --set cluster-name=`kubectl config current-context` --set clientID=&lt;generated client id&gt; --set secretKey=&lt;generated secret key&gt;</code></p><p>In Chart.yaml, you store the primary information of the chart. <code>apiVersion</code> is the chart API version. The latest version for Helm 3 is now <code>v2</code> while that of Helm 2 is <code>v1</code>. They are not incremented in lock step. An interesting point here is the <code>appVersion</code> field is the version of the application that the chart will install, while the <code>version</code> field is the version of the chart.&nbsp;</p><p>Every time you update your chart, the <code>version</code> should increment but not necessarily the <code>appVersion</code>. Refer to their <a href="https://helm.sh/docs/topics/charts/">official documentation</a> for details on all the fields.</p><p><code>apiVersion: v2<br>appVersion: v1.8.3<br>description: Kubescape is an E2E Kubernetes cluster security platform<br>home: https://www.armosec.io/<br>maintainers:<br>- email: ......<br>name: kubescape-cloud-operator<br>type: application<br>version: 1.8.3</code></p><p>Here&#8217;s an example for understanding the two different version values. Notice how multiple charts can have the same app version.</p><p><code>helm search repo nginx -l<br># NAME&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CHART VERSION &nbsp; APP VERSION &nbsp; &nbsp; DESCRIPTION<br># ingress-nginx/ingress-nginx &nbsp; &nbsp; 4.3.0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1.4.0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Ingress controller for Kubernetes using NGINX a...<br># ingress-nginx/ingress-nginx &nbsp; &nbsp; 4.2.5 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1.3.1 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Ingress controller for Kubernetes using NGINX a...<br># ingress-nginx/ingress-nginx &nbsp; &nbsp; 4.2.4 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1.3.1 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Ingress controller for Kubernetes using NGINX a...<br># ingress-nginx/ingress-nginx &nbsp; &nbsp; 4.2.3 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1.3.0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Ingress controller for Kubernetes using NGINX a...</code></p><p>Next is the values.yaml file. This file contains all the default values that will be used to configure the chart when installing, if they are not overridden by the user. The values in this file will be referenced by keys in the chart templates. It&#8217;s quite useful for not just package maintainers but also users to read this file as it provides information about how to customize the package and optimize it for the user&#8217;s needs.</p><p>Last but not least is the <code>templates</code> directory. The files in here are manifests for the resources that should be created to bring up the application. They will contain tags like <code>{{ .Values.ksNamespace }}</code>, which means it will be replaced with value for <code>ksNamespace</code> in the values.yaml file, or value in <code>--set ksNamespace=xxxxx</code> if it&#8217;s provided by the user.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DK_u!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa45c72bb-3cf0-43e0-9374-fc74f27d3686_1025x376.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DK_u!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa45c72bb-3cf0-43e0-9374-fc74f27d3686_1025x376.png 424w, https://substackcdn.com/image/fetch/$s_!DK_u!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa45c72bb-3cf0-43e0-9374-fc74f27d3686_1025x376.png 848w, https://substackcdn.com/image/fetch/$s_!DK_u!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa45c72bb-3cf0-43e0-9374-fc74f27d3686_1025x376.png 1272w, https://substackcdn.com/image/fetch/$s_!DK_u!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa45c72bb-3cf0-43e0-9374-fc74f27d3686_1025x376.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DK_u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa45c72bb-3cf0-43e0-9374-fc74f27d3686_1025x376.png" width="1025" height="376" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/a45c72bb-3cf0-43e0-9374-fc74f27d3686_1025x376.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:376,&quot;width&quot;:1025,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DK_u!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa45c72bb-3cf0-43e0-9374-fc74f27d3686_1025x376.png 424w, https://substackcdn.com/image/fetch/$s_!DK_u!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa45c72bb-3cf0-43e0-9374-fc74f27d3686_1025x376.png 848w, https://substackcdn.com/image/fetch/$s_!DK_u!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa45c72bb-3cf0-43e0-9374-fc74f27d3686_1025x376.png 1272w, https://substackcdn.com/image/fetch/$s_!DK_u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa45c72bb-3cf0-43e0-9374-fc74f27d3686_1025x376.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Those are the important bits that you need to know when building a Helm chart. And with that, you are good to go. Always refer to the <a href="https://helm.sh/docs/">official documentation</a> for more information. Below, I have given a command you can use to install the package we downloaded above.</p><p><code># Add --dry-run argument to see the generated manifests instead of really installing<br>helm install test-kubescape ./kubescape-cloud-operator/ --set account=XXXXX --set clusterName=$(kubectl config current-context)</code></p><h2>Install Kubescape CLI and Check Security</h2><p>Over time, as the complexity of your application grows, the chart grows and it gets increasingly difficult to avoid any exploitation. Here, we demonstrate how to use Kubescape to help.</p><p><code># Install kubescape<br>curl -s https://raw.githubusercontent.com/kubescape/kubescape/master/install.sh | /bin/bash<br># Output the manifest to a file<br>helm install test-kubescape ./kubescape-cloud-operator/ --dry-run --set account=XXXXX --set clusterName=$(kubectl config current-context) &gt; kubescape-manifest.yaml<br># Scan the file with kubescape. Let it test it's own poison<br>kubescape scan kubescape-manifest.yaml</code></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xInW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6718d195-6166-49d1-83c1-8d3cf610dfbf_1036x312.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xInW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6718d195-6166-49d1-83c1-8d3cf610dfbf_1036x312.png 424w, https://substackcdn.com/image/fetch/$s_!xInW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6718d195-6166-49d1-83c1-8d3cf610dfbf_1036x312.png 848w, https://substackcdn.com/image/fetch/$s_!xInW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6718d195-6166-49d1-83c1-8d3cf610dfbf_1036x312.png 1272w, https://substackcdn.com/image/fetch/$s_!xInW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6718d195-6166-49d1-83c1-8d3cf610dfbf_1036x312.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xInW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6718d195-6166-49d1-83c1-8d3cf610dfbf_1036x312.png" width="1036" height="312" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/6718d195-6166-49d1-83c1-8d3cf610dfbf_1036x312.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:312,&quot;width&quot;:1036,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xInW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6718d195-6166-49d1-83c1-8d3cf610dfbf_1036x312.png 424w, https://substackcdn.com/image/fetch/$s_!xInW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6718d195-6166-49d1-83c1-8d3cf610dfbf_1036x312.png 848w, https://substackcdn.com/image/fetch/$s_!xInW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6718d195-6166-49d1-83c1-8d3cf610dfbf_1036x312.png 1272w, https://substackcdn.com/image/fetch/$s_!xInW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6718d195-6166-49d1-83c1-8d3cf610dfbf_1036x312.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A 16.04% final risk score. I would say that&#8217;s pretty good. Understand that your cluster security is an on-going work and there&#8217;s no silver bullet for it. Here&#8217;s another Helm chart for homework.</p><p><code># Get the manifest<br>helm upgrade --install ingress-nginx ingress-nginx --repo https://kubernetes.github.io/ingress-nginx -n ingress-nginx --create-namespace --dry-run &gt; nginx-manifest.yaml<br># Scan it<br>kubescape scan nginx-manifest.yaml</code></p><h2>Summary</h2><p>In this article, we&#8217;ve described Helm and Helm charts, and have also given an overview on creating Helm charts. We also learned how to scan our Helm charts to evaluate its security risks using Kubescape.&nbsp;</p><p>Hope you enjoyed the read. Please comment if you have any questions.</p>]]></content:encoded></item><item><title><![CDATA[Why Companies Should Consider Hiring a DevEx Engineer]]></title><description><![CDATA[Let&#8217;s take a closer look at why it makes sense for your company to hire a developer experience engineer.]]></description><link>https://devops.substack.com/p/why-companies-should-consider-hiring</link><guid isPermaLink="false">https://devops.substack.com/p/why-companies-should-consider-hiring</guid><dc:creator><![CDATA[DevOps Editorial]]></dc:creator><pubDate>Thu, 08 Sep 2022 00:11:57 GMT</pubDate><enclosure url="https://images.unsplash.com/photo-1581548133861-ad7a282a1d62?ixlib=rb-1.2.1&amp;ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&amp;auto=format&amp;fit=crop&amp;w=1000&amp;q=80" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://images.unsplash.com/photo-1581548133861-ad7a282a1d62?ixlib=rb-1.2.1&amp;ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&amp;auto=format&amp;fit=crop&amp;w=1000&amp;q=80" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://images.unsplash.com/photo-1581548133861-ad7a282a1d62?ixlib=rb-1.2.1&amp;ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&amp;auto=format&amp;fit=crop&amp;w=1000&amp;q=80 424w, https://images.unsplash.com/photo-1581548133861-ad7a282a1d62?ixlib=rb-1.2.1&amp;ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&amp;auto=format&amp;fit=crop&amp;w=1000&amp;q=80 848w, https://images.unsplash.com/photo-1581548133861-ad7a282a1d62?ixlib=rb-1.2.1&amp;ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&amp;auto=format&amp;fit=crop&amp;w=1000&amp;q=80 1272w, https://images.unsplash.com/photo-1581548133861-ad7a282a1d62?ixlib=rb-1.2.1&amp;ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&amp;auto=format&amp;fit=crop&amp;w=1000&amp;q=80 1456w" sizes="100vw"><img src="https://images.unsplash.com/photo-1581548133861-ad7a282a1d62?ixlib=rb-1.2.1&amp;ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&amp;auto=format&amp;fit=crop&amp;w=1000&amp;q=80" width="1000" height="667" data-attrs="{&quot;src&quot;:&quot;https://images.unsplash.com/photo-1581548133861-ad7a282a1d62?ixlib=rb-1.2.1&amp;ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&amp;auto=format&amp;fit=crop&amp;w=1000&amp;q=80&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:667,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://images.unsplash.com/photo-1581548133861-ad7a282a1d62?ixlib=rb-1.2.1&amp;ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&amp;auto=format&amp;fit=crop&amp;w=1000&amp;q=80 424w, https://images.unsplash.com/photo-1581548133861-ad7a282a1d62?ixlib=rb-1.2.1&amp;ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&amp;auto=format&amp;fit=crop&amp;w=1000&amp;q=80 848w, https://images.unsplash.com/photo-1581548133861-ad7a282a1d62?ixlib=rb-1.2.1&amp;ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&amp;auto=format&amp;fit=crop&amp;w=1000&amp;q=80 1272w, https://images.unsplash.com/photo-1581548133861-ad7a282a1d62?ixlib=rb-1.2.1&amp;ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&amp;auto=format&amp;fit=crop&amp;w=1000&amp;q=80 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Image by&nbsp;<a href="https://unsplash.com/photos/L58uwc_d9zY">ConvertKit</a>&nbsp;on&nbsp;<a href="https://unsplash.com/@convertkit">Unsplash</a></figcaption></figure></div><p>As companies continue to explore opportunities for digital transformation, they do so with the understanding that their software products will become an increasingly important means of differentiating themselves from their competitors.&nbsp;</p><p>Companies invest in user experience designers and user researchers to help their users easily understand and use their products. They invest in user experience engineers, operational engineers, and other job roles that focus on software development practices. But what about a developer experience engineer? Is this role even necessary? Let&#8217;s take a closer look at why it makes sense for your company to hire a developer experience engineer.</p><h2><strong>What&nbsp;Does a&nbsp;Developer&nbsp;Experience&nbsp;Engineer&nbsp;Do?</strong></h2><p>A developer experience engineer is typically someone who specializes in understanding how developers use a product so that they can create an optimal experience for them. This includes understanding how developers work, what tools and resources they use, and what pain points exist for them when using a product.&nbsp;</p><p>A&nbsp;<a href="https://www.getport.io/blog/developer-experience">developer experience</a>&nbsp;engineer then creates solutions for those pain points. They may do this by creating new tools or resources for developers to use, or by providing recommendations for product improvements. In their role, a developer experience engineer may interact with many different departments, including engineering, operations, product, and marketing. This is because the work of a developer experience engineer is not limited just to the product. Their work is often crucial to enabling the product and providing an optimal experience for developers.&nbsp;</p><p>A developer experience engineer is&nbsp;<a href="https://www.helpnetsecurity.com/2021/07/16/developer-experience-engineer/">responsible</a>&nbsp;for a wide range of activities, including:&nbsp;understanding and documenting developer workflows,&nbsp;defining and prioritizing product improvements,&nbsp;creating resources and tooling to support developers</p><h2><strong>The&nbsp;Value of a&nbsp;Developer&nbsp;Experience&nbsp;Engineer</strong></h2><p>A company that prioritizes the experience of developers is likely to see many benefits across its&nbsp;<a href="https://www.tcgen.com/product-development/product-development-life-cycle/">product development lifecycle</a>&nbsp;and its company culture. If developers feel valued, they are more likely to remain with a company. They may even be more engaged than ever. This can be extremely helpful as a company scales, especially in a competitive job market. Retaining top talent is more important than ever in a digital economy that is increasingly driven by software products.&nbsp;</p><p>Part of creating a great developer experience is understanding the pain points of developers. This is where the role of a developer experience engineer can be extremely valuable. They can investigate and document the pain points of developers across the product lifecycle. They can then work with other departments to create solutions for these pain points. This allows the product team to more effectively prioritize and focus their development efforts, while also creating more value for developers.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vIos!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6b1cd92b-73d2-47eb-b535-83dda3d8e995_1500x981.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vIos!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6b1cd92b-73d2-47eb-b535-83dda3d8e995_1500x981.png 424w, https://substackcdn.com/image/fetch/$s_!vIos!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6b1cd92b-73d2-47eb-b535-83dda3d8e995_1500x981.png 848w, https://substackcdn.com/image/fetch/$s_!vIos!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6b1cd92b-73d2-47eb-b535-83dda3d8e995_1500x981.png 1272w, https://substackcdn.com/image/fetch/$s_!vIos!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6b1cd92b-73d2-47eb-b535-83dda3d8e995_1500x981.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vIos!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6b1cd92b-73d2-47eb-b535-83dda3d8e995_1500x981.png" width="1456" height="952" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/6b1cd92b-73d2-47eb-b535-83dda3d8e995_1500x981.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:952,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vIos!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6b1cd92b-73d2-47eb-b535-83dda3d8e995_1500x981.png 424w, https://substackcdn.com/image/fetch/$s_!vIos!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6b1cd92b-73d2-47eb-b535-83dda3d8e995_1500x981.png 848w, https://substackcdn.com/image/fetch/$s_!vIos!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6b1cd92b-73d2-47eb-b535-83dda3d8e995_1500x981.png 1272w, https://substackcdn.com/image/fetch/$s_!vIos!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6b1cd92b-73d2-47eb-b535-83dda3d8e995_1500x981.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://www.conceptdraw.com/solution-park/business-processes-workflow-diagrams">Source</a></figcaption></figure></div><h2>W<strong>ays a Developer Experience Engineer&nbsp;Creates&nbsp;Value</strong></h2><h3><strong>Understanding and&nbsp;Documenting&nbsp;Developer&nbsp;Workflows&nbsp;</strong></h3><p>A developer experience engineer should be closely tracking how developers work within a product. This includes understanding how they use the product, how long certain tasks take, and any pain points that exist for them. From this information, a developer experience engineer can create product improvements that make developers more productive. This can be as simple as streamlining a process with a new feature in the product or as complex as creating a new system that allows developers to do certain tasks more efficiently.&nbsp;</p><h3><strong>Defining and&nbsp;Prioritizing&nbsp;Product&nbsp;Improvements&nbsp;</strong></h3><p>A developer experience engineer should be closely tracking how developers use a product. They should collaborate&nbsp;with customer-facing&nbsp;and other teams to get regular feedback from customers. They should also be closely tracking emerging trends in the developer community. They are in a great position to identify product improvements based on this information.&nbsp;</p><h3><strong>Creating&nbsp;Resources and&nbsp;Tooling to&nbsp;Support&nbsp;Developers&nbsp;</strong></h3><p>A developer experience engineer should be closely tracking tooling and resources that developers use within a product. They can also create new resources that make developers more efficient. This can help improve the experience that customers have when they use the product. It can even help reduce the amount of time it takes for customers to find value in the product.</p><h3><strong>Company Culture and Communication</strong></h3><p>A company that prioritizes a positive developer experience is more likely to have a strong company culture. A good developer experience engineer will help create a culture that makes developers feel valued and appreciated. This can go a long way towards&nbsp;retaining talent. The tools and resources that a developer experience engineer creates can also help improve communication with the developer community. This can help a company reach new developers and make it easier for existing customers to share their experiences&nbsp;with others.</p><h3><strong>Developers Are Tired of Re-writing Code</strong></h3><p>Part of a good developer experience is providing developers with the tools and resources that they need to do their job efficiently. This often means providing them with libraries and modules that they can use to build their product.&nbsp;</p><p>However, companies are increasingly&nbsp;<a href="https://vibratingmelon.com/2011/06/10/why-you-should-almost-never-rewrite-code-a-graphical-guide/">re-writing their code</a>&nbsp;to make it more modular. While this is a good practice, it can be frustrating for developers. Now, more than ever, developers are tired of re-writing code. A developer experience engineer can help avoid this frustration by working with&nbsp;the&nbsp;product and engineering&nbsp;teams&nbsp;to create a library of modules that can be used throughout the product. This can save developers hours or days of work, while also providing them with more consistent functionality across the product.</p><h2><strong>How to Find a Good Developer Experience Engineer</strong></h2><p>The best way to find a good developer experience engineer is to make sure that the job role exists in the first place. A company may be so focused on other priorities that it doesn&#8217;t even consider hiring a developer experience engineer.&nbsp;</p><p>You may want to consider hiring a developer experience engineer if you want to improve your product and make it easier for developers to use,&nbsp;improve your product team&#8217;s experience&nbsp;by making&nbsp;their tasks&nbsp;easier&nbsp;to&nbsp;do,&nbsp;and&nbsp;improve&nbsp;<a href="https://www.softwaresuggest.com/blog/collaboration-techniques-to-improve-team-performance/">collaboration</a>&nbsp;between teams and departments. Look for candidates who have experience in these areas. You may also want candidates who have experience working in the developer community. This will help ensure that they have a good understanding of the pain points that developers face.</p><h2><strong>Conclusion</strong></h2><p>The role of the developer experience engineer is extremely valuable to product companies. They can help create an optimal developer experience by understanding how developers work and what they need. They can also create new resources and tools that make it easier for developers to do their job. A company that prioritizes a positive developer experience is more likely to have a strong product, be able to retain its top talent, and reach new developers through their product.</p>]]></content:encoded></item><item><title><![CDATA[Using Data Warehouses and OLAP for Efficiency]]></title><description><![CDATA[Photo by Lars Kienle on Unsplash]]></description><link>https://devops.substack.com/p/using-data-warehouses-and-olap-for</link><guid isPermaLink="false">https://devops.substack.com/p/using-data-warehouses-and-olap-for</guid><dc:creator><![CDATA[Luciano Niamh]]></dc:creator><pubDate>Tue, 22 Mar 2022 06:37:32 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!peVw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F96adb28d-2cbf-473f-a5bf-8a092bc88301_1600x1066.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!peVw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F96adb28d-2cbf-473f-a5bf-8a092bc88301_1600x1066.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!peVw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F96adb28d-2cbf-473f-a5bf-8a092bc88301_1600x1066.jpeg 424w, https://substackcdn.com/image/fetch/$s_!peVw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F96adb28d-2cbf-473f-a5bf-8a092bc88301_1600x1066.jpeg 848w, https://substackcdn.com/image/fetch/$s_!peVw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F96adb28d-2cbf-473f-a5bf-8a092bc88301_1600x1066.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!peVw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F96adb28d-2cbf-473f-a5bf-8a092bc88301_1600x1066.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!peVw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F96adb28d-2cbf-473f-a5bf-8a092bc88301_1600x1066.jpeg" width="1456" height="970" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/96adb28d-2cbf-473f-a5bf-8a092bc88301_1600x1066.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:970,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!peVw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F96adb28d-2cbf-473f-a5bf-8a092bc88301_1600x1066.jpeg 424w, https://substackcdn.com/image/fetch/$s_!peVw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F96adb28d-2cbf-473f-a5bf-8a092bc88301_1600x1066.jpeg 848w, https://substackcdn.com/image/fetch/$s_!peVw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F96adb28d-2cbf-473f-a5bf-8a092bc88301_1600x1066.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!peVw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F96adb28d-2cbf-473f-a5bf-8a092bc88301_1600x1066.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="https://unsplash.com/photos/IlxX7xnbRF8">Photo</a> by<a href="https://unsplash.com/@larskienle?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText"> Lars Kienle</a> on Unsplash&nbsp;</strong></p><p>In the OLAP process, data is retrieved from various data repositories and made interoperable by altering data types, adding different kinds of tags, removing some information, and performing some type of deanonymization before it is moved to a data warehouse, where it is stored.</p><p>Data warehousing is the collection and administration of data from various sources, including different analytics websites, internet sources, and feedback forms, for the purpose of providing meaningful insights that may be valuable to the organization.&nbsp;</p><p>Using a data warehouse to link and analyze company data from various sources has become standard practice in recent years. In the business intelligence system, the data warehouse serves as the heart, and it is designed to handle data processing and its reporting.</p><h2>Achieving Efficiency through Data Warehouses and OLAP</h2><h3>Performing Analytics on Data</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!frk4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F24296bcb-30e4-48c3-a40c-7209cf0e7618_655x395.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!frk4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F24296bcb-30e4-48c3-a40c-7209cf0e7618_655x395.jpeg 424w, https://substackcdn.com/image/fetch/$s_!frk4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F24296bcb-30e4-48c3-a40c-7209cf0e7618_655x395.jpeg 848w, https://substackcdn.com/image/fetch/$s_!frk4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F24296bcb-30e4-48c3-a40c-7209cf0e7618_655x395.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!frk4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F24296bcb-30e4-48c3-a40c-7209cf0e7618_655x395.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!frk4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F24296bcb-30e4-48c3-a40c-7209cf0e7618_655x395.jpeg" width="655" height="395" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/24296bcb-30e4-48c3-a40c-7209cf0e7618_655x395.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:395,&quot;width&quot;:655,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!frk4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F24296bcb-30e4-48c3-a40c-7209cf0e7618_655x395.jpeg 424w, https://substackcdn.com/image/fetch/$s_!frk4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F24296bcb-30e4-48c3-a40c-7209cf0e7618_655x395.jpeg 848w, https://substackcdn.com/image/fetch/$s_!frk4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F24296bcb-30e4-48c3-a40c-7209cf0e7618_655x395.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!frk4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F24296bcb-30e4-48c3-a40c-7209cf0e7618_655x395.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><a href="https://sfmagazine.com/post-entry/august-2019-add-data-analytics-to-intro-accounting/">Source</a></p><p>Organizations are now collecting a lot of data from different sources, such as embedding analytics on the website, cookies, and user feedback.&nbsp;</p><p>Processing this data is somewhat impossible on the old system. However, we can use OLAP to extract the data and store it in a <a href="https://www.firebolt.io/blog/cloud-data-warehouse">cloud data warehouse</a>. So, it is imperative that real time operations be prioritized. For example, after processing the data, organizations should ensure that the analysis is sent on time to the applications their business is implementing. This study should include a wide range of topics, including operational analytics, workforce management, asset management, and other areas of interest.&nbsp;</p><p>Since the data warehouse is able to deliver data to the associated business without delay, they may do real-time monitoring and traffic analysis, allowing the team to make educated decisions on the best course of action for the organization.</p><p>Many different <a href="https://azure.microsoft.com/en-in/overview/what-are-business-analytics-tools/">data analytics tools</a> are available for cloud data warehouses, all of which can be used to handle data, process it, and generate relevant business insights for the organization. These tools include analytic database management systems, columnar databases, and various other analytical tools.</p><h3>Performing Business Intelligence Activities</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ya4F!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F79cf60be-5ec6-4697-ba8c-b252cf5d89cb_730x448.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ya4F!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F79cf60be-5ec6-4697-ba8c-b252cf5d89cb_730x448.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Ya4F!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F79cf60be-5ec6-4697-ba8c-b252cf5d89cb_730x448.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Ya4F!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F79cf60be-5ec6-4697-ba8c-b252cf5d89cb_730x448.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Ya4F!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F79cf60be-5ec6-4697-ba8c-b252cf5d89cb_730x448.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ya4F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F79cf60be-5ec6-4697-ba8c-b252cf5d89cb_730x448.jpeg" width="730" height="448" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/79cf60be-5ec6-4697-ba8c-b252cf5d89cb_730x448.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:448,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Ya4F!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F79cf60be-5ec6-4697-ba8c-b252cf5d89cb_730x448.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Ya4F!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F79cf60be-5ec6-4697-ba8c-b252cf5d89cb_730x448.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Ya4F!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F79cf60be-5ec6-4697-ba8c-b252cf5d89cb_730x448.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Ya4F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F79cf60be-5ec6-4697-ba8c-b252cf5d89cb_730x448.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="https://towardsdatascience.com/5-most-popular-business-intelligence-bi-tools-in-2019-4e060b98039a">&nbsp;Source</a></p><p>Once the data has been collected, you can use some business intelligence practices that combine procedures and technological infrastructures. They not only collect the data but also analyze it after it has been stored. The most important analysis is done in the context of the company's actions.&nbsp;</p><p>Thus, data warehouses must incorporate business intelligence (<a href="https://searchbusinessanalytics.techtarget.com/definition/business-intelligence-BI">BI</a>) on a continuous basis because it assists them in making better decisions and increasing performance. The ability of any organization to deliver results is something that is constantly in demand. If they have given a good performance, they will have a better chance of being successful.</p><p>BI will collect real-time data and process it in the form of reports, which will then be made available to end-users for their consideration and consumption. It is also beneficial for demanding workloads for queries, scaling to vast data, and analyzing different datasets to find new facts and rules relating to a specific organization.&nbsp;</p><p>Each organization believes that using on-premises data handlers is a good option. Still, data warehouses are also very cost-effective because we use cloud object storage as the primary permanent storage layer, which is significantly less expensive than purchasing and maintaining block volumes. The system also provides an efficient cost model that scales capacity dynamically based on demand.</p><p>For example, if you have a high quantity of data, the capacity will automatically increase. Similarly, when the data quantity drops, the capacity will automatically decrease, and so on. Computer resources in the data warehouse are only metered when the analytic workload is active. And if the workload is not active for a lengthy period of time, the resources will be instantly suspended and decommissioned. This is an excellent combination for the prevalent pattern of ad hoc exploration, reporting, and data science jobs that can be found in a majority of organizations.</p><h2>Benefits of Using Cloud Data Warehouses and OLAP</h2><h3>A Time-Saving Approach</h3><p>A cloud data warehouse offers you access to all your essential data in a short period of time, allowing you and your staff to avoid having to wait until a deadline is approaching. You only need to install your data model once, and you will be able to acquire data within seconds. Most warehousing solutions make it possible to accomplish this without the need for a complicated query or <a href="https://azure.microsoft.com/en-us/overview/what-is-machine-learning-platform/">machine learning</a> techniques.</p><h3>Better Access to Data and Analytics</h3><p>With data warehousing, you may consolidate information from a variety of sources into a single, easily accessible location. Therefore, you will be able to ensure the dependability and quality of your company data. You will be able to find and remove duplicate data, inaccurately reported data, and misinformation in this manner.</p><h2>Conclusion</h2><p>Whether it is through business analytics or by processing stored data, data warehouses and OLAP operations can give a range of benefits to an organization. The fact that it works on the cloud, which is predominantly built on the pay-per-use model, makes it a cost-effective option as well. A data warehouse can therefore be used to boost the efficiency of organizations interested in getting a great deal more beneficial insights to advance their positions inside the company.</p>]]></content:encoded></item><item><title><![CDATA[How to Improve your Debugging Processes]]></title><description><![CDATA[Here are four must-implement steps to add to your software development life cycle to improve your team&#8217;s debugging process.]]></description><link>https://devops.substack.com/p/how-to-improve-your-debugging-processes</link><guid isPermaLink="false">https://devops.substack.com/p/how-to-improve-your-debugging-processes</guid><dc:creator><![CDATA[DevOps Editorial]]></dc:creator><pubDate>Tue, 19 Oct 2021 18:22:42 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zAxy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4ceff180-4ac5-4576-95fa-93ac24b207e0_1600x1066.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zAxy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4ceff180-4ac5-4576-95fa-93ac24b207e0_1600x1066.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zAxy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4ceff180-4ac5-4576-95fa-93ac24b207e0_1600x1066.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zAxy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4ceff180-4ac5-4576-95fa-93ac24b207e0_1600x1066.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zAxy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4ceff180-4ac5-4576-95fa-93ac24b207e0_1600x1066.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zAxy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4ceff180-4ac5-4576-95fa-93ac24b207e0_1600x1066.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zAxy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4ceff180-4ac5-4576-95fa-93ac24b207e0_1600x1066.jpeg" width="1456" height="970" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/4ceff180-4ac5-4576-95fa-93ac24b207e0_1600x1066.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:970,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Photograph of a laptop with stock code&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Photograph of a laptop with stock code" title="Photograph of a laptop with stock code" srcset="https://substackcdn.com/image/fetch/$s_!zAxy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4ceff180-4ac5-4576-95fa-93ac24b207e0_1600x1066.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zAxy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4ceff180-4ac5-4576-95fa-93ac24b207e0_1600x1066.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zAxy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4ceff180-4ac5-4576-95fa-93ac24b207e0_1600x1066.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zAxy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4ceff180-4ac5-4576-95fa-93ac24b207e0_1600x1066.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Photo by <a href="https://unsplash.com/@jexo?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Jexo</a> on <a href="https://unsplash.com/s/photos/coding?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></em></figcaption></figure></div><p>When working on an application with a team, there come many opportunities for debugging. Debugging is the process of finding and resolving bugs. At first, everyone is very familiar with the project: they know what they&#8217;re going to build and what problems the application may potentially solve or have.&nbsp;</p><p>Over time, as developers work their magic, the codebase gets larger and larger. However, since everyone&#8217;s familiar with everything, it&#8217;s easy to diagnose a bug when it comes up and quickly resolve it. There are multiple ways and methods to diagnose bugs when the team knows everything about the code, like <a href="https://lightrun.com/debugging/remote-debugging/">remote debugging</a> or unit testing.</p><p>However, as the codebase grows, developers who worked on the code leave the company and are replaced by new developers. In this constantly changing environment, the team may lose understanding of the code, and things may get lost in translation.&nbsp;</p><p>So, how can one fix this? Below are four must-implement steps to add to your <a href="https://www.tutorialspoint.com/sdlc/sdlc_overview.htm">software development life cycle</a> to improve your team&#8217;s debugging process.</p><h2>Testing</h2><p>This one&#8217;s quite obvious: testing can help you understand which parts of the codebase work and which ones don&#8217;t. It would be best if you run tests frequently and periodically, especially after every significant change. This is a way to prevent bugs from popping up in shipment and understand your application&#8217;s end goal. It can also help new members appreciate the logic behind your code&#8217;s design.&nbsp;</p><p>Of course, many developers don&#8217;t like writing tests, especially in <a href="https://en.wikipedia.org/wiki/Test-driven_development">test-driven development</a> (TDD) approach environments. In TDD, you write tests before you even run the code. This is supposed to help you understand what you should and shouldn&#8217;t have in your code at runtime.&nbsp;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cUNl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F83f44cd5-7b75-48f9-b940-1b71956fb37b_720x405.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cUNl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F83f44cd5-7b75-48f9-b940-1b71956fb37b_720x405.png 424w, https://substackcdn.com/image/fetch/$s_!cUNl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F83f44cd5-7b75-48f9-b940-1b71956fb37b_720x405.png 848w, https://substackcdn.com/image/fetch/$s_!cUNl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F83f44cd5-7b75-48f9-b940-1b71956fb37b_720x405.png 1272w, https://substackcdn.com/image/fetch/$s_!cUNl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F83f44cd5-7b75-48f9-b940-1b71956fb37b_720x405.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cUNl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F83f44cd5-7b75-48f9-b940-1b71956fb37b_720x405.png" width="720" height="405" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/83f44cd5-7b75-48f9-b940-1b71956fb37b_720x405.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:405,&quot;width&quot;:720,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Graphic showing the flow of test-driven development. &quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Graphic showing the flow of test-driven development. " title="Graphic showing the flow of test-driven development. " srcset="https://substackcdn.com/image/fetch/$s_!cUNl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F83f44cd5-7b75-48f9-b940-1b71956fb37b_720x405.png 424w, https://substackcdn.com/image/fetch/$s_!cUNl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F83f44cd5-7b75-48f9-b940-1b71956fb37b_720x405.png 848w, https://substackcdn.com/image/fetch/$s_!cUNl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F83f44cd5-7b75-48f9-b940-1b71956fb37b_720x405.png 1272w, https://substackcdn.com/image/fetch/$s_!cUNl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F83f44cd5-7b75-48f9-b940-1b71956fb37b_720x405.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://developer.ibm.com/articles/5-steps-of-test-driven-development/">Source</a></figcaption></figure></div><p>As a result, you test your project from the very beginning and avoid facing many common bugs. However, finding and fixing bugs without testing and adding new errors can become very hard when your project is enormous.&nbsp;</p><p>Consider implementing a comprehensive set of tests, including unit tests, functional tests, integrational tests, and so on.</p><h2>Logging</h2><p>Application logs help you find helpful information while going through the code. They help track the progress of your application and understand why specific bugs and issues pop up. There are many ways you can use logging to your advantage.</p><p>The most common way is to add logs manually to your code. This means tracking and documenting information that can help trace code behavior. You can also add a few files for logging different types of errors. Switch these types depending on the environment application.&nbsp;</p><p>Of course, sometimes searching through multiple files can get tedious. So, you can use <a href="https://stackify.com/best-log-management-tools/">logging tools</a> to improve your debugging process by searching logs, gathering them in one place, and providing a comfortable web interface to view them.&nbsp;</p><p>You can also set up a chat messaging function on Slack or some other messenger through some tools for urgent fatal errors or critical issues. This way, the tool will notify the entire team of these issues as soon as they are discovered.</p><h2>Containerization</h2><p>To prevent bugs like blink bugs, I recommend using <a href="https://azure.microsoft.com/en-us/overview/what-is-a-container/">containers</a>.&nbsp;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hB-m!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff322e5a8-5f51-46c1-bbef-483804351bed_1200x1039.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hB-m!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff322e5a8-5f51-46c1-bbef-483804351bed_1200x1039.png 424w, https://substackcdn.com/image/fetch/$s_!hB-m!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff322e5a8-5f51-46c1-bbef-483804351bed_1200x1039.png 848w, https://substackcdn.com/image/fetch/$s_!hB-m!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff322e5a8-5f51-46c1-bbef-483804351bed_1200x1039.png 1272w, https://substackcdn.com/image/fetch/$s_!hB-m!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff322e5a8-5f51-46c1-bbef-483804351bed_1200x1039.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hB-m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff322e5a8-5f51-46c1-bbef-483804351bed_1200x1039.png" width="1200" height="1039" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/f322e5a8-5f51-46c1-bbef-483804351bed_1200x1039.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1039,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Graphic showing the structure of a containerized application&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Graphic showing the structure of a containerized application" title="Graphic showing the structure of a containerized application" srcset="https://substackcdn.com/image/fetch/$s_!hB-m!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff322e5a8-5f51-46c1-bbef-483804351bed_1200x1039.png 424w, https://substackcdn.com/image/fetch/$s_!hB-m!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff322e5a8-5f51-46c1-bbef-483804351bed_1200x1039.png 848w, https://substackcdn.com/image/fetch/$s_!hB-m!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff322e5a8-5f51-46c1-bbef-483804351bed_1200x1039.png 1272w, https://substackcdn.com/image/fetch/$s_!hB-m!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff322e5a8-5f51-46c1-bbef-483804351bed_1200x1039.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://www.docker.com/resources/what-container">Source</a></figcaption></figure></div><p>In a container, you can set up all your requirements to be uniform for all your environments&#8212;test, development, and production. For example, you can have different interpreters set up in your production environment and on a local machine. This can bring unexpected bugs.&nbsp;</p><p>But with containers, you can set up the same version for every machine. So there will be no chance to have different installed packages that can bring some strange issues. Containerization also enables your application to run very fast on any new machine.&nbsp;</p><h1>Debuggers</h1><p>Finally, you can try to use tools like debuggers. These tools allow you to debug your application on the fly. They provide you with a way to look at how your code behaves while running.&nbsp;</p><p>You can do this by adding breakpoints in some lines of code via the debugger. It will stop at these lines and give you helpful information about the values of variables, exceptions, memory usage, and so on. For example, you can step into the function, take a look at what happens inside of it, go over the function, and then move to the next one until you find the reason for the bug, or you can skip some part of the code.</p><p>Moreover, you will need to perform debugging in a live production server at some point. Some bugs reveal themselves only there and not in any other environment. Remote debugging makes this process possible. You can set up your debugger to operate remotely. It will connect to your local IDE and debug exactly as a debugger would in a local machine.</p><h2>Conclusion</h2><p>I hope this article has helped you understand how to avoid bugs and how to find bugs. I also hope that it taught you something new about debugging processes. Following these techniques is sure to make your life as a developer a little bit easier.<br><br></p>]]></content:encoded></item><item><title><![CDATA[Best Practices for Kubernetes Development]]></title><description><![CDATA[In this article, I'll go over some of the finest Kubernetes deployment strategies.]]></description><link>https://devops.substack.com/p/best-practices-for-kubernetes-development</link><guid isPermaLink="false">https://devops.substack.com/p/best-practices-for-kubernetes-development</guid><dc:creator><![CDATA[DevOps Editorial]]></dc:creator><pubDate>Mon, 20 Sep 2021 16:51:38 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!c7Be!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F398e6de3-a967-4ac1-9612-96fc7d49026e_5029x3353.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!c7Be!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F398e6de3-a967-4ac1-9612-96fc7d49026e_5029x3353.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!c7Be!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F398e6de3-a967-4ac1-9612-96fc7d49026e_5029x3353.jpeg 424w, https://substackcdn.com/image/fetch/$s_!c7Be!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F398e6de3-a967-4ac1-9612-96fc7d49026e_5029x3353.jpeg 848w, https://substackcdn.com/image/fetch/$s_!c7Be!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F398e6de3-a967-4ac1-9612-96fc7d49026e_5029x3353.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!c7Be!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F398e6de3-a967-4ac1-9612-96fc7d49026e_5029x3353.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!c7Be!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F398e6de3-a967-4ac1-9612-96fc7d49026e_5029x3353.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/398e6de3-a967-4ac1-9612-96fc7d49026e_5029x3353.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1423975,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!c7Be!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F398e6de3-a967-4ac1-9612-96fc7d49026e_5029x3353.jpeg 424w, https://substackcdn.com/image/fetch/$s_!c7Be!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F398e6de3-a967-4ac1-9612-96fc7d49026e_5029x3353.jpeg 848w, https://substackcdn.com/image/fetch/$s_!c7Be!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F398e6de3-a967-4ac1-9612-96fc7d49026e_5029x3353.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!c7Be!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F398e6de3-a967-4ac1-9612-96fc7d49026e_5029x3353.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by&nbsp;<a href="https://unsplash.com/@kaleidico?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Kaleidico</a>&nbsp;on&nbsp;<a href="https://unsplash.com/s/photos/development?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure></div><h2><strong>Introduction</strong></h2><p>Continuous integration and continuous deployment (CI/CD) are critical as systems become more automated. Since so many enterprises use its services in production, <strong>Kubernetes</strong> has a big place in implementing CI/CD in the form of containerization. When applications are deployed in production, they require rapid pattern changes. This is where "containerization" comes in handy.&nbsp;</p><p><a href="https://kubernetes.io/">Kubernetes</a> is acquiring a lot of popularity as a result of its qualities. In this article, I'll go over some of the finest Kubernetes deployment strategies. Let's take a look at each one separately.&nbsp;&nbsp;</p><h2><strong>Best Practices for Deployment</strong></h2><h3><strong>Keep control of your deployment with request restrictions</strong></h3><p>Although Kubernetes can scale itself automatically, the administrator must ensure or keep a watch on deployment to ensure that it has sufficient resources. If the deployment does not have sufficient resources, the CrashLoopBackOff error may occur. Admins may easily spin up more copies and make effective modifications at the CPU or RAM level because it is so simple. On a CPU and memory level, requests and constraints are utilized to manage resources.</p><p><strong>Requests </strong>are resources that a container requires or that are only granted when a&nbsp; container makes a request for them.</p><p><strong>Limits and restrictions</strong> are the same things because a container will not accept anything that exceeds its capacity. As a result, it will be unable to take advantage of&nbsp;many of the resources available to an organization.</p><blockquote><p><strong>Note</strong>: Kubernetes will give a <a href="https://komodor.com/blog/crashloopbackoff-error-everything-you-need-to-know/">CrashLoopBackOff error</a> if the limit is less than the request. Each container in a pod has its own requests and resource limitations, but because pods are scheduled in groups, admins must specify the &#8220;requests&#8221; and &#8220;limits&#8221; values so that they can work together to achieve a pod average value.&nbsp;&nbsp;</p></blockquote><h3><strong>Perform health checks with readiness and liveness probes</strong></h3><p>Kubernetes "health checks" are critical because they give performance, storage, and other reports that can help you enhance your Kubernetes' health.&nbsp;</p><p>After decreasing operational difficulties, Kubernetes liveness and readiness <a href="https://cloud.google.com/blog/products/containers-kubernetes/kubernetes-best-practices-setting-up-health-checks-with-readiness-and-liveness-probes">probes</a> assist in making services more robust and resilient. <strong>Liveness</strong> simply refers to how quickly a container can be restarted, whereas <strong>readiness</strong> refers to how quickly the container is ready to handle traffic.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VAGz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F998f1949-e55f-4357-ba42-922d311d3446_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VAGz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F998f1949-e55f-4357-ba42-922d311d3446_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!VAGz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F998f1949-e55f-4357-ba42-922d311d3446_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!VAGz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F998f1949-e55f-4357-ba42-922d311d3446_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!VAGz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F998f1949-e55f-4357-ba42-922d311d3446_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VAGz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F998f1949-e55f-4357-ba42-922d311d3446_1920x1080.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/998f1949-e55f-4357-ba42-922d311d3446_1920x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!VAGz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F998f1949-e55f-4357-ba42-922d311d3446_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!VAGz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F998f1949-e55f-4357-ba42-922d311d3446_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!VAGz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F998f1949-e55f-4357-ba42-922d311d3446_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!VAGz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F998f1949-e55f-4357-ba42-922d311d3446_1920x1080.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://www.magalix.com/blog/kubernetes-and-containers-best-practices-health-probes">Source</a></figcaption></figure></div><p>Liveness probes&#8217; values are not the same as readiness probes&#8217; values. Additionally, liveness probes are configured in passive mode, while readiness probes are configured in active mode. If a fatal error occurs, the container may crash. Therefore, be cautious and never elevate it in that situation.</p><h3><strong>Enable role-based access control (RBAC)</strong></h3><p><a href="https://en.wikipedia.org/wiki/Role-based_access_control">RBAC</a> restricts user access based on their organizational role. The limits of a normal user differ from those of an administrator. Kubernetes administrators have the same ability to define who can execute what on the Kubernetes cluster by setting permissions based on roles and rules.</p><p>Admins must set the &#8220;Role&#8221; and &#8220;ClusterRole&#8221; parameters in Kubernetes to enable RBAC. Roles grant access to a particular namespace resource<strong>. </strong>Permission to access a cluster-wide resource is granted by ClusterRole<strong>.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3vzg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F16dc0350-be30-4e8a-98a9-7b8642cbf032_1024x536.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3vzg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F16dc0350-be30-4e8a-98a9-7b8642cbf032_1024x536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3vzg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F16dc0350-be30-4e8a-98a9-7b8642cbf032_1024x536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3vzg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F16dc0350-be30-4e8a-98a9-7b8642cbf032_1024x536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3vzg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F16dc0350-be30-4e8a-98a9-7b8642cbf032_1024x536.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3vzg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F16dc0350-be30-4e8a-98a9-7b8642cbf032_1024x536.jpeg" width="1024" height="536" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/16dc0350-be30-4e8a-98a9-7b8642cbf032_1024x536.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3vzg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F16dc0350-be30-4e8a-98a9-7b8642cbf032_1024x536.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3vzg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F16dc0350-be30-4e8a-98a9-7b8642cbf032_1024x536.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3vzg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F16dc0350-be30-4e8a-98a9-7b8642cbf032_1024x536.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3vzg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F16dc0350-be30-4e8a-98a9-7b8642cbf032_1024x536.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><strong><a href="https://www.dnsstuff.com/rbac-vs-abac-access-control">Source</a></strong></figcaption></figure></div><p>RBAC referencing is also supported, implying that a "Role" can refer to a &#8220;ClusterRole&#8221; and bind that ClusterRole to the role bindings namespace.</p><p><strong>Note</strong>: RBAC can be applied to a single person or a group of people.</p><h3><strong>Resource utilization</strong></h3><p>To successfully execute Kubernetes, the administrator must specify some resource limits. There are several fundamental guidelines for improved resource use, such as do not set CPU restrictions unless you have a good use case, set CPU requests to one CPU if required, or set CPU requests to below one if practicable. Admin can establish the right quality of service (QoS) for pods and LimitRange for the namespace.</p><h3><strong>Keep small container images</strong></h3><p>Users in Kubernetes can develop and utilize images, but most of the time, they use the base images, which already contain many of the packages and libraries required for this configuration or resource.</p><p>Always prefer to use a light image&#8212;one with fewer packages&#8212;as this speeds up builds and decreases the risk of malware and viruses being carried inside the image. When choosing an image, the user should choose &#8220;<strong>ALPINE</strong>&#8221; pictures, which are 10 times lighter or smaller than the base images, and then add the libraries and&nbsp;packages that the program requires.</p><p>Both approaches aid in the creation of light pictures, which are always less vulnerable to&nbsp;attacks due to their lower attack surface area.</p><h3><strong>Regular review of policy logs</strong></h3><p>When a user completes a job on Kubernetes, a log is written to show that the work was completed by that user. Policy logs must be monitored on a regular basis by administrators to understand how policies are being used and where policy modifications are required.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nqkM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd559fb53-ed46-416c-871b-78104dfd4590_508x394.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nqkM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd559fb53-ed46-416c-871b-78104dfd4590_508x394.jpeg 424w, https://substackcdn.com/image/fetch/$s_!nqkM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd559fb53-ed46-416c-871b-78104dfd4590_508x394.jpeg 848w, https://substackcdn.com/image/fetch/$s_!nqkM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd559fb53-ed46-416c-871b-78104dfd4590_508x394.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!nqkM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd559fb53-ed46-416c-871b-78104dfd4590_508x394.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nqkM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd559fb53-ed46-416c-871b-78104dfd4590_508x394.jpeg" width="508" height="394" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/d559fb53-ed46-416c-871b-78104dfd4590_508x394.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:394,&quot;width&quot;:508,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nqkM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd559fb53-ed46-416c-871b-78104dfd4590_508x394.jpeg 424w, https://substackcdn.com/image/fetch/$s_!nqkM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd559fb53-ed46-416c-871b-78104dfd4590_508x394.jpeg 848w, https://substackcdn.com/image/fetch/$s_!nqkM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd559fb53-ed46-416c-871b-78104dfd4590_508x394.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!nqkM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd559fb53-ed46-416c-871b-78104dfd4590_508x394.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://www.softwaretestinghelp.com/log-management-software/">Source</a></figcaption></figure></div><p>At this location, all <a href="https://kubernetes.io/docs/tasks/debug-application-cluster/audit/">audit logs</a> are saved as <strong>/var/log/audit.log</strong>. The purpose of a log audit is to discover threats to resources, resource consumption, and the heartbeats of the Kubernetes cluster.<br><br>When an administrator installs Kubernetes, it comes with predefined default policies, such as <strong>/kubernetes/audit-policy.yam</strong>l files, which can be customized to meet the needs of their organization. Admins can check the policy manually or with the help of a program. There are other programs available for this purpose, including &#8220;Fluentd,&#8221; an open-source utility.&nbsp;&nbsp;&nbsp;</p><h2><strong>Conclusion</strong></h2><p>As we all know, Kubernetes is quite popular. Thus, implementing it while following some best practices will yield more successful outcomes. We discussed some recommended practices from my experience in this article, but they may alter depending on your cluster architecture. Each application's built structure is unique and demands a unique approach to fine-tuning. The only thing that matters at the end of the day is how to optimize your containerized framework.</p>]]></content:encoded></item><item><title><![CDATA[Should I Use SAST or DAST?]]></title><description><![CDATA[The two main application security testing measures used for this purpose by industries are SAST and DAST. In this article, we will try to break down both of these aspects individually.]]></description><link>https://devops.substack.com/p/should-i-use-sast-or-dast</link><guid isPermaLink="false">https://devops.substack.com/p/should-i-use-sast-or-dast</guid><pubDate>Wed, 21 Apr 2021 11:41:08 GMT</pubDate><enclosure url="https://cdn.substack.com/image/fetch/h_600,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8d00016-a43c-4715-a505-75db93cdddf7_800x533.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!07rt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8d00016-a43c-4715-a505-75db93cdddf7_800x533.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!07rt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8d00016-a43c-4715-a505-75db93cdddf7_800x533.jpeg 424w, https://substackcdn.com/image/fetch/$s_!07rt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8d00016-a43c-4715-a505-75db93cdddf7_800x533.jpeg 848w, https://substackcdn.com/image/fetch/$s_!07rt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8d00016-a43c-4715-a505-75db93cdddf7_800x533.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!07rt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8d00016-a43c-4715-a505-75db93cdddf7_800x533.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!07rt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8d00016-a43c-4715-a505-75db93cdddf7_800x533.jpeg" width="674" height="449.0525" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/c8d00016-a43c-4715-a505-75db93cdddf7_800x533.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:533,&quot;width&quot;:800,&quot;resizeWidth&quot;:674,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!07rt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8d00016-a43c-4715-a505-75db93cdddf7_800x533.jpeg 424w, https://substackcdn.com/image/fetch/$s_!07rt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8d00016-a43c-4715-a505-75db93cdddf7_800x533.jpeg 848w, https://substackcdn.com/image/fetch/$s_!07rt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8d00016-a43c-4715-a505-75db93cdddf7_800x533.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!07rt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fc8d00016-a43c-4715-a505-75db93cdddf7_800x533.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Photo by<a href="https://unsplash.com/@ffstop?utm_source=medium&amp;utm_medium=referral"> Fotis Fotopoulos</a> on <a href="https://unsplash.com/?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure></div><p>Cybersecurity is an important concern in the modern era. With the rise of smart devices and continuous advancements in the field of technology, precautionary measures must be taken in order to maintain the overall stability of these devices. Hence, several methods for testing are employed to deduce any kind of abnormal activity or occurrence in these technological innovations.</p><p>Most companies and industries are investing their valuable resources to prevent external forces from interfering with the natural working activities of their internal devices. The two main application security testing measures used for this purpose by industries are <strong>static application security testing</strong> (SAST) and <strong>dynamic application security testing</strong> (DAST).</p><p>In this article, we will try to break down both of these aspects individually. First, we will give you a brief introduction of SAST and then proceed to understand the numerous aspects of DAST. Finally, we will arrive at a conclusion on which of these two application security measures is best suited for your particular tasks.</p><h2>Static Application Security Testing</h2><p><a href="https://www.perforce.com/blog/kw/what-is-sast">SAST</a> is often referred to as a method of white-box security testing.&nbsp;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MatK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7ac88da6-ce63-40e6-a710-c1f886d6024a_499x260.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MatK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7ac88da6-ce63-40e6-a710-c1f886d6024a_499x260.png 424w, https://substackcdn.com/image/fetch/$s_!MatK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7ac88da6-ce63-40e6-a710-c1f886d6024a_499x260.png 848w, https://substackcdn.com/image/fetch/$s_!MatK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7ac88da6-ce63-40e6-a710-c1f886d6024a_499x260.png 1272w, https://substackcdn.com/image/fetch/$s_!MatK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7ac88da6-ce63-40e6-a710-c1f886d6024a_499x260.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MatK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7ac88da6-ce63-40e6-a710-c1f886d6024a_499x260.png" width="499" height="260" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/7ac88da6-ce63-40e6-a710-c1f886d6024a_499x260.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:260,&quot;width&quot;:499,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!MatK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7ac88da6-ce63-40e6-a710-c1f886d6024a_499x260.png 424w, https://substackcdn.com/image/fetch/$s_!MatK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7ac88da6-ce63-40e6-a710-c1f886d6024a_499x260.png 848w, https://substackcdn.com/image/fetch/$s_!MatK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7ac88da6-ce63-40e6-a710-c1f886d6024a_499x260.png 1272w, https://substackcdn.com/image/fetch/$s_!MatK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7ac88da6-ce63-40e6-a710-c1f886d6024a_499x260.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><a href="https://medium.com/@dulaniherath/black-box-testing-and-whitebox-testing-408dc327226b">Image Source</a></em></figcaption></figure></div><p>It is used to secure software and other internal features by reviewing the in-depth binary or source codes of the available software and identifying the main sources of vulnerabilities. This method of application security testing has existed for a long time but gained more popularity during the 1990s.</p><p>To understand the true meaning behind this statement, let us look at some of its features. SAST allows the user to access the internal and underlying frameworks, designs, and implementations. The application is tested from the inside out. This type of testing represents the developer approach.</p><p>SAST utilizes and requires the source code for analysis. This statement basically means that SAST does not require a deployed application. It analyzes the numerous source codes or the binary transformation without actually executing the application.</p><p>The main advantages of using SAST are that you can find vulnerabilities and fix them faster during the <a href="https://www.tutorialspoint.com/sdlc/sdlc_overview.htm">systems development life cycle (SDLC)</a> phase. Numerous SAST scans can be run during the phase when the feature cycle is considered complete. Since most issues can be fixed during this time, i.e. before the deployment stage, SAST is deemed as a less expensive method in comparison to other testing methodologies.</p><p>Apart from SAST being fairly cheap, it also has one more significant advantage. SAST is typically supportive of all kinds of software in the industrial applications department.&nbsp;</p><p>However, one of the major drawbacks of SAST is that they cannot discover run-time and environment-related issues that occur. The main reason for their inability to detect such issues is that SAST scans static code and it cannot discover run-time vulnerabilities.</p><h2>Dynamic Application Security Testing</h2><p>A <a href="https://www.gartner.com/en/information-technology/glossary/dynamic-application-security-testing-dast">DAST</a> is a type of black-box security testing methodology<strong>.&nbsp;</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!x-Pz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F15a37839-2c6e-45eb-81f7-d5997ea85540_900x333.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!x-Pz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F15a37839-2c6e-45eb-81f7-d5997ea85540_900x333.png 424w, https://substackcdn.com/image/fetch/$s_!x-Pz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F15a37839-2c6e-45eb-81f7-d5997ea85540_900x333.png 848w, https://substackcdn.com/image/fetch/$s_!x-Pz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F15a37839-2c6e-45eb-81f7-d5997ea85540_900x333.png 1272w, https://substackcdn.com/image/fetch/$s_!x-Pz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F15a37839-2c6e-45eb-81f7-d5997ea85540_900x333.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!x-Pz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F15a37839-2c6e-45eb-81f7-d5997ea85540_900x333.png" width="900" height="333" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/15a37839-2c6e-45eb-81f7-d5997ea85540_900x333.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:333,&quot;width&quot;:900,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!x-Pz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F15a37839-2c6e-45eb-81f7-d5997ea85540_900x333.png 424w, https://substackcdn.com/image/fetch/$s_!x-Pz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F15a37839-2c6e-45eb-81f7-d5997ea85540_900x333.png 848w, https://substackcdn.com/image/fetch/$s_!x-Pz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F15a37839-2c6e-45eb-81f7-d5997ea85540_900x333.png 1272w, https://substackcdn.com/image/fetch/$s_!x-Pz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F15a37839-2c6e-45eb-81f7-d5997ea85540_900x333.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em><a href="https://phoenixnap.com/blog/white-box-vs-black-box-testing">Image Source</a></em></figcaption></figure></div><p>It is basically a tool that is utilized in a program that can communicate with a web application or other web interfaces through the front-end. Using this technique, the DAST can be useful in identifying potential security vulnerabilities in the web application and architectural weaknesses.</p><p>The tester in DAST usually has no additional information or knowledge of the technologies or frameworks on which the application is built. The approach for testing in DAST is from the outside in, as that is how potential hackers would attack the system. Therefore, this type of testing is usually conducted by <a href="https://hackr.io/blog/best-ethical-hacking-courses">ethical hackers</a>.</p><p>The main advantage of using a DAST is that it does not require any kind of source code or binaries. The analysis is always performed during the execution phase of the application. Unlike SAST, it can also discover other run-time and environment-related issues. While static applications cannot perform this task, it is easily possible for a dynamic application to perform such tasks.</p><p>However, DAST also has a few issues. It finds vulnerabilities towards the end of the SDLC phase. Since these bugs and vulnerabilities can only be discovered after the development cycle is complete, the overall procedure is longer and expenditure is more. Hence, it costs more to do DAST.&nbsp;</p><p>When vulnerabilities are found towards the end of the SDLC phase, the delivery and deployment of the product also need to get pushed a bit further. Also, DAST typically scans only apps like web applications and web services. Unlike SAST, they are not useful for other types of software.</p><h2>Conclusion&nbsp;</h2><p>While both SAST and DAST have their own unique features and for certain applications, they can be considered more suitable for testing purposes, a slight preference is usually given to SAST methods.</p><p>But, it is worth noting that both these techniques complement their respective counterparts. Performing both of these security testing measures can be carried out for more concise and comprehensive testing.</p><p><a href="https://www.technewsworld.com/story/87018.html">Cybersecurity is an increasing concern</a> for the current generation. Hence, it is extremely crucial to protect your devices and technical equipment from malicious activities. Therefore, ensuring a security application testing software or tool is used for securing these devices is an essential step for the manufacturing of any technological product.</p>]]></content:encoded></item><item><title><![CDATA[Automating Selenium Webpage Testing with Perfecto.io]]></title><description><![CDATA[As a Frontend Web Developer, it is key for you to ensure that your site works seamlessly for all users.]]></description><link>https://devops.substack.com/p/automating-selenium-webpage-testing</link><guid isPermaLink="false">https://devops.substack.com/p/automating-selenium-webpage-testing</guid><dc:creator><![CDATA[DevOps Editorial]]></dc:creator><pubDate>Tue, 20 Oct 2020 09:35:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!EqKK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F43fd5986-2c74-455e-a1eb-446cff4be930_1350x900.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EqKK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F43fd5986-2c74-455e-a1eb-446cff4be930_1350x900.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EqKK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F43fd5986-2c74-455e-a1eb-446cff4be930_1350x900.jpeg 424w, https://substackcdn.com/image/fetch/$s_!EqKK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F43fd5986-2c74-455e-a1eb-446cff4be930_1350x900.jpeg 848w, https://substackcdn.com/image/fetch/$s_!EqKK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F43fd5986-2c74-455e-a1eb-446cff4be930_1350x900.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!EqKK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F43fd5986-2c74-455e-a1eb-446cff4be930_1350x900.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EqKK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F43fd5986-2c74-455e-a1eb-446cff4be930_1350x900.jpeg" width="1350" height="900" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/43fd5986-2c74-455e-a1eb-446cff4be930_1350x900.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:900,&quot;width&quot;:1350,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:176212,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!EqKK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F43fd5986-2c74-455e-a1eb-446cff4be930_1350x900.jpeg 424w, https://substackcdn.com/image/fetch/$s_!EqKK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F43fd5986-2c74-455e-a1eb-446cff4be930_1350x900.jpeg 848w, https://substackcdn.com/image/fetch/$s_!EqKK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F43fd5986-2c74-455e-a1eb-446cff4be930_1350x900.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!EqKK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F43fd5986-2c74-455e-a1eb-446cff4be930_1350x900.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><p>As a Frontend Web Developer, it is key for you to ensure that your site works seamlessly for all users. But all your users will not act the same way. They will access your site from varied browsers and devices.</p><p>Users are not patient enough to work around your buggy frontend. If they don&#8217;t find what they are looking for or if your site causes them even a small bit of frustration, they will bounce. In fact, users form a judgment about the site they visit in the first <a href="https://www.tandfonline.com/doi/abs/10.1080/01449290500330448">50ms of their landing</a>. That is a concise time span.&nbsp;</p><p>You must test your site on every possible variation of browser that is out there. But, how would you do that? It is not even practical to have all the test devices physically for testing. Firstly, it will be expensive and secondly, time-consuming. How are you going to manage testing on all these devices? Manually? No way.</p><p>What you need in such a scenario is a cloud-testing framework such as <a href="https://www.perfecto.io/">Perfecto</a>, <a href="http://www.appperfect.com/index.php">AppPerfect</a>, <a href="https://testsigma.com/">TestSigma</a>, or <a href="https://www.microfocus.com/en-us/products/uft-one/overview">UFT One</a>. &nbsp;I personally like the ease, convenience and reliability that Perfecto provides, so we will take a look at it in detail. <br>I will demonstrate how you can spawn a test case across various devices using Perfecto&#8217;s cloud testing environment.&nbsp;</p><p>We will also look at some really helpful features that Perfecto provides for reporting, analysis and manual debugging.</p><h3>Enter Perfecto.io</h3><p>Perfecto provides a cloud-based testing platform for running your <a href="https://www.perfecto.io/blog/what-is-test-automation">test automation</a>  scripts on various devices, both desktop and mobile. The most useful feature of the Perfecto platform is the host of devices it provides to test upon.&nbsp;</p><p>You can pick from 58 Android models and 54 iOS models to run your automation tests on. Additionally, you can pick from all major browsers available on Windows and Mac systems for testing.</p><h3>How To Get Started With Perfecto?</h3><p>You can register for a free trial for Perfecto from their <a href="https://www.perfecto.io/">homepage</a>. The 14-day free trial provides you with 240 hours of testing time across all devices. That is good enough to execute your test cases and acquaint yourself with the powerful features of this platform.</p><h3>Get Your Security Token</h3><p>To run automation tests remotely on Selenium, you will need to generate a Security Token after logging into the platform. To get the security token for your account, click on your profile name at the top right of the screen and then click on &#8216;My Security Token&#8217;. A modal will open displaying your security token, which you can copy to include in your script.</p><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_Txd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9885152-b195-4a61-8cdc-3f8f769a2e33_532x387.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_Txd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9885152-b195-4a61-8cdc-3f8f769a2e33_532x387.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_Txd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9885152-b195-4a61-8cdc-3f8f769a2e33_532x387.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_Txd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9885152-b195-4a61-8cdc-3f8f769a2e33_532x387.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_Txd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9885152-b195-4a61-8cdc-3f8f769a2e33_532x387.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_Txd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9885152-b195-4a61-8cdc-3f8f769a2e33_532x387.jpeg" width="532" height="387" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/f9885152-b195-4a61-8cdc-3f8f769a2e33_532x387.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:387,&quot;width&quot;:532,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:34626,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_Txd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9885152-b195-4a61-8cdc-3f8f769a2e33_532x387.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_Txd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9885152-b195-4a61-8cdc-3f8f769a2e33_532x387.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_Txd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9885152-b195-4a61-8cdc-3f8f769a2e33_532x387.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_Txd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9885152-b195-4a61-8cdc-3f8f769a2e33_532x387.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><h2>Planning Your Automation Script</h2><p>We will be scripting our test cases to use the unit testing framework, TestNG, so that they can be run as a part of your unit testing scripts.</p><h3><strong>Our Test Case</strong></h3><p>We are picking a simple case for this demonstration. The test script is as follows:</p><ol><li><p>Visit <a href="https://google.com">https://google.com</a></p></li><li><p>Verify that the title equals &#8220;Google&#8221;</p></li></ol><h3><strong>Picking Your Test Device</strong></h3><p>You can pick from the many options provided by Perfecto. We will be using IE 11 on Windows. We need to indicate to the Perfecto server, which device we would like to use for our testing. This can be indicated using the DesiredCapabilities class provided in the Selenium Library (org.openqa.selenium.remote.DesiredCapabilities).&nbsp;</p><p>Perfecto generates this code snippet for you, so that makes the job easy. To get the code snippet for your device of choice, just go to the Manual Testing Screen on the Perfecto platform, select your device and its properties from the available options, and then click on the &#8216;View Capabilities&#8217; link at the bottom of the screen.&nbsp;</p><p>You should now see the code snippet on the right-hand side.</p><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XiBt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F941cdc7c-39c9-4bae-a838-91aafd157659_1557x809.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XiBt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F941cdc7c-39c9-4bae-a838-91aafd157659_1557x809.jpeg 424w, https://substackcdn.com/image/fetch/$s_!XiBt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F941cdc7c-39c9-4bae-a838-91aafd157659_1557x809.jpeg 848w, https://substackcdn.com/image/fetch/$s_!XiBt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F941cdc7c-39c9-4bae-a838-91aafd157659_1557x809.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!XiBt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F941cdc7c-39c9-4bae-a838-91aafd157659_1557x809.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XiBt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F941cdc7c-39c9-4bae-a838-91aafd157659_1557x809.jpeg" width="1456" height="757" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/941cdc7c-39c9-4bae-a838-91aafd157659_1557x809.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:757,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:81795,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XiBt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F941cdc7c-39c9-4bae-a838-91aafd157659_1557x809.jpeg 424w, https://substackcdn.com/image/fetch/$s_!XiBt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F941cdc7c-39c9-4bae-a838-91aafd157659_1557x809.jpeg 848w, https://substackcdn.com/image/fetch/$s_!XiBt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F941cdc7c-39c9-4bae-a838-91aafd157659_1557x809.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!XiBt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F941cdc7c-39c9-4bae-a838-91aafd157659_1557x809.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><p>Ensure that the language dropdown is correctly set to Java. Here is a code snippet for IE 11 on Windows 10:</p><a class="image-link image2 is-viewable-img" target="_blank" href="https://carbon.now.sh/?bg=rgba(171%2C%20184%2C%20195%2C%201)&amp;t=seti&amp;wt=sharp&amp;l=auto&amp;ds=true&amp;dsyoff=20px&amp;dsblur=68px&amp;wc=true&amp;wa=true&amp;pv=12px&amp;ph=11px&amp;ln=true&amp;fl=1&amp;fm=Hack&amp;fs=14.5px&amp;lh=115%25&amp;si=false&amp;es=2x&amp;wm=false&amp;code=DesiredCapabilities%2520capabilities%2520%253D%2520new%2520DesiredCapabilities(%2522%2522%252C%2520%2522%2522%252C%2520Platform.ANY)%253B%250Acapabilities.setCapability(%2522platformName%2522%252C%2520%2522Windows%2522)%253B%250Acapabilities.setCapability(%2522platformVersion%2522%252C%2520%252210%2522)%253B%250Acapabilities.setCapability(%2522browserName%2522%252C%2520%2522Internet%2520Explorer%2522)%253B%250Acapabilities.setCapability(%2522browserVersion%2522%252C%2520%252211%2522)%253B%250Acapabilities.setCapability(%2522location%2522%252C%2520%2522US%2520East%2522)%253B%250Acapabilities.setCapability(%2522resolution%2522%252C%2520%25221024x768%2522)%253B" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QPKA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7c9011a7-23aa-412f-aac1-74716d27c88d_1594x420.png 424w, https://substackcdn.com/image/fetch/$s_!QPKA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7c9011a7-23aa-412f-aac1-74716d27c88d_1594x420.png 848w, https://substackcdn.com/image/fetch/$s_!QPKA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7c9011a7-23aa-412f-aac1-74716d27c88d_1594x420.png 1272w, https://substackcdn.com/image/fetch/$s_!QPKA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7c9011a7-23aa-412f-aac1-74716d27c88d_1594x420.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QPKA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7c9011a7-23aa-412f-aac1-74716d27c88d_1594x420.png" width="1456" height="384" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/7c9011a7-23aa-412f-aac1-74716d27c88d_1594x420.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:384,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:131277,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://carbon.now.sh/?bg=rgba(171%2C%20184%2C%20195%2C%201)&amp;t=seti&amp;wt=sharp&amp;l=auto&amp;ds=true&amp;dsyoff=20px&amp;dsblur=68px&amp;wc=true&amp;wa=true&amp;pv=12px&amp;ph=11px&amp;ln=true&amp;fl=1&amp;fm=Hack&amp;fs=14.5px&amp;lh=115%25&amp;si=false&amp;es=2x&amp;wm=false&amp;code=DesiredCapabilities%2520capabilities%2520%253D%2520new%2520DesiredCapabilities(%2522%2522%252C%2520%2522%2522%252C%2520Platform.ANY)%253B%250Acapabilities.setCapability(%2522platformName%2522%252C%2520%2522Windows%2522)%253B%250Acapabilities.setCapability(%2522platformVersion%2522%252C%2520%252210%2522)%253B%250Acapabilities.setCapability(%2522browserName%2522%252C%2520%2522Internet%2520Explorer%2522)%253B%250Acapabilities.setCapability(%2522browserVersion%2522%252C%2520%252211%2522)%253B%250Acapabilities.setCapability(%2522location%2522%252C%2520%2522US%2520East%2522)%253B%250Acapabilities.setCapability(%2522resolution%2522%252C%2520%25221024x768%2522)%253B&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QPKA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7c9011a7-23aa-412f-aac1-74716d27c88d_1594x420.png 424w, https://substackcdn.com/image/fetch/$s_!QPKA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7c9011a7-23aa-412f-aac1-74716d27c88d_1594x420.png 848w, https://substackcdn.com/image/fetch/$s_!QPKA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7c9011a7-23aa-412f-aac1-74716d27c88d_1594x420.png 1272w, https://substackcdn.com/image/fetch/$s_!QPKA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7c9011a7-23aa-412f-aac1-74716d27c88d_1594x420.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><h3><strong>Test Reporting</strong></h3><p>Perfecto provides a reporting API to manage your automation test results. We will be using this API to generate reports for the tests performed. This <a href="https://github.com/ameyanekar/PerfectoTestng/blob/master/src/main/java/com/perfecto/testng/Utils.java">file</a> contains the code needed to setup the reporting client.</p><h3>Start Coding</h3><p>Our code will work in two phases: Testing &amp; Reporting. Below is the code for the Testing part. I have added comments inline for you to understand the code:</p><a class="image-link image2 is-viewable-img" target="_blank" href="https://carbon.now.sh/?bg=rgba(171%2C%20184%2C%20195%2C%201)&amp;t=seti&amp;wt=sharp&amp;l=auto&amp;ds=true&amp;dsyoff=20px&amp;dsblur=68px&amp;wc=true&amp;wa=true&amp;pv=12px&amp;ph=11px&amp;ln=true&amp;fl=1&amp;fm=Hack&amp;fs=14.5px&amp;lh=115%25&amp;si=false&amp;es=2x&amp;wm=false&amp;code=%250Apublic%2520class%2520DesktopWinIE%2520%257B%250A%2520%2520%2520%2520RemoteWebDriver%2520driver%253B%250A%2520%2520%2520%2520ReportiumClient%2520reportiumClient%253B%250A%250A%2520%2520%2520%2520%252F%252F%2520Include%2520%2540Test%2520annotation%2520to%2520indicate%2520to%2520TestNG%252C%2520that%2520this%2520is%2520a%2520test%2520function%250A%2520%2520%2520%2520%2540Test%250A%2520%2520%2520%2520public%2520void%2520seleniumTest()%2520throws%2520Exception%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520String%2520cloudName%2520%253D%2520%2522testingcloud%2522%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520%252F%252FReplace%2520%253Ctoken%253E%2520with%2520your%2520Perfecto%2520security%2520token%250A%2520%2520%2520%2520%2520%2520%2520%2520String%2520securityToken%2520%253D%2520%2522%253Ctoken%253E%2522%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520%250A%2520%2520%2520%2520%2520%2520%2520%2520%252F%252F%2520Refer%2520to%2520the%2520%2522Picking%2520Your%2520Test%2520Device%2522%2520section%2520to%2520understand%2520how%2520to%2520obtain%2520this%2520from%2520Perfecto%27s%2520online%2520platform%250A%2520%2520%2520%2520%2520%2520%2520%2520DesiredCapabilities%2520capabilities%2520%253D%2520new%2520DesiredCapabilities(%2522%2522%252C%2520%2522%2522%252C%2520Platform.ANY)%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520capabilities.setCapability(%2522platformName%2522%252C%2520%2522Windows%2522)%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520capabilities.setCapability(%2522platformVersion%2522%252C%2520%252210%2522)%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520capabilities.setCapability(%2522browserName%2522%252C%2520%2522Internet%2520Explorer%2522)%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520capabilities.setCapability(%2522browserVersion%2522%252C%2520%252211%2522)%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520capabilities.setCapability(%2522location%2522%252C%2520%2522US%2520East%2522)%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520capabilities.setCapability(%2522resolution%2522%252C%2520%25221024x768%2522)%253B%250A%250A%2520%2520%2520%2520%2520%2520%2520%2520capabilities.setCapability(%2522securityToken%2522%252C%2520securityToken)%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520%252F%252F%2520Initialize%2520your%2520RemoteWebDriver%250A%2520%2520%2520%2520%2520%2520%2520%2520try%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520driver%2520%253D%2520new%2520RemoteWebDriver(new%2520URL(%2522https%253A%252F%252F%2522%2520%252B%2520cloudName%2520%252B%2520%2522.perfectomobile.com%252Fnexperience%252Fperfectomobile%252Fwd%252Fhub%2522)%252C%2520capabilities)%253B%250A%250A%2520%2520%2520%2520%2520%2520%2520%2520%257D%2520catch(SessionNotCreatedException%2520e)%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520throw%2520new%2520RuntimeException(%2522Driver%2520not%2520created%2520with%2520capabilities%253A%2520%2522%2520%252B%2520capabilities.toString())%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520%257D%250A%250A%2520%2520%2520%2520%2520%2520%2520%2520try%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%252F%252F%2520Create%2520reportiumClient%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520reportiumClient%2520%253D%2520Utils.setReportiumClient(driver%252C%2520reportiumClient%252C%2520%2522DesktopWinIE%2522)%253B%2520%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%252F%252F%2520Start%2520the%2520reportium%2520test%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520reportiumClient.testStart(%2522Perfecto%2520Desktop%2520Win%2520IE%2522%252C%2520new%2520TestContext(%2522Win%2522%252C%2520%2522IE%2522))%253B%2520%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%252F%252F%2520Start%2520a%2520reportium%2520step%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520reportiumClient.stepStart(%2522Browser%2520navigate%2520to%2520Google%2522)%253B%2520%250A%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520driver.get(%2522https%253A%252F%252Fgoogle.com%2522)%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520reportiumClient.stepEnd()%253B%250A%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520reportiumClient.stepStart(%2522Verify%2520title%2522)%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520String%2520aTitle%2520%253D%2520driver.getT" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QJev!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1aa64fc-314d-4878-a727-5df3b2c6dcf9_2048x2244.png 424w, https://substackcdn.com/image/fetch/$s_!QJev!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1aa64fc-314d-4878-a727-5df3b2c6dcf9_2048x2244.png 848w, https://substackcdn.com/image/fetch/$s_!QJev!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1aa64fc-314d-4878-a727-5df3b2c6dcf9_2048x2244.png 1272w, https://substackcdn.com/image/fetch/$s_!QJev!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1aa64fc-314d-4878-a727-5df3b2c6dcf9_2048x2244.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QJev!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1aa64fc-314d-4878-a727-5df3b2c6dcf9_2048x2244.png" width="1456" height="1595" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/a1aa64fc-314d-4878-a727-5df3b2c6dcf9_2048x2244.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1595,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:647869,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://carbon.now.sh/?bg=rgba(171%2C%20184%2C%20195%2C%201)&amp;t=seti&amp;wt=sharp&amp;l=auto&amp;ds=true&amp;dsyoff=20px&amp;dsblur=68px&amp;wc=true&amp;wa=true&amp;pv=12px&amp;ph=11px&amp;ln=true&amp;fl=1&amp;fm=Hack&amp;fs=14.5px&amp;lh=115%25&amp;si=false&amp;es=2x&amp;wm=false&amp;code=%250Apublic%2520class%2520DesktopWinIE%2520%257B%250A%2520%2520%2520%2520RemoteWebDriver%2520driver%253B%250A%2520%2520%2520%2520ReportiumClient%2520reportiumClient%253B%250A%250A%2520%2520%2520%2520%252F%252F%2520Include%2520%2540Test%2520annotation%2520to%2520indicate%2520to%2520TestNG%252C%2520that%2520this%2520is%2520a%2520test%2520function%250A%2520%2520%2520%2520%2540Test%250A%2520%2520%2520%2520public%2520void%2520seleniumTest()%2520throws%2520Exception%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520String%2520cloudName%2520%253D%2520%2522testingcloud%2522%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520%252F%252FReplace%2520%253Ctoken%253E%2520with%2520your%2520Perfecto%2520security%2520token%250A%2520%2520%2520%2520%2520%2520%2520%2520String%2520securityToken%2520%253D%2520%2522%253Ctoken%253E%2522%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520%250A%2520%2520%2520%2520%2520%2520%2520%2520%252F%252F%2520Refer%2520to%2520the%2520%2522Picking%2520Your%2520Test%2520Device%2522%2520section%2520to%2520understand%2520how%2520to%2520obtain%2520this%2520from%2520Perfecto%27s%2520online%2520platform%250A%2520%2520%2520%2520%2520%2520%2520%2520DesiredCapabilities%2520capabilities%2520%253D%2520new%2520DesiredCapabilities(%2522%2522%252C%2520%2522%2522%252C%2520Platform.ANY)%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520capabilities.setCapability(%2522platformName%2522%252C%2520%2522Windows%2522)%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520capabilities.setCapability(%2522platformVersion%2522%252C%2520%252210%2522)%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520capabilities.setCapability(%2522browserName%2522%252C%2520%2522Internet%2520Explorer%2522)%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520capabilities.setCapability(%2522browserVersion%2522%252C%2520%252211%2522)%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520capabilities.setCapability(%2522location%2522%252C%2520%2522US%2520East%2522)%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520capabilities.setCapability(%2522resolution%2522%252C%2520%25221024x768%2522)%253B%250A%250A%2520%2520%2520%2520%2520%2520%2520%2520capabilities.setCapability(%2522securityToken%2522%252C%2520securityToken)%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520%252F%252F%2520Initialize%2520your%2520RemoteWebDriver%250A%2520%2520%2520%2520%2520%2520%2520%2520try%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520driver%2520%253D%2520new%2520RemoteWebDriver(new%2520URL(%2522https%253A%252F%252F%2522%2520%252B%2520cloudName%2520%252B%2520%2522.perfectomobile.com%252Fnexperience%252Fperfectomobile%252Fwd%252Fhub%2522)%252C%2520capabilities)%253B%250A%250A%2520%2520%2520%2520%2520%2520%2520%2520%257D%2520catch(SessionNotCreatedException%2520e)%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520throw%2520new%2520RuntimeException(%2522Driver%2520not%2520created%2520with%2520capabilities%253A%2520%2522%2520%252B%2520capabilities.toString())%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520%257D%250A%250A%2520%2520%2520%2520%2520%2520%2520%2520try%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%252F%252F%2520Create%2520reportiumClient%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520reportiumClient%2520%253D%2520Utils.setReportiumClient(driver%252C%2520reportiumClient%252C%2520%2522DesktopWinIE%2522)%253B%2520%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%252F%252F%2520Start%2520the%2520reportium%2520test%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520reportiumClient.testStart(%2522Perfecto%2520Desktop%2520Win%2520IE%2522%252C%2520new%2520TestContext(%2522Win%2522%252C%2520%2522IE%2522))%253B%2520%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%252F%252F%2520Start%2520a%2520reportium%2520step%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520reportiumClient.stepStart(%2522Browser%2520navigate%2520to%2520Google%2522)%253B%2520%250A%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520driver.get(%2522https%253A%252F%252Fgoogle.com%2522)%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520reportiumClient.stepEnd()%253B%250A%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520reportiumClient.stepStart(%2522Verify%2520title%2522)%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520String%2520aTitle%2520%253D%2520driver.getT&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QJev!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1aa64fc-314d-4878-a727-5df3b2c6dcf9_2048x2244.png 424w, https://substackcdn.com/image/fetch/$s_!QJev!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1aa64fc-314d-4878-a727-5df3b2c6dcf9_2048x2244.png 848w, https://substackcdn.com/image/fetch/$s_!QJev!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1aa64fc-314d-4878-a727-5df3b2c6dcf9_2048x2244.png 1272w, https://substackcdn.com/image/fetch/$s_!QJev!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa1aa64fc-314d-4878-a727-5df3b2c6dcf9_2048x2244.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><p>After the test has been executed, we will write a function with TestNG @AfterMethod annotation where we will perform the reporting activities.&nbsp;</p><p>Here&#8217;s the code for the reporting function:</p><a class="image-link image2 is-viewable-img" target="_blank" href="https://carbon.now.sh/?bg=rgba(171%2C%20184%2C%20195%2C%201)&amp;t=seti&amp;wt=sharp&amp;l=auto&amp;ds=true&amp;dsyoff=20px&amp;dsblur=68px&amp;wc=true&amp;wa=true&amp;pv=12px&amp;ph=11px&amp;ln=true&amp;fl=1&amp;fm=Hack&amp;fs=14.5px&amp;lh=115%25&amp;si=false&amp;es=2x&amp;wm=false&amp;code=%2540AfterMethod%250Apublic%2520void%2520afterMethod(ITestResult%2520result)%2520%257B%250A%250A%2520%2520%2520%2520TestResult%2520testResult%2520%253D%2520null%253B%250A%250A%2520%2520%2520%2520if(result.getStatus()%2520%253D%253D%2520result.SUCCESS)%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520testResult%2520%253D%2520TestResultFactory.createSuccess()%253B%250A%2520%2520%2520%2520%257D%250A%2520%2520%2520%2520else%2520if%2520(result.getStatus()%2520%253D%253D%2520result.FAILURE)%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520testResult%2520%253D%2520TestResultFactory.createFailure(result.getThrowable())%253B%250A%2520%2520%2520%2520%257D%250A%2520%2520%2520%2520%252F%252F%2520Pass%2520the%2520test%2520result%2520to%2520the%2520reporting%2520client%2520and%2520stop%2520test%250A%2520%2520%2520%2520reportiumClient.testStop(testResult)%253B%250A%250A%2520%2520%2520%2520driver.close()%253B%250A%2520%2520%2520%2520driver.quit()%253B%250A%257D" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!w2W6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa00ebd6c-7cec-45e4-a024-2d98031b1200_1506x740.png 424w, https://substackcdn.com/image/fetch/$s_!w2W6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa00ebd6c-7cec-45e4-a024-2d98031b1200_1506x740.png 848w, https://substackcdn.com/image/fetch/$s_!w2W6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa00ebd6c-7cec-45e4-a024-2d98031b1200_1506x740.png 1272w, https://substackcdn.com/image/fetch/$s_!w2W6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa00ebd6c-7cec-45e4-a024-2d98031b1200_1506x740.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!w2W6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa00ebd6c-7cec-45e4-a024-2d98031b1200_1506x740.png" width="1456" height="715" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/a00ebd6c-7cec-45e4-a024-2d98031b1200_1506x740.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:715,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:145726,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://carbon.now.sh/?bg=rgba(171%2C%20184%2C%20195%2C%201)&amp;t=seti&amp;wt=sharp&amp;l=auto&amp;ds=true&amp;dsyoff=20px&amp;dsblur=68px&amp;wc=true&amp;wa=true&amp;pv=12px&amp;ph=11px&amp;ln=true&amp;fl=1&amp;fm=Hack&amp;fs=14.5px&amp;lh=115%25&amp;si=false&amp;es=2x&amp;wm=false&amp;code=%2540AfterMethod%250Apublic%2520void%2520afterMethod(ITestResult%2520result)%2520%257B%250A%250A%2520%2520%2520%2520TestResult%2520testResult%2520%253D%2520null%253B%250A%250A%2520%2520%2520%2520if(result.getStatus()%2520%253D%253D%2520result.SUCCESS)%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520testResult%2520%253D%2520TestResultFactory.createSuccess()%253B%250A%2520%2520%2520%2520%257D%250A%2520%2520%2520%2520else%2520if%2520(result.getStatus()%2520%253D%253D%2520result.FAILURE)%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520testResult%2520%253D%2520TestResultFactory.createFailure(result.getThrowable())%253B%250A%2520%2520%2520%2520%257D%250A%2520%2520%2520%2520%252F%252F%2520Pass%2520the%2520test%2520result%2520to%2520the%2520reporting%2520client%2520and%2520stop%2520test%250A%2520%2520%2520%2520reportiumClient.testStop(testResult)%253B%250A%250A%2520%2520%2520%2520driver.close()%253B%250A%2520%2520%2520%2520driver.quit()%253B%250A%257D&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!w2W6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa00ebd6c-7cec-45e4-a024-2d98031b1200_1506x740.png 424w, https://substackcdn.com/image/fetch/$s_!w2W6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa00ebd6c-7cec-45e4-a024-2d98031b1200_1506x740.png 848w, https://substackcdn.com/image/fetch/$s_!w2W6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa00ebd6c-7cec-45e4-a024-2d98031b1200_1506x740.png 1272w, https://substackcdn.com/image/fetch/$s_!w2W6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa00ebd6c-7cec-45e4-a024-2d98031b1200_1506x740.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><h3><strong>Executing Your Test Script</strong></h3><p>If TestNG is setup correctly within your IDE, you should see a Run Test icon besides the class declaration like the one below:<br></p><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!82MX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fce2824b9-62ee-4c20-b1e0-8ed4ca980f39_632x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!82MX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fce2824b9-62ee-4c20-b1e0-8ed4ca980f39_632x150.png 424w, https://substackcdn.com/image/fetch/$s_!82MX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fce2824b9-62ee-4c20-b1e0-8ed4ca980f39_632x150.png 848w, https://substackcdn.com/image/fetch/$s_!82MX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fce2824b9-62ee-4c20-b1e0-8ed4ca980f39_632x150.png 1272w, https://substackcdn.com/image/fetch/$s_!82MX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fce2824b9-62ee-4c20-b1e0-8ed4ca980f39_632x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!82MX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fce2824b9-62ee-4c20-b1e0-8ed4ca980f39_632x150.png" width="632" height="150" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/ce2824b9-62ee-4c20-b1e0-8ed4ca980f39_632x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:632,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!82MX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fce2824b9-62ee-4c20-b1e0-8ed4ca980f39_632x150.png 424w, https://substackcdn.com/image/fetch/$s_!82MX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fce2824b9-62ee-4c20-b1e0-8ed4ca980f39_632x150.png 848w, https://substackcdn.com/image/fetch/$s_!82MX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fce2824b9-62ee-4c20-b1e0-8ed4ca980f39_632x150.png 1272w, https://substackcdn.com/image/fetch/$s_!82MX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fce2824b9-62ee-4c20-b1e0-8ed4ca980f39_632x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><p>After you execute your test script, the TestNG Run window will show the result of your test case:</p><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qA0H!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F715eeff2-d431-4024-9c47-40039154dc6d_1488x534.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qA0H!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F715eeff2-d431-4024-9c47-40039154dc6d_1488x534.png 424w, https://substackcdn.com/image/fetch/$s_!qA0H!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F715eeff2-d431-4024-9c47-40039154dc6d_1488x534.png 848w, https://substackcdn.com/image/fetch/$s_!qA0H!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F715eeff2-d431-4024-9c47-40039154dc6d_1488x534.png 1272w, https://substackcdn.com/image/fetch/$s_!qA0H!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F715eeff2-d431-4024-9c47-40039154dc6d_1488x534.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qA0H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F715eeff2-d431-4024-9c47-40039154dc6d_1488x534.png" width="1456" height="523" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/715eeff2-d431-4024-9c47-40039154dc6d_1488x534.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:523,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qA0H!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F715eeff2-d431-4024-9c47-40039154dc6d_1488x534.png 424w, https://substackcdn.com/image/fetch/$s_!qA0H!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F715eeff2-d431-4024-9c47-40039154dc6d_1488x534.png 848w, https://substackcdn.com/image/fetch/$s_!qA0H!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F715eeff2-d431-4024-9c47-40039154dc6d_1488x534.png 1272w, https://substackcdn.com/image/fetch/$s_!qA0H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F715eeff2-d431-4024-9c47-40039154dc6d_1488x534.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><h3><strong>Accessing Your Report on Perfecto</strong></h3><p>You can now go to your Report Library by clicking on the &#8216;Test Analysis&#8217; link in the dropdown available on the top of the screen:</p><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6rOQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1863fe11-c550-45d9-9b00-0824b0d5530e_878x228.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6rOQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1863fe11-c550-45d9-9b00-0824b0d5530e_878x228.png 424w, https://substackcdn.com/image/fetch/$s_!6rOQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1863fe11-c550-45d9-9b00-0824b0d5530e_878x228.png 848w, https://substackcdn.com/image/fetch/$s_!6rOQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1863fe11-c550-45d9-9b00-0824b0d5530e_878x228.png 1272w, https://substackcdn.com/image/fetch/$s_!6rOQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1863fe11-c550-45d9-9b00-0824b0d5530e_878x228.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6rOQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1863fe11-c550-45d9-9b00-0824b0d5530e_878x228.png" width="878" height="228" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/1863fe11-c550-45d9-9b00-0824b0d5530e_878x228.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:228,&quot;width&quot;:878,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6rOQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1863fe11-c550-45d9-9b00-0824b0d5530e_878x228.png 424w, https://substackcdn.com/image/fetch/$s_!6rOQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1863fe11-c550-45d9-9b00-0824b0d5530e_878x228.png 848w, https://substackcdn.com/image/fetch/$s_!6rOQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1863fe11-c550-45d9-9b00-0824b0d5530e_878x228.png 1272w, https://substackcdn.com/image/fetch/$s_!6rOQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F1863fe11-c550-45d9-9b00-0824b0d5530e_878x228.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><p>This is how the test report looks like in the report list:</p><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ngbx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0e681f-ced4-45b9-b90c-4f296e7df5dc_1417x73.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ngbx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0e681f-ced4-45b9-b90c-4f296e7df5dc_1417x73.png 424w, https://substackcdn.com/image/fetch/$s_!Ngbx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0e681f-ced4-45b9-b90c-4f296e7df5dc_1417x73.png 848w, https://substackcdn.com/image/fetch/$s_!Ngbx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0e681f-ced4-45b9-b90c-4f296e7df5dc_1417x73.png 1272w, https://substackcdn.com/image/fetch/$s_!Ngbx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0e681f-ced4-45b9-b90c-4f296e7df5dc_1417x73.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ngbx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0e681f-ced4-45b9-b90c-4f296e7df5dc_1417x73.png" width="1417" height="73" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/da0e681f-ced4-45b9-b90c-4f296e7df5dc_1417x73.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:73,&quot;width&quot;:1417,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Ngbx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0e681f-ced4-45b9-b90c-4f296e7df5dc_1417x73.png 424w, https://substackcdn.com/image/fetch/$s_!Ngbx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0e681f-ced4-45b9-b90c-4f296e7df5dc_1417x73.png 848w, https://substackcdn.com/image/fetch/$s_!Ngbx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0e681f-ced4-45b9-b90c-4f296e7df5dc_1417x73.png 1272w, https://substackcdn.com/image/fetch/$s_!Ngbx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fda0e681f-ced4-45b9-b90c-4f296e7df5dc_1417x73.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><p>Clicking on the report name opens up the detailed report for your test, which shows your <strong>Test Flow</strong>,  <strong>Test Status</strong>, the <strong>device parameters used</strong> and a <strong>screen recording</strong> of the test.</p><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bDSH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F10c7e172-8f50-45ac-b0d5-acad3057160b_1897x888.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bDSH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F10c7e172-8f50-45ac-b0d5-acad3057160b_1897x888.png 424w, https://substackcdn.com/image/fetch/$s_!bDSH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F10c7e172-8f50-45ac-b0d5-acad3057160b_1897x888.png 848w, https://substackcdn.com/image/fetch/$s_!bDSH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F10c7e172-8f50-45ac-b0d5-acad3057160b_1897x888.png 1272w, https://substackcdn.com/image/fetch/$s_!bDSH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F10c7e172-8f50-45ac-b0d5-acad3057160b_1897x888.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bDSH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F10c7e172-8f50-45ac-b0d5-acad3057160b_1897x888.png" width="1456" height="682" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/10c7e172-8f50-45ac-b0d5-acad3057160b_1897x888.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:682,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bDSH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F10c7e172-8f50-45ac-b0d5-acad3057160b_1897x888.png 424w, https://substackcdn.com/image/fetch/$s_!bDSH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F10c7e172-8f50-45ac-b0d5-acad3057160b_1897x888.png 848w, https://substackcdn.com/image/fetch/$s_!bDSH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F10c7e172-8f50-45ac-b0d5-acad3057160b_1897x888.png 1272w, https://substackcdn.com/image/fetch/$s_!bDSH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F10c7e172-8f50-45ac-b0d5-acad3057160b_1897x888.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><p>This <a href="https://github.com/ameyanekar/PerfectoTestng">Github repository</a> contains the source code to run this test case on 11 different devices.</p><h3><strong>Leveraging TestNG To Scale Your Automation</strong></h3><p>You can create classes for specific instances of devices on which you would like to test your script, similar to what you can see in the repository mentioned above. Once that is done, you can include the following TestNG.xml in your project root to run all your test cases at once.</p><a class="image-link image2 is-viewable-img" target="_blank" href="https://carbon.now.sh/?bg=rgba(171%2C%20184%2C%20195%2C%201)&amp;t=seti&amp;wt=sharp&amp;l=auto&amp;ds=true&amp;dsyoff=20px&amp;dsblur=68px&amp;wc=true&amp;wa=true&amp;pv=12px&amp;ph=11px&amp;ln=true&amp;fl=1&amp;fm=Hack&amp;fs=14.5px&amp;lh=115%25&amp;si=false&amp;es=2x&amp;wm=false&amp;code=%253C%253Fxml%2520version%253D%25221.0%2522%2520encoding%253D%2522UTF-8%2522%253F%253E%250A%253C!DOCTYPE%2520suite%2520SYSTEM%2520%2522http%253A%252F%252FTestNG.org%252FTestNG-1.0.dtd%2522%253E%250A%253Csuite%2520name%253D%2522Suite%2522%2520parallel%253D%2522tests%2522%253E%250A%2520%2520%2520%2520%253Ctest%2520name%253D%2522PerfectoSelenium%2522%2520enabled%253D%2522true%2522%253E%250A%2520%2520%2520%2520%2520%2520%2520%2520%253Cclasses%253E%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%253Cclass%2520name%253D%2522com.perfecto.TestNG.DesktopWinIE%2522%2520%252F%253E%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%253Cclass%2520name%253D%2522com.perfecto.TestNG.DesktopWinEdge%2522%2520%252F%253E%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%253Cclass%2520name%253D%2522com.perfecto.TestNG.DesktopWinChrome%2522%2520%252F%253E%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%253Cclass%2520name%253D%2522com.perfecto.TestNG.DesktopWinFirefox%2522%2520%252F%253E%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%253Cclass%2520name%253D%2522com.perfecto.TestNG.DesktopMacChrome%2522%2520%252F%253E%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%253Cclass%2520name%253D%2522com.perfecto.TestNG.DesktopMacFireFox%2522%2520%252F%253E%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%253Cclass%2520name%253D%2522com.perfecto.TestNG.DesktopMacSafari%2522%2520%252F%253E%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%253Cclass%2520name%253D%2522com.perfecto.TestNG.AndroidPixel4%2522%2520%252F%253E%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%253Cclass%2520name%253D%2522com.perfecto.TestNG.AndroidGalaxyNote10%2522%2520%252F%253E%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%253Cclass%2520name%253D%2522com.perfecto.TestNG.IosIphone7%2522%2520%252F%253E%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%253Cclass%2520name%253D%2522com.perfecto.TestNG.IosIphoneX%2522%2520%252F%253E%250A%2520%2520%2520%2520%2520%2520%2520%2520%253C%252Fclasses%253E%250A%2520%2520%2520%2520%253C%252Ftest%253E%2520%250A%253C%252Fsuite%253E" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PUMZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F20dcc722-6e8a-41d6-86fb-93221a0d397f_1366x804.png 424w, https://substackcdn.com/image/fetch/$s_!PUMZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F20dcc722-6e8a-41d6-86fb-93221a0d397f_1366x804.png 848w, https://substackcdn.com/image/fetch/$s_!PUMZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F20dcc722-6e8a-41d6-86fb-93221a0d397f_1366x804.png 1272w, https://substackcdn.com/image/fetch/$s_!PUMZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F20dcc722-6e8a-41d6-86fb-93221a0d397f_1366x804.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PUMZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F20dcc722-6e8a-41d6-86fb-93221a0d397f_1366x804.png" width="1366" height="804" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/20dcc722-6e8a-41d6-86fb-93221a0d397f_1366x804.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:804,&quot;width&quot;:1366,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:234307,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:&quot;https://carbon.now.sh/?bg=rgba(171%2C%20184%2C%20195%2C%201)&amp;t=seti&amp;wt=sharp&amp;l=auto&amp;ds=true&amp;dsyoff=20px&amp;dsblur=68px&amp;wc=true&amp;wa=true&amp;pv=12px&amp;ph=11px&amp;ln=true&amp;fl=1&amp;fm=Hack&amp;fs=14.5px&amp;lh=115%25&amp;si=false&amp;es=2x&amp;wm=false&amp;code=%253C%253Fxml%2520version%253D%25221.0%2522%2520encoding%253D%2522UTF-8%2522%253F%253E%250A%253C!DOCTYPE%2520suite%2520SYSTEM%2520%2522http%253A%252F%252FTestNG.org%252FTestNG-1.0.dtd%2522%253E%250A%253Csuite%2520name%253D%2522Suite%2522%2520parallel%253D%2522tests%2522%253E%250A%2520%2520%2520%2520%253Ctest%2520name%253D%2522PerfectoSelenium%2522%2520enabled%253D%2522true%2522%253E%250A%2520%2520%2520%2520%2520%2520%2520%2520%253Cclasses%253E%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%253Cclass%2520name%253D%2522com.perfecto.TestNG.DesktopWinIE%2522%2520%252F%253E%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%253Cclass%2520name%253D%2522com.perfecto.TestNG.DesktopWinEdge%2522%2520%252F%253E%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%253Cclass%2520name%253D%2522com.perfecto.TestNG.DesktopWinChrome%2522%2520%252F%253E%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%253Cclass%2520name%253D%2522com.perfecto.TestNG.DesktopWinFirefox%2522%2520%252F%253E%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%253Cclass%2520name%253D%2522com.perfecto.TestNG.DesktopMacChrome%2522%2520%252F%253E%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%253Cclass%2520name%253D%2522com.perfecto.TestNG.DesktopMacFireFox%2522%2520%252F%253E%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%253Cclass%2520name%253D%2522com.perfecto.TestNG.DesktopMacSafari%2522%2520%252F%253E%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%253Cclass%2520name%253D%2522com.perfecto.TestNG.AndroidPixel4%2522%2520%252F%253E%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%253Cclass%2520name%253D%2522com.perfecto.TestNG.AndroidGalaxyNote10%2522%2520%252F%253E%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%253Cclass%2520name%253D%2522com.perfecto.TestNG.IosIphone7%2522%2520%252F%253E%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%253Cclass%2520name%253D%2522com.perfecto.TestNG.IosIphoneX%2522%2520%252F%253E%250A%2520%2520%2520%2520%2520%2520%2520%2520%253C%252Fclasses%253E%250A%2520%2520%2520%2520%253C%252Ftest%253E%2520%250A%253C%252Fsuite%253E&quot;,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PUMZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F20dcc722-6e8a-41d6-86fb-93221a0d397f_1366x804.png 424w, https://substackcdn.com/image/fetch/$s_!PUMZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F20dcc722-6e8a-41d6-86fb-93221a0d397f_1366x804.png 848w, https://substackcdn.com/image/fetch/$s_!PUMZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F20dcc722-6e8a-41d6-86fb-93221a0d397f_1366x804.png 1272w, https://substackcdn.com/image/fetch/$s_!PUMZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F20dcc722-6e8a-41d6-86fb-93221a0d397f_1366x804.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><p>To run the test case on all devices, simply right-click the TestNG.xml file and select Run. Once the tests are completed, their results will be available on Perfecto Test Analysis page.</p><p>Below is a screenshot showing the results for running the test case on 11 different devices:</p><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AGBY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6dd98656-8c44-45fb-88f8-cadcdb08329b_1331x361.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AGBY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6dd98656-8c44-45fb-88f8-cadcdb08329b_1331x361.png 424w, https://substackcdn.com/image/fetch/$s_!AGBY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6dd98656-8c44-45fb-88f8-cadcdb08329b_1331x361.png 848w, https://substackcdn.com/image/fetch/$s_!AGBY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6dd98656-8c44-45fb-88f8-cadcdb08329b_1331x361.png 1272w, https://substackcdn.com/image/fetch/$s_!AGBY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6dd98656-8c44-45fb-88f8-cadcdb08329b_1331x361.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AGBY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6dd98656-8c44-45fb-88f8-cadcdb08329b_1331x361.png" width="1331" height="361" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/6dd98656-8c44-45fb-88f8-cadcdb08329b_1331x361.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:361,&quot;width&quot;:1331,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!AGBY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6dd98656-8c44-45fb-88f8-cadcdb08329b_1331x361.png 424w, https://substackcdn.com/image/fetch/$s_!AGBY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6dd98656-8c44-45fb-88f8-cadcdb08329b_1331x361.png 848w, https://substackcdn.com/image/fetch/$s_!AGBY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6dd98656-8c44-45fb-88f8-cadcdb08329b_1331x361.png 1272w, https://substackcdn.com/image/fetch/$s_!AGBY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6dd98656-8c44-45fb-88f8-cadcdb08329b_1331x361.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><p>As you can see from the timestamps in the screenshot, the execution of the test case across 11 different devices takes about six minutes, which is pretty decent.</p><p><strong>Move Your Testing to The Cloud</strong></p><p>All aspects of technology are moving to the cloud, then why should testing still be done the old school way. Platforms like Perfecto provide the perfect ingredients to succeed at this move to the cloud.&nbsp;</p><p>If you have been testing the old school way, give an automated testing tool a try using the scripts in this <a href="https://github.com/ameyanekar/PerfectoTestng">repository</a> as a template. Once you realize the speed, convenience and efficiency this brings to your tests, there is no turning back.</p><p><em><strong>Disclaimer:</strong>  I received a request to review Perfecto&#8217;s free test automation tool. <br>The fact I got it this request has not influenced the review in anyway.</em></p>]]></content:encoded></item><item><title><![CDATA[Debugging Tips for Node.js ]]></title><description><![CDATA[&#8216;This is supposed to work&#8217;.]]></description><link>https://devops.substack.com/p/debugging-tips-for-nodejs</link><guid isPermaLink="false">https://devops.substack.com/p/debugging-tips-for-nodejs</guid><dc:creator><![CDATA[DevOps Editorial]]></dc:creator><pubDate>Mon, 17 Aug 2020 09:27:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!TuNl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fda78d7d3-e8ab-4bfe-b0bf-3356efb704f1_4896x3264.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TuNl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fda78d7d3-e8ab-4bfe-b0bf-3356efb704f1_4896x3264.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TuNl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fda78d7d3-e8ab-4bfe-b0bf-3356efb704f1_4896x3264.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TuNl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fda78d7d3-e8ab-4bfe-b0bf-3356efb704f1_4896x3264.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TuNl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fda78d7d3-e8ab-4bfe-b0bf-3356efb704f1_4896x3264.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TuNl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fda78d7d3-e8ab-4bfe-b0bf-3356efb704f1_4896x3264.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TuNl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fda78d7d3-e8ab-4bfe-b0bf-3356efb704f1_4896x3264.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/da78d7d3-e8ab-4bfe-b0bf-3356efb704f1_4896x3264.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1917601,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TuNl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fda78d7d3-e8ab-4bfe-b0bf-3356efb704f1_4896x3264.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TuNl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fda78d7d3-e8ab-4bfe-b0bf-3356efb704f1_4896x3264.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TuNl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fda78d7d3-e8ab-4bfe-b0bf-3356efb704f1_4896x3264.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TuNl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fda78d7d3-e8ab-4bfe-b0bf-3356efb704f1_4896x3264.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><p>&#8216;This is supposed to work&#8217;. Every developer has felt this way countless times when building applications. Things don't always work as expected, and this is usually due to one error or the other. It could be a <a href="https://en.wikipedia.org/wiki/Syntax_error">syntax error</a> (about which Node.js would yell at you during compilation) or could be a <a href="https://en.wikipedia.org/wiki/Logic_error">logical error</a> (the expected result is not achieved, Node.js knows nothing about this, so it won't yell).</p><p>While some errors are very descriptive (and clearly inform you what went wrong), some are not. It's our responsibility as developers to dig deep to the cause of the problem (logging things to the console, temporarily deleting lines, and so on). Our applications must work perfectly.</p><p>In this article, we'll look at debugging tips (more than console.log) for Node.js applications to help us discover why things aren't working the way they should.</p><h2>What Is Debugging?</h2><p>Debugging is the act of removing bugs from an application or software. These bugs can be generated at different points in time in the application's execution.</p><p>Debugging an application in development mode comes with fewer worries but a bug in an application in production comes with the fear of ruining the user's experience. However, there are effective approaches to <a href="https://www.rookout.com/blog/debugging-in-production-how-to-stop-fearing-the-inevitable">debugging in production</a>.</p><h2>Tips for Debugging Node.js Applications</h2><h2>1. Leveraging the Debugger Tool</h2><p>Instead of applying console.logs in various parts of your application (some which may never be reached) to discover where a bug is coming from, you can use <a href="https://nodejs.org/api/debugger.html">debugger</a> in Node.js to create breakpoints.&nbsp;</p><p>When Node.js comes across such breakpoints, it pauses, retaining the state of the application at that time. Let's see that in action.</p><p>Say we have a file called test.js with the following code:</p><p><code>console.log('hello')</code></p><p><code>function hi() {</code></p><p><code>&nbsp; &nbsp; debugger;</code></p><p><code>&nbsp; &nbsp; consol.log('hi')</code></p><p><code>&nbsp; &nbsp; debugger;</code></p><p><code>}</code></p><p><code>hi();</code></p><p><code>console.log('hi')</code></p><p>To run this file with Node.js, run the following command:</p><p><code>node inspect test.js</code></p><p>The inspect command would work with the debugger statements. Without inspect, the code would run as it normally should.</p><p>The expected results are:</p><p>1. Beginning statement</p><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OBRi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F623f9982-a459-47af-847b-14136714e54e_324x83.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OBRi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F623f9982-a459-47af-847b-14136714e54e_324x83.png 424w, https://substackcdn.com/image/fetch/$s_!OBRi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F623f9982-a459-47af-847b-14136714e54e_324x83.png 848w, https://substackcdn.com/image/fetch/$s_!OBRi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F623f9982-a459-47af-847b-14136714e54e_324x83.png 1272w, https://substackcdn.com/image/fetch/$s_!OBRi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F623f9982-a459-47af-847b-14136714e54e_324x83.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OBRi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F623f9982-a459-47af-847b-14136714e54e_324x83.png" width="324" height="83" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/623f9982-a459-47af-847b-14136714e54e_324x83.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:83,&quot;width&quot;:324,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OBRi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F623f9982-a459-47af-847b-14136714e54e_324x83.png 424w, https://substackcdn.com/image/fetch/$s_!OBRi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F623f9982-a459-47af-847b-14136714e54e_324x83.png 848w, https://substackcdn.com/image/fetch/$s_!OBRi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F623f9982-a459-47af-847b-14136714e54e_324x83.png 1272w, https://substackcdn.com/image/fetch/$s_!OBRi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F623f9982-a459-47af-847b-14136714e54e_324x83.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><p>This is the beginning of the application. Upon entering `cont` (which means continue execution) Node.js prints out 'hello', then stops at the first breakpoint. See that in the next process.</p><p>2. The first debugger</p><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mhre!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5db11352-645c-481f-be4f-fda501bc4332_345x99.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mhre!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5db11352-645c-481f-be4f-fda501bc4332_345x99.png 424w, https://substackcdn.com/image/fetch/$s_!mhre!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5db11352-645c-481f-be4f-fda501bc4332_345x99.png 848w, https://substackcdn.com/image/fetch/$s_!mhre!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5db11352-645c-481f-be4f-fda501bc4332_345x99.png 1272w, https://substackcdn.com/image/fetch/$s_!mhre!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5db11352-645c-481f-be4f-fda501bc4332_345x99.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mhre!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5db11352-645c-481f-be4f-fda501bc4332_345x99.png" width="345" height="99" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/5db11352-645c-481f-be4f-fda501bc4332_345x99.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:99,&quot;width&quot;:345,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mhre!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5db11352-645c-481f-be4f-fda501bc4332_345x99.png 424w, https://substackcdn.com/image/fetch/$s_!mhre!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5db11352-645c-481f-be4f-fda501bc4332_345x99.png 848w, https://substackcdn.com/image/fetch/$s_!mhre!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5db11352-645c-481f-be4f-fda501bc4332_345x99.png 1272w, https://substackcdn.com/image/fetch/$s_!mhre!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5db11352-645c-481f-be4f-fda501bc4332_345x99.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><p>Upon entering cont again, Node.js attempts to continue execution.</p><p>3. Getting to the second debugger</p><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5M2T!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F277771f7-9f01-4cd0-b01d-146011ce9f06_354x48.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5M2T!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F277771f7-9f01-4cd0-b01d-146011ce9f06_354x48.png 424w, https://substackcdn.com/image/fetch/$s_!5M2T!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F277771f7-9f01-4cd0-b01d-146011ce9f06_354x48.png 848w, https://substackcdn.com/image/fetch/$s_!5M2T!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F277771f7-9f01-4cd0-b01d-146011ce9f06_354x48.png 1272w, https://substackcdn.com/image/fetch/$s_!5M2T!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F277771f7-9f01-4cd0-b01d-146011ce9f06_354x48.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5M2T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F277771f7-9f01-4cd0-b01d-146011ce9f06_354x48.png" width="354" height="48" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/277771f7-9f01-4cd0-b01d-146011ce9f06_354x48.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:48,&quot;width&quot;:354,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5M2T!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F277771f7-9f01-4cd0-b01d-146011ce9f06_354x48.png 424w, https://substackcdn.com/image/fetch/$s_!5M2T!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F277771f7-9f01-4cd0-b01d-146011ce9f06_354x48.png 848w, https://substackcdn.com/image/fetch/$s_!5M2T!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F277771f7-9f01-4cd0-b01d-146011ce9f06_354x48.png 1272w, https://substackcdn.com/image/fetch/$s_!5M2T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F277771f7-9f01-4cd0-b01d-146011ce9f06_354x48.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><p>And then, the reference error.</p><p>This is a very small example and it's a syntax error, but it shows how the tool works. This tool can also be used for logical errors in which you'll place the debugger at positions where you want to know the current state of the application.</p><h2>2. Debugging in Chrome</h2><p>Debugging is easier on web browsers compared to the terminal. The web browser has more features with a usable GUI (the Dev tools) to properly track requests, create breakpoints, and do many debugging strategies.</p><p>Node.js provides us with that feature. To achieve this, the --inspect flag is used. Do not mistake this for inspect above which creates an interactive shell on the terminal. You can learn more about the flag in<a href="https://nodejs.org/en/docs/guides/debugging-getting-started/"> Node.js documentation</a>.</p><h2>3. Apply Tests to Your Applications</h2><p>Adding tests is stressful. Most of it involves almost recreating the whole application - determining user interactions and the results gotten, validations, and a lot more. But, the benefit outweighs the stress.&nbsp;</p><p>With tests, developers can specify ways in which the application should work. This specification would be very helpful during debugging as it would help the developers easily.</p><p>Say, for example, a developer adds a new code supposedly to add a new feature and that feature complicates the application in some way. With tests, it would be easy to detect the source of the new bug experienced.</p><p>There are various <a href="https://en.wikipedia.org/wiki/List_of_unit_testing_frameworks">unit testing frameworks</a> to help get started with applying tests to your application. Also, <a href="https://medium.com/the-andela-way/introduction-to-end-to-end-testing-for-nodejs-applications-using-test-cafe-e1bc8d70ae04">end-to-end tests</a> are a great testing strategy on Node.js applications.</p><h2>4. Use Logs</h2><p>Logs here are more than console.logs. You can use other console methods to clearly state the kind of message or display the log in a different format. An example is putting a console.error in a catch block to clearly signify that some operation couldn't be carried out.</p><p>Logs can be used for various reasons - analysis of how an application runs, tracking states in the application and also debugging. For an application in production, it becomes harder to watch or manage your logs as you'll always need to sign in into the server where your application is hosted and evaluate the messages logged.</p><p>Thankfully, there are logging management tools like <a href="https://www.rookout.com/solutions/logging">Rookout</a> that help manage your logs and send them to a specified location.</p><p>Here's an image that describes logs and target locations:</p><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!seiX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9a8f457-5bfe-4e60-bd48-b2e046269e3f_967x465.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!seiX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9a8f457-5bfe-4e60-bd48-b2e046269e3f_967x465.png 424w, https://substackcdn.com/image/fetch/$s_!seiX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9a8f457-5bfe-4e60-bd48-b2e046269e3f_967x465.png 848w, https://substackcdn.com/image/fetch/$s_!seiX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9a8f457-5bfe-4e60-bd48-b2e046269e3f_967x465.png 1272w, https://substackcdn.com/image/fetch/$s_!seiX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9a8f457-5bfe-4e60-bd48-b2e046269e3f_967x465.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!seiX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9a8f457-5bfe-4e60-bd48-b2e046269e3f_967x465.png" width="967" height="465" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/d9a8f457-5bfe-4e60-bd48-b2e046269e3f_967x465.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:465,&quot;width&quot;:967,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!seiX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9a8f457-5bfe-4e60-bd48-b2e046269e3f_967x465.png 424w, https://substackcdn.com/image/fetch/$s_!seiX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9a8f457-5bfe-4e60-bd48-b2e046269e3f_967x465.png 848w, https://substackcdn.com/image/fetch/$s_!seiX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9a8f457-5bfe-4e60-bd48-b2e046269e3f_967x465.png 1272w, https://substackcdn.com/image/fetch/$s_!seiX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9a8f457-5bfe-4e60-bd48-b2e046269e3f_967x465.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><h2>5. Use IDEs to Make Your Life Easier</h2><p>There are a lot of editors with different features and they are continuously getting better. Some of them (like <a href="https://code.visualstudio.com/docs/nodejs/nodejs-debugging)">Visual Studio Code</a>) provide debugging features for Node.js applications. With some configurations, extensions, and commands, you can easily interact with Node.js application during runtime and discover potential or critical errors.</p><p>Rookout also has a web-based IDE with many features for debugging, including non-breaking breakpoints. The image below shows a brief usage of the IDE:</p><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ANAc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F74d35015-411b-4342-99cf-650c3d22e88a_3360x1672.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ANAc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F74d35015-411b-4342-99cf-650c3d22e88a_3360x1672.png 424w, https://substackcdn.com/image/fetch/$s_!ANAc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F74d35015-411b-4342-99cf-650c3d22e88a_3360x1672.png 848w, https://substackcdn.com/image/fetch/$s_!ANAc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F74d35015-411b-4342-99cf-650c3d22e88a_3360x1672.png 1272w, https://substackcdn.com/image/fetch/$s_!ANAc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F74d35015-411b-4342-99cf-650c3d22e88a_3360x1672.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ANAc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F74d35015-411b-4342-99cf-650c3d22e88a_3360x1672.png" width="1456" height="725" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/74d35015-411b-4342-99cf-650c3d22e88a_3360x1672.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:725,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ANAc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F74d35015-411b-4342-99cf-650c3d22e88a_3360x1672.png 424w, https://substackcdn.com/image/fetch/$s_!ANAc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F74d35015-411b-4342-99cf-650c3d22e88a_3360x1672.png 848w, https://substackcdn.com/image/fetch/$s_!ANAc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F74d35015-411b-4342-99cf-650c3d22e88a_3360x1672.png 1272w, https://substackcdn.com/image/fetch/$s_!ANAc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F74d35015-411b-4342-99cf-650c3d22e88a_3360x1672.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><p>From the image, you&#8217;ll notice how quick it is to add breakpoints in your application and log different messages without having to alter your code (adding console.log s) at all. This makes debugging much easier.&nbsp;</p><h2>Conclusion</h2><p>Bugs are unexpected results in an application and debugging can be tedious, but as developers we want to deliver the best tools for our users. Putting the above tips into use is a great start to ensuring error-free applications.</p><p></p><p><em>Disclaimer:&nbsp; I received a request to try Rookout&#8217;s debugging tool. The fact I got it this request  has not influenced the review in anyway.</em></p>]]></content:encoded></item><item><title><![CDATA[Heroku Testing Tools You Should Know]]></title><description><![CDATA[Depending on the complexity of a web application, writing tests is as important as actual development.]]></description><link>https://devops.substack.com/p/heroku-testing-tools-you-should-know</link><guid isPermaLink="false">https://devops.substack.com/p/heroku-testing-tools-you-should-know</guid><dc:creator><![CDATA[DevOps Editorial]]></dc:creator><pubDate>Fri, 24 Jul 2020 05:46:22 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!3iLZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F3916062a-fe2d-4aa1-baa7-b68805aaaed2_5616x3744.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3iLZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F3916062a-fe2d-4aa1-baa7-b68805aaaed2_5616x3744.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3iLZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F3916062a-fe2d-4aa1-baa7-b68805aaaed2_5616x3744.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3iLZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F3916062a-fe2d-4aa1-baa7-b68805aaaed2_5616x3744.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3iLZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F3916062a-fe2d-4aa1-baa7-b68805aaaed2_5616x3744.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3iLZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F3916062a-fe2d-4aa1-baa7-b68805aaaed2_5616x3744.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3iLZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F3916062a-fe2d-4aa1-baa7-b68805aaaed2_5616x3744.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/3916062a-fe2d-4aa1-baa7-b68805aaaed2_5616x3744.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3193008,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3iLZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F3916062a-fe2d-4aa1-baa7-b68805aaaed2_5616x3744.jpeg 424w, https://substackcdn.com/image/fetch/$s_!3iLZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F3916062a-fe2d-4aa1-baa7-b68805aaaed2_5616x3744.jpeg 848w, https://substackcdn.com/image/fetch/$s_!3iLZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F3916062a-fe2d-4aa1-baa7-b68805aaaed2_5616x3744.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!3iLZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F3916062a-fe2d-4aa1-baa7-b68805aaaed2_5616x3744.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><p>Depending on the complexity of a web application, writing tests is as important as actual development. Without tests covering much of the written code, then the optimistic view for a development process is that 50% of the time will be used for development and 50% for debugging.&nbsp;</p><p>The purpose of the tests is to reduce the time for detecting and solving initial problems or those that will occur in the future.</p><p>Fortunately, today we have a multitude of tools that we can use to make this process much easier to undertake but also to manage. With the help of <a href="https://en.wikipedia.org/wiki/Platform_as_a_service">PaaS-type</a> platforms such as <a href="https://heroku.com">Heroku</a>, installing and configuring these tools is a breeze.</p><p>To make this process easier, below I have written a list of these testing tools that you can use as add-ons for your application, along with a few pros and cons for each.&nbsp;</p><h2></h2><h2>2. Loader.io</h2><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wAeR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2d20dac9-72ad-4e72-9337-3a499499572b_1484x856.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wAeR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2d20dac9-72ad-4e72-9337-3a499499572b_1484x856.png 424w, https://substackcdn.com/image/fetch/$s_!wAeR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2d20dac9-72ad-4e72-9337-3a499499572b_1484x856.png 848w, https://substackcdn.com/image/fetch/$s_!wAeR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2d20dac9-72ad-4e72-9337-3a499499572b_1484x856.png 1272w, https://substackcdn.com/image/fetch/$s_!wAeR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2d20dac9-72ad-4e72-9337-3a499499572b_1484x856.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wAeR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2d20dac9-72ad-4e72-9337-3a499499572b_1484x856.png" width="1456" height="840" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/2d20dac9-72ad-4e72-9337-3a499499572b_1484x856.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:840,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wAeR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2d20dac9-72ad-4e72-9337-3a499499572b_1484x856.png 424w, https://substackcdn.com/image/fetch/$s_!wAeR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2d20dac9-72ad-4e72-9337-3a499499572b_1484x856.png 848w, https://substackcdn.com/image/fetch/$s_!wAeR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2d20dac9-72ad-4e72-9337-3a499499572b_1484x856.png 1272w, https://substackcdn.com/image/fetch/$s_!wAeR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2d20dac9-72ad-4e72-9337-3a499499572b_1484x856.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><p>One thing you often want when it comes to testing is to see how much load your server can carry.</p><p><a href="https://loader.io/">Loader.io</a> is best suited for this step.</p><p>For example, you can get a baseline of your current request per minutes that your app receives, so that you know how much traffic your infrastructure can handle. After, you can use this tool to simulate double or triple the number of requests.&nbsp;</p><p>In this way you will know when your app will start to fail, by sending back errors or timeouts.</p><p>Pros</p><ul><li><p>It comes with a free plan or paid plan</p></li><li><p>Great <a href="https://www.geeksforgeeks.org/difference-between-load-testing-and-stress-testing/">load testing and stress testing</a> tool that is easy to use and which allows you to simulate up to 10,000 concurrent users</p></li><li><p>Tests can be scheduled</p></li><li><p>You can keep a history of past tests, which can be useful to know if the application performance has decreased due to code changes or other factors.</p></li></ul><p>Cons</p><ul><li><p>The interface could definitely be improved.</p></li></ul><h2>3. Parrot QA</h2><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!n_l3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5140108a-f419-42f3-a4b8-c2080f225e9f_1840x887.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!n_l3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5140108a-f419-42f3-a4b8-c2080f225e9f_1840x887.png 424w, https://substackcdn.com/image/fetch/$s_!n_l3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5140108a-f419-42f3-a4b8-c2080f225e9f_1840x887.png 848w, https://substackcdn.com/image/fetch/$s_!n_l3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5140108a-f419-42f3-a4b8-c2080f225e9f_1840x887.png 1272w, https://substackcdn.com/image/fetch/$s_!n_l3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5140108a-f419-42f3-a4b8-c2080f225e9f_1840x887.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!n_l3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5140108a-f419-42f3-a4b8-c2080f225e9f_1840x887.png" width="1456" height="702" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/5140108a-f419-42f3-a4b8-c2080f225e9f_1840x887.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:702,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!n_l3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5140108a-f419-42f3-a4b8-c2080f225e9f_1840x887.png 424w, https://substackcdn.com/image/fetch/$s_!n_l3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5140108a-f419-42f3-a4b8-c2080f225e9f_1840x887.png 848w, https://substackcdn.com/image/fetch/$s_!n_l3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5140108a-f419-42f3-a4b8-c2080f225e9f_1840x887.png 1272w, https://substackcdn.com/image/fetch/$s_!n_l3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F5140108a-f419-42f3-a4b8-c2080f225e9f_1840x887.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><p>In addition to stress and regression tests, another important aspect is quality assurance.</p><p><a href="https://www.parrotqa.com/">Parrot QA</a> is a functional cross-browser tester that you can use to test your web application without writing a line of code.</p><p>The benefit of this tool is that you can navigate to the desired web page and then create tests by clicking on the elements visible in the browser.&nbsp;</p><p>Parrot QA is can also be used to record a test in order to set the test dependencies and expectations and also to address regressions and bugs when we you find them.</p><p>Pros</p><ul><li><p>You don&#8217;t need prior knowledge in testing at all</p></li><li><p>You can run your tests in multiple browsers</p></li><li><p>Tests can be scheduled</p></li><li><p>It can record your actions and execute tests based on your actions</p></li><li><p>You can create teams and include multiple members</p></li><li><p>CI/CD support</p></li></ul><p>Cons</p><ul><li><p>only paid plan</p></li></ul><h2>3. Loadmill</h2><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!38vJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3f022a9-625d-47b6-959a-558feac1de9a_1472x782.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!38vJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3f022a9-625d-47b6-959a-558feac1de9a_1472x782.png 424w, https://substackcdn.com/image/fetch/$s_!38vJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3f022a9-625d-47b6-959a-558feac1de9a_1472x782.png 848w, https://substackcdn.com/image/fetch/$s_!38vJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3f022a9-625d-47b6-959a-558feac1de9a_1472x782.png 1272w, https://substackcdn.com/image/fetch/$s_!38vJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3f022a9-625d-47b6-959a-558feac1de9a_1472x782.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!38vJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3f022a9-625d-47b6-959a-558feac1de9a_1472x782.png" width="1456" height="774" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/a3f022a9-625d-47b6-959a-558feac1de9a_1472x782.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:774,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!38vJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3f022a9-625d-47b6-959a-558feac1de9a_1472x782.png 424w, https://substackcdn.com/image/fetch/$s_!38vJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3f022a9-625d-47b6-959a-558feac1de9a_1472x782.png 848w, https://substackcdn.com/image/fetch/$s_!38vJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3f022a9-625d-47b6-959a-558feac1de9a_1472x782.png 1272w, https://substackcdn.com/image/fetch/$s_!38vJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa3f022a9-625d-47b6-959a-558feac1de9a_1472x782.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><p>The first tool on this list is <a href="https://elements.heroku.com/addons/loadmill">Loadmill</a>. At the time of this article, this plugin is still in Beta mode, but it's definitely worth a try. &nbsp;Loadmill is great if you want to automate your regression tests and integrate it with the CI pipeline from Heroku, so that your tests can be run at each deployment.</p><p>At the same time, a great feature it has is that it allows you to run the load tests by simulating real user behavior, so you can measure response time and throughput in different regions to find the best dyno configuration for your app and to cut costs.</p><p>Some other pros of this tool are:</p><ul><li><p>It comes with a free plan or paid plans</p></li><li><p>It&#8217;s easy to use with no configuration</p></li><li><p>It can import recorded HTTP traffic such as HAR files</p></li><li><p>Github integration</p></li><li><p>Tests can be scheduled at a predetermined time interval, which can inform you when problems occur in production environment</p></li><li><p>It can propagate the answer from one request to the others, so you can test both authenticated and protected routes</p></li><li><p>It comes with an npm package&nbsp;</p></li></ul><h2>Conclusion</h2><p>Testing is an important step and when it&#8217;s done well, it only brings benefits. However, it is important to first identify the points where your application might have problems and then choose a testing tool suitable for your case.&nbsp;</p><p>If you think that your application will have a low number of users most of the time, but on certain days it will have a very large number, then it is best to do <a href="https://www.guru99.com/performance-vs-load-vs-stress-testing.html">load testing and stress testing</a>. If the number of users is constant, but you deliver many versions to production at short intervals, then the most appropriate would be regression testing, so that you can be sure that between changes you have not broken anything.</p><p>The idea is to choose the tool that fits your needs, and if you think that all of them are useful then, depending on the application, you can even combine them.</p>]]></content:encoded></item><item><title><![CDATA[Applying UI Testing in Web Applications]]></title><description><![CDATA[Testing is a very important technique carried out in software development.]]></description><link>https://devops.substack.com/p/applying-ui-testing-in-web-applications</link><guid isPermaLink="false">https://devops.substack.com/p/applying-ui-testing-in-web-applications</guid><dc:creator><![CDATA[DevOps Editorial]]></dc:creator><pubDate>Wed, 15 Jul 2020 06:35:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!u5ML!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9fb6907-c080-41c4-a5fb-67645ff054a2_4076x2712.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!u5ML!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9fb6907-c080-41c4-a5fb-67645ff054a2_4076x2712.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!u5ML!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9fb6907-c080-41c4-a5fb-67645ff054a2_4076x2712.jpeg 424w, https://substackcdn.com/image/fetch/$s_!u5ML!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9fb6907-c080-41c4-a5fb-67645ff054a2_4076x2712.jpeg 848w, https://substackcdn.com/image/fetch/$s_!u5ML!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9fb6907-c080-41c4-a5fb-67645ff054a2_4076x2712.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!u5ML!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9fb6907-c080-41c4-a5fb-67645ff054a2_4076x2712.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!u5ML!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9fb6907-c080-41c4-a5fb-67645ff054a2_4076x2712.jpeg" width="1456" height="969" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/d9fb6907-c080-41c4-a5fb-67645ff054a2_4076x2712.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:969,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:588975,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!u5ML!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9fb6907-c080-41c4-a5fb-67645ff054a2_4076x2712.jpeg 424w, https://substackcdn.com/image/fetch/$s_!u5ML!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9fb6907-c080-41c4-a5fb-67645ff054a2_4076x2712.jpeg 848w, https://substackcdn.com/image/fetch/$s_!u5ML!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9fb6907-c080-41c4-a5fb-67645ff054a2_4076x2712.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!u5ML!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9fb6907-c080-41c4-a5fb-67645ff054a2_4076x2712.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><p>Testing is a very important technique carried out in software development. The benefits are numerous, some of which are:</p><ul><li><p>it reduces development time in the future</p></li><li><p>it ensures reliable products</p></li><li><p>it helps detect potential errors faster</p></li></ul><p>Software testing comes in different forms, one of which is UI testing.</p><p>In this article, we'll look at <a href="https://www.testcraft.io/ui-testing/">UI testing</a>, its purposes, test case examples, application methods, and tools for UI testing.</p><h2>What Is UI Testing?</h2><p>UI (User Interface) testing refers to testing procedures carried out on <a href="https://www.guru99.com/difference-web-application-website.html">web applications</a> to ensure interface compliance with the laid down requirements. They help validate applications built that satisfy the anticipated functionalities.</p><h2>Why UI Testing?</h2><p>UI Testing lets developers build reliable web applications with expected behavior or functionalities.</p><p>Building web applications goes beyond making it 'visually appealing' to the user. Can developers confidently say that all components function the way they should? Or all components in the web application are accessible?</p><p>There are a lot of questions that cannot be answered assuredly when UI tests are not carried out.</p><p>At the very first development process, ensuring performant components may be easy, but during the improvement phase (modifying or adding components), it may be hard to keep up. While trying to implement a component in another component, developers may interfere with the functionality and it may not occur to the developer until the users use the product.</p><p>These are just a few important reasons why having UI tests could create reliable web applications for users. They act as a guide to ensure developers build web applications which correspond to the supposed functionality.</p><h2>Example of UI Test Cases</h2><ul><li><p><strong>Focus Management</strong>: This is necessary especially for <a href="https://developers.google.com/web/fundamentals/accessibility/focus">accessibility purposes</a>. With UI testing, developers can certify that the transfer of focus from element to element is appropriate, hence making the application accessible.</p></li><li><p><strong>Form Inputs Validation</strong>: Developers may not always remember to validate input fields programmatically, especially when there are many forms in the application but with UI testing, such gaps can be discovered.</p></li><li><p><strong>Navigations</strong>: UI testing can be used to affirm that navigations in web applications work as expected. For accessibility purposes, the tests can also verify that the users are placed on the right part of the screen after navigating.</p></li><li><p><strong>Action buttons</strong>: For example, a button (or set of buttons) that trigger the addition of a new element, UI testing will help confirm that such functionalities are in place.</p></li><li><p><strong>Color changes</strong>: UI testing can be used to verify the color changes of an element, for example, a link on hover state or focus state</p></li><li><p><strong>Alignment of elements</strong>: The alignment of elements like paragraphs, headers, images, tables, and so on can also be tested.</p></li><li><p><strong>Fonts</strong>: With UI testing, fonts can be tested based on readability, sizes, and uniformity in the web application.</p></li></ul><p>There are various test cases for UI testing. The end goal is that the logic in the web application matches the initial idea and the product is usable all-round.</p><p>UI testing can also be used for multiple functionalities at the same time. For instance, browsing an entire page. The UI tests can ensure that all links on the page are accessible, the page follows <a href="https://en.wikipedia.org/wiki/Visual_hierarchy#:~:text=Visual%20hierarchy%20refers%20to%20the,in%20a%20field%20of%20perception.">visual hierarchy</a> appropriately, the colors used do not affect accessibility, and many more.</p><h2>Methods of Applying UI Tests</h2><p><strong>Manual Testing</strong></p><p>This testing approach implies that a human would test the application by <a href="https://www.softwaretestinghelp.com/manual-testing-tutorial-1/">manually performing operations</a> (clicking buttons, pressing tabs) to determine if the result correlates with the expected outcome.</p><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3fSh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F80f62c82-7bde-4182-8235-39801636d8d9_480x360.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3fSh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F80f62c82-7bde-4182-8235-39801636d8d9_480x360.gif 424w, https://substackcdn.com/image/fetch/$s_!3fSh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F80f62c82-7bde-4182-8235-39801636d8d9_480x360.gif 848w, https://substackcdn.com/image/fetch/$s_!3fSh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F80f62c82-7bde-4182-8235-39801636d8d9_480x360.gif 1272w, https://substackcdn.com/image/fetch/$s_!3fSh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F80f62c82-7bde-4182-8235-39801636d8d9_480x360.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3fSh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F80f62c82-7bde-4182-8235-39801636d8d9_480x360.gif" width="480" height="360" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/80f62c82-7bde-4182-8235-39801636d8d9_480x360.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:360,&quot;width&quot;:480,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:348862,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3fSh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F80f62c82-7bde-4182-8235-39801636d8d9_480x360.gif 424w, https://substackcdn.com/image/fetch/$s_!3fSh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F80f62c82-7bde-4182-8235-39801636d8d9_480x360.gif 848w, https://substackcdn.com/image/fetch/$s_!3fSh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F80f62c82-7bde-4182-8235-39801636d8d9_480x360.gif 1272w, https://substackcdn.com/image/fetch/$s_!3fSh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F80f62c82-7bde-4182-8235-39801636d8d9_480x360.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><p>This process is very direct as it allows the human to mimic a user, but it comes with few caveats:</p><ul><li><p>it's time-consuming</p></li><li><p>the quality of the test depends on the human's experience</p></li><li><p>as humans, we are prone to error</p></li></ul><p><strong>Record and Replay Testing</strong></p><p>In this method, UI automation tools are used to record and replay tasks performed in a web application. When the tool is run, it records all activities executed on the web application by the test developer like button clicks, tab clicks, mouse movements, hover actions, etc.&nbsp;</p><p>Afterward, the tool replays those activities while comparing the outcomes with the expected behavior. This way, the outcome differences can be resolved by the developer.</p><p>This method also requires few manual processes, as a test developer is involved.</p><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tHaN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4e5f33a3-7ed0-4b9f-b405-116e418588de_1324x828.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tHaN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4e5f33a3-7ed0-4b9f-b405-116e418588de_1324x828.png 424w, https://substackcdn.com/image/fetch/$s_!tHaN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4e5f33a3-7ed0-4b9f-b405-116e418588de_1324x828.png 848w, https://substackcdn.com/image/fetch/$s_!tHaN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4e5f33a3-7ed0-4b9f-b405-116e418588de_1324x828.png 1272w, https://substackcdn.com/image/fetch/$s_!tHaN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4e5f33a3-7ed0-4b9f-b405-116e418588de_1324x828.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tHaN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4e5f33a3-7ed0-4b9f-b405-116e418588de_1324x828.png" width="1324" height="828" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/4e5f33a3-7ed0-4b9f-b405-116e418588de_1324x828.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:828,&quot;width&quot;:1324,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:99961,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tHaN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4e5f33a3-7ed0-4b9f-b405-116e418588de_1324x828.png 424w, https://substackcdn.com/image/fetch/$s_!tHaN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4e5f33a3-7ed0-4b9f-b405-116e418588de_1324x828.png 848w, https://substackcdn.com/image/fetch/$s_!tHaN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4e5f33a3-7ed0-4b9f-b405-116e418588de_1324x828.png 1272w, https://substackcdn.com/image/fetch/$s_!tHaN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4e5f33a3-7ed0-4b9f-b405-116e418588de_1324x828.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><p><em>Original illustration found on TestingWhiz</em></p><p><strong>Model-Based Testing</strong></p><p>This method entails <a href="https://dl.acm.org/doi/pdf/10.1145/302405.302640">building a model</a> that would be a graphical description of the features or functionalities of the application. This model is built as a guide for creating the web application and it helps in creating efficient test cases.&nbsp;</p><p>The model determines the inputs to be made, calculates the expected outputs then runs the tests. Here&#8217;s an example:</p><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OMoi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b678f8-e2cc-4cfc-98fd-7f629db75b54_1335x874.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OMoi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b678f8-e2cc-4cfc-98fd-7f629db75b54_1335x874.png 424w, https://substackcdn.com/image/fetch/$s_!OMoi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b678f8-e2cc-4cfc-98fd-7f629db75b54_1335x874.png 848w, https://substackcdn.com/image/fetch/$s_!OMoi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b678f8-e2cc-4cfc-98fd-7f629db75b54_1335x874.png 1272w, https://substackcdn.com/image/fetch/$s_!OMoi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b678f8-e2cc-4cfc-98fd-7f629db75b54_1335x874.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OMoi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b678f8-e2cc-4cfc-98fd-7f629db75b54_1335x874.png" width="1335" height="874" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/d9b678f8-e2cc-4cfc-98fd-7f629db75b54_1335x874.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:874,&quot;width&quot;:1335,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:72344,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OMoi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b678f8-e2cc-4cfc-98fd-7f629db75b54_1335x874.png 424w, https://substackcdn.com/image/fetch/$s_!OMoi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b678f8-e2cc-4cfc-98fd-7f629db75b54_1335x874.png 848w, https://substackcdn.com/image/fetch/$s_!OMoi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b678f8-e2cc-4cfc-98fd-7f629db75b54_1335x874.png 1272w, https://substackcdn.com/image/fetch/$s_!OMoi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b678f8-e2cc-4cfc-98fd-7f629db75b54_1335x874.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><p><em>Image from TestCraft</em></p><p>This is the most efficient method for UI testing because it:</p><ul><li><p>has a higher level of automation</p></li><li><p>can handle more states in the web application.</p></li><li><p>ensures consistency</p></li><li><p>is less prone to error</p></li></ul><h2>Tools for UI Testing</h2><ul><li><p><a href="https://www.selenium.dev/selenium-ide/">Selenium IDE</a>: an open-source record and playback test automation tool for web applications. &nbsp;</p></li><li><p><a href="https://www.testcraft.io/">Testcraft</a>: a test automation platform for web applications. With Testcraft, testers can easily create automated tests that could be run on different browser environments.</p></li><li><p><a href="https://www.testim.io/">Testim</a>: uses AI to help developers create <a href="https://www.browserstack.com/guide/end-to-end-testing#:~:text=End%20to%20end%20testing%20(E2E,for%20integration%20and%20data%20integrity.">end-to-end tests</a> for their web applications. They allow developers to code, record, and manage tests in their way, with their tools.</p></li><li><p><a href="https://smartbear.com/product/testcomplete/overview/">Test Complete</a>: allows developers to ensure the quality of their web applications without sacrificing speed or agility with an easy-to-use UI testing automation tool.</p></li><li><p><a href="https://www.katalon.com/">Katalon Studio</a>: is an all-in-one testing automation tool which can be used for UI testing. It supports different browser environments and devices and operating systems.</p></li></ul><h2>Conclusion</h2><p>UI testing is a beneficial and effective process in creating reliable web applications with expected behavior. Setting up automation tests can be a long way in creating efficient applications because the tests act as a guide (in compliance with the application's requirements) for future improvements of the application.</p><p>Beyond beautiful and nice-looking web applications, usability is of great concern. With UI tests, developers can verify the usability of web applications built before delivering them to the public.</p>]]></content:encoded></item><item><title><![CDATA[Top tools for API testing in 2020]]></title><description><![CDATA[What is an API An Application Programming Interface (API) is a layer of communication that facilitates the exchange of data between the various components in a software application. APIs are playing an ever more important role in web development because the different parts of a web application may be built as standalone micro-services that communicate as a whole through such designated interfaces.]]></description><link>https://devops.substack.com/p/top-tools-for-api-testing-in-2020</link><guid isPermaLink="false">https://devops.substack.com/p/top-tools-for-api-testing-in-2020</guid><dc:creator><![CDATA[DevOps Editorial]]></dc:creator><pubDate>Wed, 12 Feb 2020 10:05:04 GMT</pubDate><enclosure url="https://res.cloudinary.com/hhsslviub/image/fetch/h_600/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2ddc8295-cae4-4a8c-832d-118ce437531e_2724x1958.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>What is an API</h2><p>An Application Programming Interface (API) is a layer of communication that facilitates the exchange of data between the various components in a software application. APIs are playing an ever more important role in web development because the different parts of a web application may be built as standalone micro-services that communicate as a whole through such designated interfaces.&nbsp;</p><p>The API layer usually describes a set of rules that define the expected behavior when interacted with by a component requesting for data, these rules help in validating the response to ensure that things always work as they should.</p><h2>What is API testing</h2><p>APIs are becoming the preferred method of communication between web components and this has the effect of driving the business logic farther into their implementation. This means that APIs need to be tested to catch and re-mediate bugs before they reach production.</p><p>API testing is a type of software testing that directly tests the application programming interface to determine if it correctly responds to requests, meets functionality, performance and security standards.</p><p>API testing is sometimes called &#8220;headless&#8221; testing because it usually tests the behavior of a <a href="https://www.everyinteraction.com/definition/user-interface/">User interface (UI)</a> without actually interacting with or loading the UI, but by sending requests directly to the backend API.</p><h2>Benefits of API testing</h2><p>API testing promises several benefits that can impact the efficiency of the test suite positively. A notable benefit of API testing is that it is capable of quickly catching bugs in the test cycle, and this is useful in giving quick feedback to developer teams.&nbsp;</p><p>API tests are also a better choice when compared to UI tests as the latter can be slow to implement and can result in flaky results.</p><h2>Some awesome free tools for API testing</h2><p>There are several ways to go about API testing, one of which is directly writing code in your preferred language to hit the endpoints and confirm that the response and data are in-line with expectations. As with everything else in software development, there are dedicated tools to automate the process and make things significantly easier and faster.</p><p>We are going to look at some awesome tools that simplify the process of API testing and make it easy to reuse the same tests with different API services.&nbsp;</p><h2>RestAssured</h2><p><a href="http://rest-assured.io/">REST Assured</a> is a Java library that provides a domain-specific language (DSL) for writing powerful, maintainable tests for RESTful APIs. It makes testing easy by eradicating the need for boilerplate code while validating complex responses.</p><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TTyh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F631538b4-cf48-4278-ab09-d8597c9bb2f6_419x120.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TTyh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F631538b4-cf48-4278-ab09-d8597c9bb2f6_419x120.png 424w, https://substackcdn.com/image/fetch/$s_!TTyh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F631538b4-cf48-4278-ab09-d8597c9bb2f6_419x120.png 848w, https://substackcdn.com/image/fetch/$s_!TTyh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F631538b4-cf48-4278-ab09-d8597c9bb2f6_419x120.png 1272w, https://substackcdn.com/image/fetch/$s_!TTyh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F631538b4-cf48-4278-ab09-d8597c9bb2f6_419x120.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TTyh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F631538b4-cf48-4278-ab09-d8597c9bb2f6_419x120.png" width="419" height="120" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/631538b4-cf48-4278-ab09-d8597c9bb2f6_419x120.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:120,&quot;width&quot;:419,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TTyh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F631538b4-cf48-4278-ab09-d8597c9bb2f6_419x120.png 424w, https://substackcdn.com/image/fetch/$s_!TTyh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F631538b4-cf48-4278-ab09-d8597c9bb2f6_419x120.png 848w, https://substackcdn.com/image/fetch/$s_!TTyh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F631538b4-cf48-4278-ab09-d8597c9bb2f6_419x120.png 1272w, https://substackcdn.com/image/fetch/$s_!TTyh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F631538b4-cf48-4278-ab09-d8597c9bb2f6_419x120.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><p>Here are some of its features and benefits:</p><ul><li><p>It supports XML and JSON Request/Responses.</p></li><li><p>It supports BDD Given/When/Then syntax.</p></li><li><p>It Integrates seamlessly with Java projects.</p></li></ul><p>If you want to learn more about REST Assured, take a look at the usage guide on <a href="https://github.com/rest-assured/rest-assured/wiki/Usage">GitHub</a>.</p><h2>Loadmill</h2><p><a href="https://www.loadmill.io/">Loadmill</a> is a test service that supports API testing by recording real user sessions in your application and converting them to reliable API tests. It saves time and effort because it eliminates the process of scripting your tests manually.</p><p>The process of generating these recordings is fast and only takes a few minutes.</p><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IoSc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F58a992f9-57a3-46ff-abe4-9b470af07332_1339x821.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IoSc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F58a992f9-57a3-46ff-abe4-9b470af07332_1339x821.png 424w, https://substackcdn.com/image/fetch/$s_!IoSc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F58a992f9-57a3-46ff-abe4-9b470af07332_1339x821.png 848w, https://substackcdn.com/image/fetch/$s_!IoSc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F58a992f9-57a3-46ff-abe4-9b470af07332_1339x821.png 1272w, https://substackcdn.com/image/fetch/$s_!IoSc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F58a992f9-57a3-46ff-abe4-9b470af07332_1339x821.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IoSc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F58a992f9-57a3-46ff-abe4-9b470af07332_1339x821.png" width="1339" height="821" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/58a992f9-57a3-46ff-abe4-9b470af07332_1339x821.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:821,&quot;width&quot;:1339,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IoSc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F58a992f9-57a3-46ff-abe4-9b470af07332_1339x821.png 424w, https://substackcdn.com/image/fetch/$s_!IoSc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F58a992f9-57a3-46ff-abe4-9b470af07332_1339x821.png 848w, https://substackcdn.com/image/fetch/$s_!IoSc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F58a992f9-57a3-46ff-abe4-9b470af07332_1339x821.png 1272w, https://substackcdn.com/image/fetch/$s_!IoSc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F58a992f9-57a3-46ff-abe4-9b470af07332_1339x821.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><p>Here are some benefits of Loadmill:</p><ul><li><p>It automatically generates regression tests from real user recordings.</p></li><li><p>It ensures that you move fast and your focus is on what matters.</p></li><li><p>It automates the QA process by replaying real user behavior.</p></li><li><p>It ships with an easy to use and interact with user interface.</p></li></ul><p>If you want to learn more about LoadMill, take a look at their <a href="https://github.com/loadmill">GitHub</a>.</p><h2>RestSharp</h2><p><a href="http://restsharp.org/">RestSharp </a>is a popular HTTP client library for .NET. featuring automatic serialization and deserialization, request and response type detection, variety of authentications and other useful features. It supports the following features:</p><ul><li><p>Supports GET, POST, PUT, PATCH, HEAD, OPTIONS, DELETE request options.</p></li><li><p>Easy installation with <a href="http://nuget.org/packages/RestSharp">NuGet</a> for most .NET flavours.</p></li><li><p>Supports .NET 3.5+, Silverlight 5, Windows Phone 8, Mono, MonoTouch, Mono for Android</p></li></ul><p>To find out more about RestShare, check out the official repository <a href="https://github.com/restsharp/RestSharp">here.</a></p><h2>Postman</h2><p><a href="https://www.postman.com/">Postman</a> is one of the more popular tools for testing REST services. It started as a Chrome browser plugin but now has dedicated native versions that developers and testers alike rely on heavily to check API connections and services.</p><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cg5R!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2ddc8295-cae4-4a8c-832d-118ce437531e_2724x1958.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cg5R!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2ddc8295-cae4-4a8c-832d-118ce437531e_2724x1958.png 424w, https://substackcdn.com/image/fetch/$s_!cg5R!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2ddc8295-cae4-4a8c-832d-118ce437531e_2724x1958.png 848w, https://substackcdn.com/image/fetch/$s_!cg5R!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2ddc8295-cae4-4a8c-832d-118ce437531e_2724x1958.png 1272w, https://substackcdn.com/image/fetch/$s_!cg5R!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2ddc8295-cae4-4a8c-832d-118ce437531e_2724x1958.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cg5R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2ddc8295-cae4-4a8c-832d-118ce437531e_2724x1958.png" width="1456" height="1047" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/2ddc8295-cae4-4a8c-832d-118ce437531e_2724x1958.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1047,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cg5R!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2ddc8295-cae4-4a8c-832d-118ce437531e_2724x1958.png 424w, https://substackcdn.com/image/fetch/$s_!cg5R!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2ddc8295-cae4-4a8c-832d-118ce437531e_2724x1958.png 848w, https://substackcdn.com/image/fetch/$s_!cg5R!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2ddc8295-cae4-4a8c-832d-118ce437531e_2724x1958.png 1272w, https://substackcdn.com/image/fetch/$s_!cg5R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2ddc8295-cae4-4a8c-832d-118ce437531e_2724x1958.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><p>Postman can be used for various levels of API testing, a common way to perform a test is to send a POST request to the API endpoints to be tested and check that the responses are in-line with expectations. It also allows you to set headers and cookies for authentication and data parsing.&nbsp;</p><p>It has three plans:</p><ol><li><p>There is a free plan for individuals and small teams.</p></li><li><p>There is a Pro plan that supports a team of up to 50 people.</p></li><li><p>The enterprise plan supports a team of any size and the cost is $18 per user per month.</p></li></ol><p>Here are some benefits associated with using Postman:</p><ul><li><p>Can produce the code representation of an executed test in several languages.</p></li><li><p>Can run as a browser plugin extension.</p></li><li><p>Can run as a native application</p></li><li><p>Doesn't require the knowledge of a new programming language.</p></li><li><p>Easy to understand UI.</p></li><li><p>Supports a bunch of integrations like Swagger &amp; RAML formats.</p></li></ul><p>You can find out more about Postman and its use cases by visiting the official <a href="https://www.postman.com/">website</a>.</p><h2>Pyresttest</h2><p><a href="https://pypi.org/project/pyresttest/">Pyresttest</a> is a Python-based REST testing and API micro-benchmarking tool that supports the following features:</p><ul><li><p>Tests are defined in basic YAML or JSON config files, no code needed.</p></li><li><p>Minimal dependencies, making it easy to deploy on-server for smoke tests/health checks.</p></li><li><p>Supports <a href="https://github.com/svanoort/pyresttest/blob/master/advanced_guide.md">generate/extract/validate</a> mechanisms to create full test scenarios.</p></li><li><p>Returns exit codes on failure, to slot into automated configuration management/orchestration tools (also supplies parseable logs).</p></li><li><p>Logic is written and <a href="https://github.com/svanoort/pyresttest/blob/master/extensions.md">extensible</a> in Python.</p></li></ul><p>It is easy to install and the YAML syntax makes it easy to write. Here is an example test that checks that APIs accept operations, and will smoke-test an application:</p><pre><code>---</code></pre><pre><code>- config:</code></pre><pre><code>&nbsp; &nbsp; - testset: "Basic tests"</code></pre><pre><code>&nbsp; &nbsp; - timeout: 100 &nbsp;# Increase timeout from the default 10 seconds</code></pre><pre><code>- test:&nbsp;</code></pre><pre><code>&nbsp; &nbsp; - name: "Basic get"</code></pre><pre><code>&nbsp; &nbsp; - url: "/api/person/"</code></pre><pre><code>- test:&nbsp;</code></pre><pre><code>&nbsp; &nbsp; - name: "Get single person"</code></pre><pre><code>&nbsp; &nbsp; - url: "/api/person/1/"</code></pre><pre><code>- test:&nbsp;</code></pre><pre><code>&nbsp; &nbsp; - name: "Delete a single person, verify that works"</code></pre><pre><code>&nbsp; &nbsp; - url: "/api/person/1/"</code></pre><pre><code>&nbsp; &nbsp; - method: 'DELETE'</code></pre><pre><code>- test: # create entity by PUT</code></pre><pre><code>&nbsp; &nbsp; - name: "Create/update person"</code></pre><pre><code>&nbsp; &nbsp; - url: "/api/person/1/"</code></pre><pre><code>&nbsp; &nbsp; - method: "PUT"</code></pre><pre><code>&nbsp; &nbsp; - body: '{"first_name": "Gaius","id": 1,"last_name": "Baltar","login": "gbaltar"}'</code></pre><pre><code>&nbsp; &nbsp; - headers: {'Content-Type': 'application/json'}</code></pre><pre><code>&nbsp; &nbsp; - validators: &nbsp;# This is how we do more complex testing!</code></pre><pre><code>&nbsp; &nbsp; &nbsp; &nbsp; - compare: {header: content-type, comparator: contains, expected:'json'}</code></pre><pre><code>&nbsp; &nbsp; &nbsp; &nbsp; - compare: {jsonpath_mini: 'login', expected: 'gbaltar'} &nbsp;# JSON extraction</code></pre><pre><code>&nbsp; &nbsp; &nbsp; &nbsp; - compare: {raw_body:"", comparator:contains, expected: 'Baltar' } &nbsp;# Tests on raw response</code></pre><pre><code>- test: # create entity by POST</code></pre><pre><code>&nbsp; &nbsp; - name: "Create person"</code></pre><pre><code>&nbsp; &nbsp; - url: "/api/person/"</code></pre><pre><code>&nbsp; &nbsp; - method: "POST"</code></pre><pre><code>&nbsp; &nbsp; - body: '{"first_name": "William","last_name": "Adama","login": "theadmiral"}'</code></pre><pre><code>&nbsp; &nbsp; - headers: {Content-Type: application/json}</code></pre><p>You can find more details about Pyresttest <a href="https://github.com/svanoort/pyresttest">here</a>.</p><h2></h2><h2>SoapUI</h2><p><a href="https://www.soapui.org/">SoapUI</a> is a functional testing tool for SOAP and rest testing. It ships with an easy-to-use graphical interface and allows you to easily create and execute automated functional, regression and load tests in a single test environment.&#8217;</p><p>It comes in two versions: Free open source version and the Pro version. Since the free version is open-source, you can tweak the source code to work in a custom way and satisfy your testing needs. Here are some features of the free version:</p><ul><li><p>Supports drag and drop test creating.</p></li><li><p>Is capable of creating complex test scenarios.</p></li><li><p>Allows for asynchronous testing.</p></li><li><p>It has a mock service that lets you mimic web services before the final implementation.</p></li></ul><p>If you find it interesting so far, you can learn more about SoapUI <a href="https://www.soapui.org/open-source.html">here</a>.</p><h2>Conclusion</h2><p>Modern web applications are built as standalone components that communicate through a dedicated Application Programming Interface. This has the effect of shifting the business logic from the UI to the API layer. API testing refers to the implementation and running of tests that assert that an API works as is expected, and sends the correct response codes and data when a valid request is encountered.</p><p>In this article, we explored some tools that simplify the process of API testing by offering sleek reusable services that can effectively communicate with <a href="https://en.wikipedia.org/wiki/Representational_state_transfer">REST</a> endpoints, compute intelligible reports when errors are found and lots more.</p>]]></content:encoded></item><item><title><![CDATA[Top GitHub Apps You Should Know About]]></title><description><![CDATA[The ability to find and integrate the right GitHub apps in your workflow is key to DevOps success. For this reason I gathered few apps that are extremely effective when working on GitHub projects.]]></description><link>https://devops.substack.com/p/top-github-apps-you-should-know-about</link><guid isPermaLink="false">https://devops.substack.com/p/top-github-apps-you-should-know-about</guid><dc:creator><![CDATA[DevOps Editorial]]></dc:creator><pubDate>Thu, 12 Dec 2019 13:38:14 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!YlTQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F035344f5-d6ab-4d1f-85c6-c9484510719e_4032x1960.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Ever since its inception, <a href="https://github.com/">GitHub</a> has been providing innovative solutions for effective software development. At its core, GitHub helps eliminate process bottlenecks while streamlining collaboration among development teams. However, one challenge that prevalently stands on the way for most developers is picking the right automation tools.</p><p>There are hundreds of GitHub tools designed to add or extend functionality to your workflow. Although each tool is unique and serves a different purpose; they are all centered on improving the development process. Whether its code review, continuous integration, localization, dependency management, deployment, monitoring, code quality, security, or project management - there&#8217;s a custom-developed app for every task. This depicts how the ability to find and integrate the right GitHub apps in your workflow is key to DevOps success. For this reason, I put together seven apps that will ease away your pain points when working on GitHub projects.</p><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YlTQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F035344f5-d6ab-4d1f-85c6-c9484510719e_4032x1960.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YlTQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F035344f5-d6ab-4d1f-85c6-c9484510719e_4032x1960.jpeg 424w, https://substackcdn.com/image/fetch/$s_!YlTQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F035344f5-d6ab-4d1f-85c6-c9484510719e_4032x1960.jpeg 848w, https://substackcdn.com/image/fetch/$s_!YlTQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F035344f5-d6ab-4d1f-85c6-c9484510719e_4032x1960.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!YlTQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F035344f5-d6ab-4d1f-85c6-c9484510719e_4032x1960.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YlTQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F035344f5-d6ab-4d1f-85c6-c9484510719e_4032x1960.jpeg" width="1100" height="535" data-attrs="{&quot;src&quot;:&quot;https://bucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com/public/images/035344f5-d6ab-4d1f-85c6-c9484510719e_4032x1960.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:535,&quot;width&quot;:1100,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1140395,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YlTQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F035344f5-d6ab-4d1f-85c6-c9484510719e_4032x1960.jpeg 424w, https://substackcdn.com/image/fetch/$s_!YlTQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F035344f5-d6ab-4d1f-85c6-c9484510719e_4032x1960.jpeg 848w, https://substackcdn.com/image/fetch/$s_!YlTQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F035344f5-d6ab-4d1f-85c6-c9484510719e_4032x1960.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!YlTQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F035344f5-d6ab-4d1f-85c6-c9484510719e_4032x1960.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><ol><li><p><strong>WhiteSource Renovate</strong></p></li></ol><p><a href="https://renovate.whitesourcesoftware.com/">WhiteSource Renovate</a> is a free, open-source dependency update tool that automatically resolves outdated dependencies and integrates the updates into your DevOps workflow. This not only saves time and effort for software developers but also helps mitigate risks and security vulnerabilities. One thing you&#8217;ll love about Whitesource Renovate is that it&#8217;s highly configurable, which allows you to set up customizable workflows. Additionally, the multi-language platform supports over ten languages including Java, JavaScript, PHP, Python, Ruby, Docker, Cargo, Go, Elixir, and more.</p><p>If you&#8217;re looking to enhance code quality and security, then you have to stay up to date with your dependencies. This is exactly what WhiteSource Renovate does for you- it automatically updates dependencies in your repositories using convenient pull requests.</p><ol start="2"><li><p><strong>ImgBot</strong></p></li></ol><p>Optimizing images can be very difficult and time-consuming. However, you can automate the process using <a href="https://github.com/marketplace/imgbot">ImgBot</a> rather than doing it yourself. Web pages with optimized images load faster. Faster pages have higher conversion rates, lower bounce rates, and happier users. And of course, smaller images reduce bandwidth costs for you and your visitors. <br><br>ImgBot crawls your GitHub files and applies a lossless compression on all your images. This reduces the file size but does not affect the dimensions and quality of your images. After compression, ImgBot submits pull requests for you to review and merge. It provides such an easy way to solve image optimization problems and ensure your web pages load faster.</p><ol start="3"><li><p><strong>Bolt</strong></p></li></ol><p>Designed to close the gap between code development and security, <a href="https://bolt.whitesourcesoftware.com/">Bolt</a> helps GitHub developers create more secure products. It detects and alerts you on vulnerable open source components in your repository. It lets you scan unlimited repositories up to a maximum of five times a day. It then generates comprehensive reports of all scanned repositories on the GitHub &#8216;Issues&#8217; section. Other than letting you discover vulnerabilities in real-time, Bolt also provides actionable and validated recommendations for quicker resolution of security issues.&nbsp;&nbsp;</p><p>Bolt supports over 200 programming languages, making it one of the most sophisticated vulnerability management tools you&#8217;ll ever come across. What&#8217;s more? It&#8217;s powered by WhiteSource's extensive open source vulnerabilities database. This database is continuously updated with data from the <a href="https://nvd.nist.gov/">NVD</a>, security advisories, and other popular CVE/open source issue trackers.&nbsp;</p><ol start="4"><li><p><strong>Codecov</strong></p></li></ol><p>One of the best development practices is maintaining a smooth code review workflow. <a href="https://github.com/marketplace/codecov">Codecov</a> serves this purpose by providing a set of highly integrated tools for grouping, merging, archiving, and comparing code coverage reports. The tool supports multiple languages including PHP, Perl, Java, C, C++, Bash, FORTRAN, Haskell, Elixir, JavaScript, Python, Ruby, and many more. It merges all builds and languages in your project into a single elegant coverage report. Through Codecov, you get customizable commit statuses and detailed pull request comments to enhance your team&#8217;s workflow.</p><p>Codecov&#8217;s awesome browser plugin ensures seamless integration as users can overlay their coverage reports directly in GitHub. It is completely free for all open source repositories. Using it in your development processes will improve the quality of your code and workflow significantly.</p><ol start="5"><li><p><strong>Atom</strong></p></li></ol><p>According to <a href="https://github.blog/2019-04-15-easily-review-comments-in-atom/">GitHub</a>, code review is "a social, emotional, and logistical process" in which pull requests provide "a particularly vulnerable moment" for developers to learn how others view their work.&nbsp; This means that a platform that integrates code and comments while providing seamless navigation between the two would come in handy for every GitHub developer. From this perspective, Atom -a lightweight, yet solid, cross-platform editor- leads the pack. This open-source text editor can be customized to do almost everything. It also comes bundled with a powerful GitHub package.</p><p><a href="https://github.atom.io/">GitHub for Atom</a> allows developers to create and switch branches. With it, you can stage, pull, push, and commit changes. Its integration also allows you to resolve merge conflicts and view pull requests right from the editor.&nbsp;&nbsp;</p><p>According to Stack Overflow&#8217;s 2019<a href="https://insights.stackoverflow.com/survey/2019#technology-_-most-popular-development-environments"> developer survey</a>, the Atom Editor made it to the top 10 popular developer environments. With the incredibly enhanced features that<a href="https://atom.io/"> Atom</a> offers, this GitHub tool is definitely worth your time.</p><ol start="6"><li><p><strong>CodeTree</strong></p></li></ol><p>Most people have trouble managing their development workflow, especially when working on multi-repo projects. This can impact the overall efficiency of the project teams significantly. However, development teams can mitigate this challenge by integrating the right project management suite in their workflow. <a href="https://github.com/marketplace/codetree">Codetree</a> is an easy solution for project management that allows GitHub users to keep track of their development processes.</p><p>With Codetree, you can view and manage issues across multiple repositories from a single dashboard.&nbsp; It allows you to visualize tasks in a compact list view format or Kanban task board. This tool helps you track dependencies as well as group issues. You can define rules to alter stages, or drag and drop to prioritize tasks. CodeTree works perfectly in every browser, making it an ideal workflow management tool for your GitHub projects.</p><ol start="7"><li><p><strong>Moesif API Insights</strong></p></li></ol><p><a href="https://github.com/marketplace/moesif-api-insights">Moesif</a> is an advanced AI-powered analytics and debugging tool for APIs. It helps you understand user-behavior by providing customer-centric insights. Moesif, through the API analytics feature, provides real-time visibility into your API platform and product usage. On the other hand, the Moesif API debugging feature helps in debugging product and functional issues within your API, so minor issues are addressed before major outages spring up.</p><p>Another super-helpful functionality by Moesif is API monitoring, which allows you to monitor API issues that affect customer adoption and retention. You can also set up automatic alerts for API problems by integrating Slack and PagerDuty. With Moesif API Insights, you get to understand how customers use your API, how to build a winning API platform, and how to drive long-term adoption.&nbsp;</p><h2>Wrap-up</h2><p>With all these tools and integrations available in the <a href="https://github.com/marketplace">GitHub Marketplace</a>, DevOps teams can make their processes less-complicated, smoother and more efficient. The right tools and technology provide an easier way to build better software while saving on time, money, and effort. So, If you&#8217;re looking to take your software development game a notch higher, then consider implementing these GitHub tools.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://devops.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Sign up now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://devops.substack.com/subscribe?"><span>Sign up now</span></a></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://devops.substack.com/p/top-github-apps-you-should-know-about?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://devops.substack.com/p/top-github-apps-you-should-know-about?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p>]]></content:encoded></item></channel></rss>