<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: John Demian</title>
    <description>The latest articles on DEV Community by John Demian (@johndemian).</description>
    <link>https://dev.to/johndemian</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F74217%2F4f072620-bf90-4d22-9757-05282a017376.jpg</url>
      <title>DEV Community: John Demian</title>
      <link>https://dev.to/johndemian</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/johndemian"/>
    <language>en</language>
    <item>
      <title>Making my Laravel Development simple with Forge</title>
      <dc:creator>John Demian</dc:creator>
      <pubDate>Wed, 01 Oct 2025 14:30:21 +0000</pubDate>
      <link>https://dev.to/johndemian/making-my-laravel-development-simple-with-forge-4f89</link>
      <guid>https://dev.to/johndemian/making-my-laravel-development-simple-with-forge-4f89</guid>
      <description>&lt;p&gt;Look, I’m the type of person who likes to mess around with different side projects that never end up seeing the light of day. My GitHub looks like a graveyard of half-finished projects, and over these years of building these forgotten side projects, I’ve learned one crucial lesson: time spent on DevOps is time not spent on building cool stuff. &lt;/p&gt;

&lt;p&gt;That might be because I am really bad at provisioning and managing my servers, or because right now it seems to be a full-time job.&lt;/p&gt;

&lt;p&gt;That's where Laravel Forge comes in – and honestly, it's been a game-changer for developers like me who'd rather write code than wrestle with server configurations.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem with Traditional Deployment
&lt;/h2&gt;

&lt;p&gt;Let’s call a spade, a spade. Most of us developers didn't sign up to become Linux sysadmins. We want to build applications, not spend hours figuring out why our SSL certificate isn't working or why our database connection keeps timing out.&lt;/p&gt;

&lt;p&gt;I used to deploy my Laravel apps the "traditional" way: spinning up a DigitalOcean droplet, SSH-ing in, installing PHP, MySQL, Nginx, configuring everything manually, and inevitably breaking something in the process. Then spending another few hours Googling error messages and questioning my life choices.&lt;/p&gt;

&lt;p&gt;Granted, while I’m spending more time on ChatGPT rather than Stackoverflow, I still find myself searching for the same solutions to weird memory limitations, obscure firewall rules, SSL, or project settings that take the entire app down, and the list goes on. It’s just not fun.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I love this representation because I feel it's pretty accurate. &lt;a href="https://www.reddit.com/r/ProgrammerHumor/comments/6brjkt/how_it_people_see_each_other/" rel="noopener noreferrer"&gt;Reddit Agrees&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Falqwiy684tdokejw6188.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Falqwiy684tdokejw6188.png" alt="What everyone actually think"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Enter Laravel Forge
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://forge.laravel.com" rel="noopener noreferrer"&gt;Forge&lt;/a&gt; is basically Taylor Otwell saying "Hey, I know you just want to deploy your app without losing your sanity." It's a server management service that handles all the boring stuff so you can focus on what actually matters - your application.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://forge.laravel.com" rel="noopener noreferrer"&gt;LaravelForge&lt;/a&gt; offers a few things out of the box like zero-config server setup, dead simple deployments, stuff that you don’t want to think about like backups, server monitoring and alerts, SSL renewals, and much more.&lt;/p&gt;

&lt;p&gt;Now I know what you are thinking, Forge is not the only solution out there. And that’s true, it’s not necessarily the right fit for everyone. Let me break down what’s actually happening in the server provisioning world and why so many of us Laravel devs keep running into the same headaches.&lt;/p&gt;
&lt;h2&gt;
  
  
  The DIY Route
&lt;/h2&gt;

&lt;p&gt;The real issue isn’t that server management is impossible; it’s that there are about 50 different things that can silently break, and you won’t know about most of them until 2 AM and you have a flight leaving at 6:30 AM the next morning. &lt;em&gt;Ok, maybe that’s just me.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The security minefield is another issue. Think about it, you spin an Ubuntu server, and out of the box, it basically screams “Hack me!”. Default SSH config, open ports you never knew existed, firewall rules that make no sense. I once spent an entire weekend figuring out a database accessibility issue that turned out to be a misconfigured bind address, so my machine kept throwing “localhost refused to connect” errors.&lt;/p&gt;

&lt;p&gt;Then there is the environment hell where your machine runs PHP 8.2, but your server defaults to 7.4, and some obscure dependency won’t work on a newer version of PHP. File permissions are either too restrictive or too permissive. Going from “I can’t access my own photos” to “now, everyone can see my selfies” in an instant.&lt;/p&gt;

&lt;p&gt;And even when everything else works great, there’s a dance that happens with every deployment, SSH in, Git pull, run composer, clear cache, restart queue workers, pray nothing breaks, etc. Miss one step and your app is down for good. Automate it wrong, and you’re debugging shell scripts just like our ancestors.&lt;/p&gt;
&lt;h3&gt;
  
  
  Saving my Sanity
&lt;/h3&gt;

&lt;p&gt;The real question isn't "what's the best deployment strategy" but rather "what lets me focus on building instead of maintaining?”&lt;/p&gt;

&lt;p&gt;It comes down to my priorities. Am I building projects because I want to learn DevOps or am I ok being ignorant and just focusing on my app? &lt;/p&gt;

&lt;p&gt;I figured out that I spent about 25-30% of my time on operational tasks and not coding, which I did not enjoy at all. &lt;/p&gt;

&lt;p&gt;So it became clear.&lt;/p&gt;

&lt;p&gt;I just want things to work. I don’t care to learn the intricacies of server management as long as it just works. Forge does just that: Laravel bliss without the drama. &lt;/p&gt;
&lt;h2&gt;
  
  
  The New Forge
&lt;/h2&gt;

&lt;p&gt;There’s a new version of Forge that’s a game-changer for developers like me. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;This &lt;a href="https://www.youtube.com/watch?v=XB9Nge72n58" rel="noopener noreferrer"&gt;video&lt;/a&gt; covers most of the cool new things.&lt;/em&gt;&lt;br&gt;


  &lt;iframe src="https://www.youtube.com/embed/XB9Nge72n58"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;h3&gt;
  
  
  Instant VPS Provisioning
&lt;/h3&gt;

&lt;p&gt;The biggest time saver is &lt;a href="https://forge.laravel.com/docs/servers/laravel-vps" rel="noopener noreferrer"&gt;Laravel VPS&lt;/a&gt; - you can create a server directly from Forge without ever touching DigitalOcean’s interface. What took me about an hour or two is now done in 10 seconds.&lt;/p&gt;

&lt;p&gt;This means that I can go from an idea to a live server faster than I can finish making my coffee. &lt;/p&gt;

&lt;h3&gt;
  
  
  Zero-Downtime Deployments
&lt;/h3&gt;

&lt;p&gt;This now comes out of the box. Previously, you needed to use a separate service like Envoyer. This means that I can deploy updates during peak traffic without breaking the experience for anyone. No more scheduling deployments around user downtime periods or being scared of pushing code to production.&lt;/p&gt;

&lt;h3&gt;
  
  
  Enhanced Deployment Visibility
&lt;/h3&gt;

&lt;p&gt;You’ll also get better tracking of what’s happening during deployments with clear visibility into which commits are being deployed, the order of the deployments in queue, and the real-time status of each deployment. And you also get full rollback capabilities if something goes wrong.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Here’s a quick video on what the setup looks like:&lt;/em&gt;&lt;br&gt;


  &lt;iframe src="https://www.youtube.com/embed/AGYKgFc0DUQ"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;p&gt;The new Forge essentially removes the last friction points in Laravel deployment. You're not just getting faster server provisioning - you're getting a deployment experience that matches the speed of your development cycle.&lt;/p&gt;

&lt;p&gt;For side projects where time is your most valuable resource, these improvements mean more time building features and less time babysitting deployments. The zero-downtime feature alone makes your side projects feel more professional and reliable to users.&lt;/p&gt;

&lt;h2&gt;
  
  
  My two cents
&lt;/h2&gt;

&lt;p&gt;Look, I'm not saying Forge is magic (though it feels like it sometimes). If you're a DevOps engineer or you genuinely enjoy server management, maybe Forge isn't for you. But if you're like me, a developer who just wants to build cool stuff without the operational overhead, then Forge is absolutely worth every penny.&lt;/p&gt;

</description>
      <category>php</category>
      <category>laravel</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Planning to launch a SaaS? You need to know this one little thing.</title>
      <dc:creator>John Demian</dc:creator>
      <pubDate>Mon, 20 Mar 2023 22:47:26 +0000</pubDate>
      <link>https://dev.to/johndemian/planning-to-create-a-saas-you-need-to-know-this-one-little-thing-37ep</link>
      <guid>https://dev.to/johndemian/planning-to-create-a-saas-you-need-to-know-this-one-little-thing-37ep</guid>
      <description>&lt;p&gt;While this concept I'm about to explain applies to everyone running a software as a service business, it will be of real importance to developers.&lt;/p&gt;

&lt;p&gt;It's developers like you and I that don't really take in consideration feedback from users and kind of create this idea in their minds of how the product should feel like and then go knee deep in it without too much hesitation.&lt;/p&gt;

&lt;p&gt;I've done this, and paid a steep price for my ignorance.&lt;/p&gt;

&lt;p&gt;After I started Eyelet.io it got some great feedback right off the bat so I raised some money and then doubled down on the development of the product.&lt;/p&gt;

&lt;p&gt;I wanted to build this extensive, over the top segmentation feature that would make Eyelet.io a force to be reckoned with.&lt;/p&gt;

&lt;p&gt;Or so I thought.&lt;/p&gt;

&lt;p&gt;There was a huge flaw in my plan. Only I was interested in that level of segmentation. &lt;/p&gt;

&lt;p&gt;Fast forward 6 months and an outrageous amount of money spent and my segmentation feature did nothing for us.&lt;/p&gt;

&lt;p&gt;The cruel thing about this whole story is that I knew how to avoid it, I was warned about this becoming a possibility yet I still did it anyways.&lt;/p&gt;

&lt;p&gt;The only thing I had to do is: &lt;strong&gt;ask for user feedback&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Doubling down on user feedback
&lt;/h2&gt;

&lt;p&gt;Once I've figured out that there a lots of other people like me I figured out how to use Eyelet in order to wrong my own wrongs, and who knows, maybe I'll ensure that one less SaaS founders follows in my steps.&lt;/p&gt;

&lt;p&gt;Using the Eyelet bots, I've created a simple NPS survey that doubles down on the feedback aspect.&lt;/p&gt;

&lt;p&gt;Instead of collecting a simple numeric score that represents the NPS, I'm using the actual feedback of all the previous users. This way I can gauge the satisfaction with the product or feature but also create a way to offer help depending on the most popular issues.&lt;/p&gt;

&lt;p&gt;So if they offer a good feedback, I can ask for a review on G2 or Capterra, but if they have a bad experience, instead of ending the survey there I can provide help in the form of a product tour, a link to a roadmap or perhaps give them the option to schedule a call with our support team.&lt;/p&gt;

&lt;p&gt;Clever, right?&lt;/p&gt;

&lt;p&gt;Here's a video I've made on this subject, if you find it useful consider dropping a like.&lt;/p&gt;

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

&lt;p&gt;Good luck, and I really hope you'll be smarter than I was.&lt;/p&gt;

</description>
      <category>feedback</category>
      <category>saas</category>
    </item>
    <item>
      <title>Website speed testing - is this still a thing?</title>
      <dc:creator>John Demian</dc:creator>
      <pubDate>Fri, 29 Jan 2021 14:00:40 +0000</pubDate>
      <link>https://dev.to/johndemian/website-speed-testing-is-this-still-a-thing-1kgh</link>
      <guid>https://dev.to/johndemian/website-speed-testing-is-this-still-a-thing-1kgh</guid>
      <description>&lt;p&gt;While it might not be on the top of your to-do list, speed testing is an important part of your development process. Most people do understand this but at the same time don’t have a clear grasp of what it actually involves, what to look for and how to fix these issues.&lt;/p&gt;

&lt;p&gt;One of the most common and obvious issues with our website is the resources that take too long to load. These can be anything from fonts and Images to different plugins and javascript files that slow down the loading of your website.&lt;/p&gt;

&lt;p&gt;There are several ways to measure these load times and I’m going to get to these but first I’d like to cover some of the “lingo” that you might already be aware of.&lt;/p&gt;

&lt;h2&gt;
  
  
  Time to first byte and first meaningful paint
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;TTFB and FMP&lt;/strong&gt;. &lt;a href="https://sematext.com/blog/website-performance-metrics/"&gt;Time to first byte&lt;/a&gt; and First meaningful paint are two very important metrics that you need to pay attention to. They will show you when your website starts loading and the second your website starts displaying information.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Load times&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;One of the most important aspects of optimization is the speed at which your website loads. There are lots of reasons why your website is loading slowly and one of them is your server. Measuring your** time to first byte** will let you know if you have an issue with the response time of your server.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Render-blocking code&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Another reason why your website loads slowly is that you have code that blocks the rendering of your website. This could be Javascript, CSS or any other type of code that might block the rendering of the current webpage. This is one place you can’t afford to cut corners as it will directly impact the experience your users have on your website.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;HTTP Requests&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The next thing to look for is your requests. Every time you load a website, there are a series of requests being made to the servers. Every request will have a response and each server will have a set number of concurrent requests it can handle. The more requests you have, the more requests your server will have to deal with, and the longer it will take to respond.&lt;/p&gt;

&lt;p&gt;These requests can be hard to track and most often than not the number of requests fluctuates up and down especially if you are working with any third-party services. To measure and keep track of these requests you’ll want to use a &lt;a href="https://sematext.com/guides/synthetic-monitoring/"&gt;synthetic monitoring&lt;/a&gt; service like &lt;strong&gt;Sematext Synthetics&lt;/strong&gt; &lt;em&gt;(and here’s the shameless plug)&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FnW8QfFj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/themes/sematext-next/inc/images/synthetic-monitoring/sm-2020-website-performance.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FnW8QfFj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/themes/sematext-next/inc/images/synthetic-monitoring/sm-2020-website-performance.jpg" alt="alt_text" title="image_tooltip"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Getting rid of the issues&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Here’s where things really get complicated. There’s no one-size-fits-all solution when it comes to website speed. Every example will have its own particularities that will make them very different from one another. &lt;/p&gt;

&lt;p&gt;Usually, this is where I shamelessly plug the awesome tools that &lt;a href="http://sematext.com"&gt;Sematext.com&lt;/a&gt; - the company I work for - offers but I’m going to try to talk about a few general ways that can help you decrease those long load time and increase your website speed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lower the load times
&lt;/h3&gt;

&lt;p&gt;Big long times are the most popular issues that you’ll run into. Sometimes something as easy as using a CDN might help you out, other times you’ll have to start compression images and minify large CSS and JS files.&lt;/p&gt;

&lt;p&gt;Of course, there are going to be times when even if you did this, your site will load slowly regardless, in which case you’ll have to dig a little deeper, benchmark your DNS response time and monitor your server resources.&lt;/p&gt;

&lt;h3&gt;
  
  
  Get rid of the render-blocking code
&lt;/h3&gt;

&lt;p&gt;There are a number of ways to defer render-blocking code and I’m going to cover the top two scenarios: Javascript and CSS.&lt;/p&gt;

&lt;p&gt;For Javascript, we can run a little script that will defer the scripts that would otherwise block the rendering of our pages. Here’s a little example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;script&amp;gt; 
function deferLoadingTheCode() { 
var element = document.createElement("script"); 
element.src = "delayTheCode.js"; document.body.appendChild(element); 
} 
window.addEventListener("load", deferLoadingTheCode, false); 
&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All you need to do is drop this somewhere in your &amp;lt;head&amp;gt; tag of your HTML and you should be good to go.&lt;/p&gt;

&lt;h3&gt;
  
  
  Excessive HTTP Request
&lt;/h3&gt;

&lt;p&gt;While this may not be as popular as the other issues, this too can cause a lot of head akes. Having loads of JavaScript, CSS, and image files can lead to too many HTTP requests. When a user visits your web page, the browser performs several requests to load each of these files – which can significantly reduce the page load speed.&lt;/p&gt;

&lt;p&gt;To fix this issue you can merge the files that are going to be used on a specific page like CSS or JS files. For images there’s a simple way to optimize this using sprites. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---Tt9sxOM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cssspritestool.com/imgs/Sprite_6.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---Tt9sxOM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cssspritestool.com/imgs/Sprite_6.gif" alt="alt_text" title="image_tooltip"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With tools like &lt;a href="https://cssspritestool.com/"&gt;CSSspritetool &lt;/a&gt;and &lt;a href="https://css.spritegen.com/"&gt;Sprintegen&lt;/a&gt;, you can combine multiple images into one and display them based on CSS variables.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s next?
&lt;/h2&gt;

&lt;p&gt;Identifying these issues is usually more difficult than it seems. While your website might be loading fine on your end, people that have different machines, connections, are from different countries might have a different experience.&lt;/p&gt;

&lt;p&gt;The best way to go about fixing these is by using a monitoring tool that will keep an eye out for you. There are lots of different ones available from open source to SaaS, expensive to more affordable ones and features usually vary quite a bit. I’d recommend you take the time to shop around before you commit to any one tool. Here’s a little list I’ve made of the&lt;a href="https://sematext.com/blog/website-performance-speed-test-tools/"&gt; top tools for testing your website’ speed&lt;/a&gt; I’ve tried and how they stack up to each other.&lt;/p&gt;

</description>
      <category>testing</category>
      <category>webdev</category>
      <category>monitoring</category>
    </item>
    <item>
      <title>Website Benchmarks - Everything you need to know</title>
      <dc:creator>John Demian</dc:creator>
      <pubDate>Wed, 26 Aug 2020 16:39:52 +0000</pubDate>
      <link>https://dev.to/johndemian/website-benchmarks-everything-you-need-to-know-5eke</link>
      <guid>https://dev.to/johndemian/website-benchmarks-everything-you-need-to-know-5eke</guid>
      <description>&lt;p&gt;Time to first byte, first contentful paint, DNS response time, round-trip time, and the list goes on and on. With all of these &lt;a href="https://sematext.com/blog/website-performance-metrics/" rel="noopener noreferrer"&gt;metrics&lt;/a&gt;, how are you supposed to know which are the most important ones that you should monitor?&lt;/p&gt;

&lt;p&gt;To understand what those numbers are supposed to look like, you’ll have to get a reference point. Something that’s supposed to give you a starting point. A number that you’ll be able to compare to future results to understand if your performance improved or degraded over time. This process is called &lt;strong&gt;website performance benchmarking&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why Benchmark Your Website?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;You’ll want to run benchmarks on your website because having insights on how it performs will allow you to make decisions that will ensure a competitive edge. It will paint a clearer picture of where you stand compared to your competition and what areas can be improved or need your immediate attention.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What Metrics To Benchmark&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Indeed, each metric can provide insights into performance and where you stand in relation to other similar-sized sites in the same industry. However, there are dozens of metrics to look at, which can make users lose focus on those that are important. To help you get started, I selected the &lt;strong&gt;main metrics&lt;/strong&gt; I recommend you should monitor for benchmarking purposes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;TTFB&lt;/strong&gt; – time to first byte, a &lt;a href="https://sematext.com/blog/website-performance-metrics/" rel="noopener noreferrer"&gt;website performance metric&lt;/a&gt; that tells you how fast your server responds with the first package.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Page size&lt;/strong&gt; – the total size of all your CSS, javascript, images, HTML.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Number of requests&lt;/strong&gt; – each time you load a file, image, or script, you’ll create a request. The more you have, the more time the server will take serving them.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;First Contentful Paint&lt;/strong&gt; – the moment your hero section is visible and fully loaded&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;TTI&lt;/strong&gt; – time to interactive, the metric that tells you the moment the site can respond to user input.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Page speed and load time&lt;/strong&gt; – this is the point where every single resource is fully loaded and can respond to user input.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I could go on for a while, but I think these are the ones you should start with. They give you a solid baseline for benchmarking and provide intel as far as any performance issues you might be having and give data to compare with your competitors.&lt;/p&gt;

&lt;p&gt;I’d suggest making a note of the first benchmark and the values you are seeing. You’ll want to come back periodically and check against them to understand where you stand as time passes.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;How To Benchmark a Website: Benchmarking Example&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This process first involves finding a benchmark website to gather results against. As a starting point, &lt;a href="http://httparchive.org/interesting.php" rel="noopener noreferrer"&gt;HTTP Archive&lt;/a&gt; offers some interesting statistics about the average website’s size by content, individual response time, HTML document transfer size, and so on. However, this information is quite generic and not specific to a particular industry which may be known for fast loading sites.&lt;/p&gt;

&lt;p&gt;This is where benchmarking tools come into play. Tools like &lt;a href="https://sematext.com/synthetic-monitoring/" rel="noopener noreferrer"&gt;Sematext Synthetics&lt;/a&gt;, our &lt;a href="https://sematext.com/guides/synthetic-monitoring/" rel="noopener noreferrer"&gt;synthetic monitoring&lt;/a&gt; software, can help you run a wide range of tests on your website like load times, third party APIs stability, web performance across multiple devices, and much more.&lt;/p&gt;

&lt;p&gt;Getting Sematext Synthetic set up is quite easy. After you’ve &lt;a href="https://apps.sematext.com/ui/registration" rel="noopener noreferrer"&gt;signed up&lt;/a&gt; for a free account, you can start adding the properties you want to monitor.&lt;/p&gt;

&lt;p&gt;You either create a project or use one that’s already there. For this example, you’ll go with &lt;a href="https://sematext.com/guides/synthetic-monitoring/" rel="noopener noreferrer"&gt;Browser Monitors&lt;/a&gt;. Select the regions you want your website the request to come from and hit next.&lt;/p&gt;

&lt;p&gt;On this step, you’ll describe precisely the type of action you want to request. It can be basic such as “open the site and take a snapshot,” or go as deep as “sign in and add to cart.” Sematext offers many pieces of code as examples, so there’s not going to be a lot of fidgeting around trying to figure out the right code.&lt;/p&gt;

&lt;p&gt;For my example I went with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;script&amp;gt;

// This script loads the webpage and takes a screenshot of the loaded page.

async function testPage(page) {

  // Replace &amp;amp;lt;YOUR-WEBPAGE-URL&amp;gt; with URL of the webpage to be monitored

  await page.goto("&amp;amp;lt;YOUR-WEBPAGE-URL&amp;gt;");

  await page.screenshot({ path: 'screenshot.png' });

}

module.exports = testPage;

&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The last step before going Live with the monitor is &lt;a href="https://sematext.com/blog/monitoring-alerting/" rel="noopener noreferrer"&gt;setting up the alerts&lt;/a&gt;. These are thresholds that will trigger notifications whenever certain conditions are met.&lt;/p&gt;

&lt;p&gt;You can have multiple conditions here and, as you might have figured it out, you have to set a threshold value for each one and hit “Create.”&lt;/p&gt;

&lt;p&gt;And with that, you’ve got yourself all set up and ready to start benchmarking your website at a preset interval. The alerts you have set up based on the criteria selected above will send you a message the second your website starts “Acting up.” This will ensure you’ll get to have an early warning system that will let you tackle issues before they impact your users and their &lt;a href="https://sematext.com/blog/how-to-use-your-apdex-score-to-measure-user-satisfaction/" rel="noopener noreferrer"&gt;satisfaction level&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The dashboard will give you a bird’s-eye view of all the &lt;a href="https://sematext.com/blog/website-monitoring-tools/" rel="noopener noreferrer"&gt;websites you monitor &lt;/a&gt;and details on their current status, latest failures, average response time, and other valuable information.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsematext.com%2Fwp-content%2Fuploads%2F2020%2F08%2Fwebsite-performance-benchmarking-post-3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsematext.com%2Fwp-content%2Fuploads%2F2020%2F08%2Fwebsite-performance-benchmarking-post-3.png" title="Sematext website performance" alt="alt_text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But it’s only when you start digging a little deeper that you get into the more impressive parts of Sematext Synthetics. You can look at individual tests and see how the website performed and if they meet the criteria you’ve previously established. You’ll get to see the loaded resources, the logs that were sent back and forth, details on page size, response time, number of requests, and many more.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsematext.com%2Fwp-content%2Fuploads%2F2020%2F08%2Fwebsite-performance-benchmarking-post-1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsematext.com%2Fwp-content%2Fuploads%2F2020%2F08%2Fwebsite-performance-benchmarking-post-1.png" title="Sematext website perfromance" alt="alt_text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Website Benchmarking Best practices: The Do’s and Don’ts&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Just like pretty much everything else, there are certain benchmarking pet peeves that you should be aware of, little details that you should keep in mind when performing a benchmark analysis.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;1. Compare with similar web pages&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;When picking pages, you want to benchmark against, make sure you pick similar ones. Testing a product page vs. a category page of an ecommerce website will get you some really skewed results and might not provide the valuable information you were looking for.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;2. Test multiple locations and devices&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Your users will use your website from different locations around the world and your website needs to be able to serve people in India just as fast as people in the US. Some may use mobile devices while others will use laptops, so keeping this in mind will provide a better understanding of how &lt;a href="https://sematext.com/blog/what-is-latency/" rel="noopener noreferrer"&gt;latency&lt;/a&gt; affects their &lt;a href="https://sematext.com/blog/ux-metrics/" rel="noopener noreferrer"&gt;user experience&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;3. Benchmark against competitors instead of averages&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Averages can be misleading when you compare sites from different industries. If you take the average page speed of google.com and compare it against your e-commerce store that has 100K+ products, it will make you think your site is way off in terms of performance even though this might not necessarily be the case.&lt;/p&gt;

&lt;p&gt;Instead of just looking at averages, you should compare your performance with that of your competitors. This provides a real industry average that what you are probably used to.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;4. Dig deeper&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Load time is a good general indicator of website performance, but it might not be the right thing to look at. You’ll want to dig a little deeper to understand how your users are experiencing your website, and the first metrics to look at are time to first byte and time to interactive. After you’ve’ established these two, you can move on to others like round trip time, request numbers, etc.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;5. Understand what your site “does” when you are not looking&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;You can’t run manual tests on your website all the time. Instead, you want to schedule these tests to make sure your performance remains consistent throughout the day. Scheduling tests at specific times and from different locations will give you a better idea of how your website performs.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;6. Monitor third-party APIs&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Actually, they can be trusted but as the Russian proverb goes, “Trust but verify.” So, make sure you &lt;a href="https://sematext.com/blog/api-monitoring/" rel="noopener noreferrer"&gt;monitor your APIs&lt;/a&gt; because they can heavily impact&lt;a href="https://sematext.com/guides/what-is-real-user-monitoring/" rel="noopener noreferrer"&gt; how users experience your website&lt;/a&gt;.&lt;/p&gt;

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

&lt;p&gt;As I’ve already mentioned, website benchmarking, while sounding complicated, is a rather simple process that will help you establish a starting point for your performance. It will let you know the baseline you’ll have to work with and help evaluate your website with that of your competitors.&lt;/p&gt;

&lt;p&gt;A thorough benchmark analysis gives you all the information you need to optimize your site by pinpointing exactly where the problem areas are.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://sematext.com/synthetic-monitoring/" rel="noopener noreferrer"&gt;Sematext Synthetics&lt;/a&gt; is an awesome benchmarking tool that will help you figure out where you stand compared to your competition, figure out performance vulnerabilities, and prevent bad user experience. All this&lt;a href="https://sematext.com/pricing/#synthetics" rel="noopener noreferrer"&gt; starting at just $2/month&lt;/a&gt; and a 30 days trial period for you to test it out!&lt;/p&gt;

&lt;p&gt;Read &lt;a href="https://sematext.com/blog/synthetic-api-website-monitoring/" rel="noopener noreferrer"&gt;this blog post&lt;/a&gt; to learn more about how Synthetics works and why you should use it. Furthermore, we’ve created a few articles that will shed more light on how to speed up and improve your site’s overall performance:&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://sematext.com/blog/website-monitoring-tools/" rel="noopener noreferrer"&gt;Top 10 best website performance monitoring tools&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://sematext.com/blog/website-performance-speed-test-tools/" rel="noopener noreferrer"&gt;Top 15 website speed testing tools&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://sematext.com/blog/api-monitoring/" rel="noopener noreferrer"&gt;Guide to API monitoring: Basic metrics and choosing the right tools&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Previously published at &lt;a href="https://sematext.com/blog/website-benchmarking/" rel="noopener noreferrer"&gt;https://sematext.com/blog/website-benchmarking/&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>benchmarks</category>
    </item>
    <item>
      <title>Website Speed Optimization: Tools &amp; Best Practices</title>
      <dc:creator>John Demian</dc:creator>
      <pubDate>Tue, 11 Aug 2020 10:37:39 +0000</pubDate>
      <link>https://dev.to/johndemian/website-speed-optimization-tools-best-practices-4pnn</link>
      <guid>https://dev.to/johndemian/website-speed-optimization-tools-best-practices-4pnn</guid>
      <description>&lt;p&gt;There are a lot of reasons why people choose to shop at one online store over another or pick one streaming service over another from the type of service they are getting to pricing, quality and, you’ve guessed it from the title, speed. The speed to which I’m referring is the speed at which the website loads and reacts to user input and in one of my &lt;a href="https://sematext.com/blog/what-is-latency/"&gt;previous &lt;/a&gt;articles I’ve talked about how big of a difference even a two-second extra delay makes.&lt;/p&gt;

&lt;p&gt;In this article, I will go over some of the &lt;strong&gt;speed testing basics like the metrics&lt;/strong&gt; you need to watch out for and the tools you’ll need to test and track speed issues and performance. The list will include the &lt;strong&gt;best website testing tools that are both free and paid&lt;/strong&gt; and I’ll be sure to mention which is which.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Can Website Speed Testing Tools Help?
&lt;/h2&gt;

&lt;p&gt;I believe it’s important to understand exactly how speed testing can help you in delivering a &lt;a href="https://sematext.com/blog/ux-metrics/"&gt;better experience for your users&lt;/a&gt; so I figured I’d come up with a list of the most common metrics to measure for and issues to measure.&lt;/p&gt;

&lt;p&gt;Resources that take too long to load. These can be anything from Fonts and Images to different plugins and JS files that slow down the loading of your website.&lt;/p&gt;

&lt;p&gt;TTB and FMP. &lt;a href="https://sematext.com/blog/website-performance-metrics/"&gt;Time to first byte&lt;/a&gt; and First meaningful paint are two very important metrics that you need to pay attention to. They will show you when your website starts loading and the second your website starts displaying information.&lt;/p&gt;

&lt;p&gt;Load time, number of requests, and page sizes. You’ll want to keep an eye on these as they can dramatically increase the load time of your website.&lt;/p&gt;

&lt;p&gt;HTTP Headers. HTTP headers is how servers communicate with the server by sending information back and forward via a request or response. You’ll need to test these responses and requests to make sure you are getting and sending the right message between the two. This also comes in handy when you are trying to debug different errors you might have.&lt;/p&gt;

&lt;h2&gt;
  
  
  Website Speed 101: Basic Concepts to Get Started
&lt;/h2&gt;

&lt;p&gt;Before we dive in the list of tools we’ll use to optimize our website, I think we should take a second look at the basic concepts behind website speed optimization.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Big load times&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;One of the most important aspects of optimization is speed at which your website loads. There are lots of reasons why your website is loading slowly and one of them is your server. Measuring your time to first byte will let you know if you have an issue with the response time of your server and if that’s the case then I might suggest you look towards a CDN to help you solve this particular problem.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Render-blocking code&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Another reason why your website loads slowly is that you have code that blocks the rendering of your website. This could be Javascript, CSS or any other type of code that might block the rendering of the current webpage. This is one place you can’t afford to cut corners as it will directly impact the experience your users have on your website.&lt;/p&gt;

&lt;p&gt;There are a number of ways to defer render-blocking code and I’m going to cover the top two scenarios: Javascript and CSS.&lt;/p&gt;

&lt;p&gt;For Javascript, we can run a little script that will defer the scripts that would otherwise block the rendering of our pages. Here’s a little example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;script&amp;gt; function deferLoadingTheCode() {
var element = document.createElement("script"); 
element.src = "delayTheCode.js"; 
document.body.appendChild(element); 
} 
window.addEventListener("load", deferLoadingTheCode, false); &amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All you need to do is drop this somewhere in your &amp;lt;head&amp;gt; tag of your HTML and you should be good to go.&lt;/p&gt;

&lt;p&gt;The next part to tackle is CSS. With your CSS the goal is to get it as small as possible and there are two ways to do it, one would be to remove all the unnecessary classes and either remove them altogether or move them to a different CSS file that can be loaded on other pages or after the critical content of the page has loaded.&lt;/p&gt;

&lt;p&gt;The second thing you could do is minify your CSS file. This is a process where you take the unnecessary characters from your files that would otherwise take up space thus taking longer to load. Minifying doesn’t only apply to CSS, you can also remove the unnecessary characters from Javascript and HTML too. The characters I’m referring to as unnecessary are whitespace characters (thing spacebar and the enter key), comments, and block delimiters. Most often then not developers use a piece of software to get this done.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;HTTP Requests&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The next thing to look for is your requests. Every time you load a website, there are a series of requests being made to the servers. Every request will have a response and each server will have a set number of concurrent requests it can handle. The more requests you have, the more requests your server will have to deal with, and the longer it will take to respond.&lt;/p&gt;

&lt;p&gt;These requests can be hard to track and most often than not the number of requests fluctuates up and down especially if you are working with any third party services. To measure and keep track of these requests you’ll want to use a monitoring service like &lt;a href="https://sematext.com/synthetic-monitoring/"&gt;Sematext Synthetics&lt;/a&gt;. With a simple setup, you can track the overall number of requests, load time, responses, and much more. We’ll talk more about Sematext Synthetics in a second.&lt;/p&gt;

&lt;p&gt;But it’s time to get to the main event. The reason why you are here in the first place, the top website speed testing tools you can use right now. Without further ado, let’s jump right in.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 10 Best Website Speed Testing Tools
&lt;/h2&gt;

&lt;p&gt;Now that you got the basics of website speed testing, here are some of the best tools to help you test page load and improve website performance.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1. Sematext Synthetics&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SQ7IEJhp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/07/speed-test-tools-7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SQ7IEJhp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/07/speed-test-tools-7.png" alt="alt_text" title="Sematext.com"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While still being new to the Sematext Suite, &lt;a href="https://sematext.com/guides/synthetic-monitoring/"&gt;Synthetics&lt;/a&gt; has quickly become a favorite amongst our users. It’s simple yet reliable and you can &lt;a href="https://sematext.com/blog/synthetic-api-website-monitoring/"&gt;monitor the availability of your APIs&lt;/a&gt; and websites from multiple locations across the globe, measure performance across devices and browsers, and identify issues with third-party resources.&lt;/p&gt;

&lt;p&gt;Getting started is really easy and only takes a couple of minutes before you start to actually monitor your resources with the help of the intuitive UI. You can set up different conditions that will trigger an &lt;a href="https://sematext.com/alerts/"&gt;alert&lt;/a&gt; so you’ll be immediately notified when something goes wrong.&lt;/p&gt;

&lt;p&gt;Sematext Synthetics comes with a 14-day trial and plans start from $29/month and offers 40 HTTP and 5 browser monitors with data retention of 30 days. Of course, this can all be customized to fit your needs but that’s not all. You can also choose to go with the Pay-as-you-go plan which lets you set up individual monitors for $2/month.&lt;/p&gt;

&lt;p&gt;Read more about how Sematext Synthetics can help &lt;a href="https://sematext.com/blog/synthetic-api-website-monitoring/"&gt;monitor your APIs and website&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;2. Google PageSpeed Insights&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0FS2Uce---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/07/speed-test-tools-5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0FS2Uce---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/07/speed-test-tools-5.png" alt="alt_text" title="image_tooltip"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For years Google PageSpeed Insights has been the goto tool for testing and grading your website. It’s a simple tool created by Google that benchmarks websites and grades them on a scale of 1 to 100 for both mobile and desktop. The higher the number, the faster the website is.&lt;/p&gt;

&lt;p&gt;The UI is quite easy with only one input field for the URL. Once the test is run you’ll get detailed information about things like render-blocking code, TTFB, page sizes, and more. Under each section, you’ll get a list of recommended paths of action that should help speed up the website.&lt;/p&gt;

&lt;p&gt;While many other tools in this list allow you to customize requests, set up alerts, and select different locations to run your tests, Google PageSpeed Insights will not give you those options. On the other hand, it’s completely free and doesn’t require registration.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;3. Pingdom Speed Test&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Eu7Og1DS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/07/speed-test-tools-11.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Eu7Og1DS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/07/speed-test-tools-11.png" alt="alt_text" title="image_tooltip"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pingdom is another well-known website speed test tool that’s been around for ages. It requires no login to use and the reports are less detailed then what you’d get from Google PageSpeed Insights. The site’s performance is graded from 0 to 100 and then has a breakdown of the response codes, content size, request types, requests by domain and a waterfall chart that lets you see details on your files load times.&lt;/p&gt;

&lt;p&gt;Their free tool allows you to run a single test from any of their 70 locations and if you sign up to their Synthetics solution which starts at $10/month for 10 uptime checks you can set up page &lt;a href="https://sematext.com/blog/website-monitoring-tools/"&gt;speed monitoring&lt;/a&gt; as well as alerting.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;4. WebPageTest&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SKR-P-Q---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/07/speed-test-tools-15.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SKR-P-Q---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/07/speed-test-tools-15.png" alt="alt_text" title="image_tooltip"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;WebPageTest.org is an open-source website performance testing tool that allows you to benchmark your website from one of their 40 locations and a wide range of devices. You can also choose to simulate your tests over a slow mobile network or a fast 4G network. The result will be graded from F to A and will include information on compression, TTFB, caching, waterfall charts for the resources load speed and more.&lt;/p&gt;

&lt;p&gt;It also features a rather special test where they run a test 3 times and displays all three data sets. This helps figure out if the DNS or CDN might cause any delay and if the server can respond to all requests.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;5. GTmetrix&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bwo88_BB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/07/speed-test-tools-12.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bwo88_BB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/07/speed-test-tools-12.png" alt="alt_text" title="image_tooltip"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GTmetrix allows you to get detailed information on your page speed, timings, performance score and much more. GTmetrix also provides information about how to fix the issues that were exposed by the test.&lt;/p&gt;

&lt;p&gt;Without registering you can only run a test from one location Vancouver, Canada but after you sign up for a free account you’ll get to choose your location, different browsers and even the connection type. This should paint a better picture of how your website works in different scenarios.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;6. Varvy Pagespeed Optimization&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EROW0saI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/07/speed-test-tools-9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EROW0saI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/07/speed-test-tools-9.png" alt="alt_text" title="image_tooltip"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://varvy.com/pagespeed/"&gt;Varvy PageSpeed Optimization&lt;/a&gt; is a free tool that tests your website performance and provides tips on how to create a better experience for your users. It was created by Patrick Sexton, who also created Getlisted.org.&lt;/p&gt;

&lt;p&gt;Varvy PageSpeed Optimization breaks down your report in 5 sections describing the general summary of the test, a resource map, details on CSS delivery, Javascript usage, and a number of separate information on Image Optimization, browser caching, compression and server response.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;7. Uptrends&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HxnXC9cx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/07/speed-test-tools-6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HxnXC9cx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/07/speed-test-tools-6.png" alt="alt_text" title="image_tooltip"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Uptrends offers a straightforward test from one of 10 locations and you can configure the test to run either from a mobile device or a desktop. For the desktop test, you can also pick the resolution of the screen one of four browsers ( Chrome, Firefox, PhantomJS, and IE) and bandwidth throttling to test the site under different speed scenarios.&lt;/p&gt;

&lt;p&gt;There usually is a little quiet and there are no alerts that can be set up with the free version of the test but if you sign up for their Uptrends Synthetics product, you’ll get all of those plus more for $12 a month for 10 basic monitors, RUM and 60 message credits.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;8. dotcom-monitor&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wUSLRTE9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/07/speed-test-tools-3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wUSLRTE9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/07/speed-test-tools-3.png" alt="alt_text" title="image_tooltip"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With dotcom-monitor, you get 25 different locations and 7 different browsers that include Blackberry, which should make me think they really need to update their service or perhaps they are historians.&lt;/p&gt;

&lt;p&gt;After you run the test you’ll get graded based on your load time and get details on your server responses. You’ll also be able to check what a repeat visit looks like for someone that comes to your website a second time and has already cached resources on their machine. You’ll also get a detailed page speed insight report generated by Lighthouse.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;9. Site 24×7&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TOfqvjoM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/07/speed-test-tools-4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TOfqvjoM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/07/speed-test-tools-4.png" alt="alt_text" title="image_tooltip"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Site24x7 is a simple product that offers a free alternative to Pingdom. Their “Free Forever plan” offers 5 monitors with email notification which is probably enough for any small website.&lt;/p&gt;

&lt;p&gt;Their premium plans start at $9/month (paid annually) and get you 10 monitors and 1 synthetic web transaction, status pages, 500mb of logs, 100K RUM views, and over 110 testing locations scattered across the world.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;10. Google Chrome DevTools&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TS3hZ5hH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/07/speed-test-tools-13.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TS3hZ5hH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/07/speed-test-tools-13.png" alt="alt_text" title="image_tooltip"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you are developing your website with Chrome then most likely you are already familiar with it. It’s a simple tool that lets you see a waterfall timeline with all your resources and details on what’s costing you precious load time.&lt;/p&gt;

&lt;p&gt;To access it you need to have Chrome installed (dooh) and then you open it up pressing F12 if you are on a windows machine or CMD + Option + I if you are using a MAC.&lt;/p&gt;

&lt;p&gt;There’s no alerting, no fancy location picking options but it’s free and comes with your browser and requires no login or registration whatsoever.&lt;/p&gt;

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

&lt;p&gt;As you can probably there are a lot of options to choose from, each with their unique feature and it’s up to you to test them and figure out which one works best for you. I think it’s worth noting that speed testing is something you should be doing long after you’ve finished developing the website. Over time things will change especially if you are using third parties APIs and you’ll want to stay on top of any changes that might happen in the meantime.&lt;/p&gt;

&lt;p&gt;Once you know where the bottlenecks are you can begin to fix them. Check out our post with tips to help improve website speed performance to get started. For full range visibility, explore our curated selection of the &lt;a href="https://sematext.com/blog/website-monitoring-tools/"&gt;best website monitoring tools&lt;/a&gt; available today and check out &lt;a href="https://sematext.com/blog/monitoring-alerting/"&gt;Guide to alerting and monitoring&lt;/a&gt; to learn how to pick the best monitoring software for your particular use case.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally posted on&lt;a href="https://sematext.com/blog/website-performance-speed-test-tools/"&gt; Sematext.com&lt;/a&gt;, July 23rd 2020&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>testing</category>
    </item>
    <item>
      <title>20+ User Experience (UX) Metrics Every Product Manager Should Measure</title>
      <dc:creator>John Demian</dc:creator>
      <pubDate>Mon, 18 May 2020 00:41:32 +0000</pubDate>
      <link>https://dev.to/johndemian/20-user-experience-ux-metrics-every-product-manager-should-measure-54f7</link>
      <guid>https://dev.to/johndemian/20-user-experience-ux-metrics-every-product-manager-should-measure-54f7</guid>
      <description>&lt;p&gt;&lt;strong&gt;User experience (UX) is everything today.&lt;/strong&gt; 

Poor digital experience can easily and quickly reflect in your client list and thus, your bottom line. It starts from the first user interaction with your website or webapp and ends with… well, it never quite ends. User experience is, in fact, a continuous process that goes on and on until the user decides to stop using your product. That’s probably why the number of potential UX metrics is ever-growing and now there’s a lot that you can track.&lt;/p&gt;

&lt;p&gt;To successfully measure user experience you need to &lt;strong&gt;monitor both usability and business KPIs&lt;/strong&gt;, from real user to engagement, usability, adoption, as well as retention. Still, while looking at the bigger picture, the key is to select the right metrics to keep tabs on and optimize to improve user interactions and overall satisfaction with your website or webapp. With the help of UX performance indicators, you can quantify and calculate the ROI of the changes you’ve brought to your product in terms of experience, which is otherwise impossible.&lt;/p&gt;

&lt;p&gt;In this post, we are going to explore what are the most important UX metrics you should monitor to ensure flawless user experience.&lt;/p&gt;

&lt;h2 id="toc-how-are-ux-metrics-defined-0"&gt;How Are UX Metrics Defined?&lt;/h2&gt;

&lt;p&gt;There’s no universal recipe for what metrics are best. It all depends on the industry you are in and your business goals. You need to choose the ones that will help you measure your progress and that impact the decisions the most.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UX metrics&lt;/strong&gt; measure a product’s user experience. Unlike other types of metrics such as sales, finance, or marketing, they are difficult to quantify since they reflect human behavior and attitude. Big brands such as Google, Airbnb, or YouTube use UX metrics to improve the user experience of their products to keep their customers happy.&lt;/p&gt;

&lt;p&gt;This data is hard to translate into numbers, but there are some useful frameworks that made it possible such as Forrester’s Customer Experience which groups these metrics into three main categories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Descriptive metrics&lt;/strong&gt; that provide information on what happened and include usability and real user monitoring metrics.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Perception metrics&lt;/strong&gt; that show how customers perceived what happened and are illustrated by engagement metrics.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Outcome metrics&lt;/strong&gt; that describe what customers did or expected to do based on their perceptions. This category includes adoption and retention performance metrics.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is an example breakdown of the &lt;strong&gt;most important UX metrics to track, impacting each category&lt;/strong&gt;:&lt;/p&gt;

&lt;h2 id="toc-1-real-user-monitoring-metrics-1"&gt;1. Real User Monitoring Metrics&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://sematext.com/experience/"&gt;Real User Monitoring&lt;/a&gt; (RUM for short or end-user experience monitoring), which you can read all about in our &lt;a href="https://sematext.com/guides/what-is-real-user-monitoring/"&gt;RUM guide&lt;/a&gt;, is a technology that allows you to monitor and analyze your customers’ experience throughout your website or application and see exactly how they interact with it. It enables you to see everything from HTTP requests, crashes, timeouts to Apdex scores that speak to your users’ satisfaction with your product or service.&lt;/p&gt;

&lt;p&gt;There are many benefits to using a &lt;a href="https://sematext.com/blog/real-user-monitoring-tools/"&gt;RUM solution&lt;/a&gt; as every little deviation from optimal performance across &lt;a href="https://sematext.com/blog/what-is-latency/"&gt;locations&lt;/a&gt; or devices can have major consequences to your bottom line. Not only that, but by implementing RUM in your business will help your developers have an early warning system that will tell them when things start to go sideways by setting alerts for things like Apdex metrics, page load times, timeouts, and errors, etc.&lt;/p&gt;

&lt;p&gt;You’ll have actionable insights about what’s affecting your users’ experience with your product and have the option to fix the issue before you have a catastrophic failure.&lt;/p&gt;

&lt;p&gt;There are several important RUM metrics you need to consider for your webapp in order to ensure optimal performance for all your users:&lt;/p&gt;

&lt;h3 id="toc-apdex-and-user-satisfaction-score-2"&gt;Apdex and User Satisfaction Score&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://sematext.com/blog/how-to-use-your-apdex-score-to-measure-user-satisfaction/"&gt;User Satisfaction Score or Apdex&lt;/a&gt;&lt;/strong&gt; is a measurement of your users’ level of satisfaction based on the response time of request(s) when interacting with your website or application.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tObOYtD0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/04/PM-UX-blog-post-1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tObOYtD0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/04/PM-UX-blog-post-1.jpg" alt="apdex score"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The way you calculate it is quite simple based on the Satisfied count which is the number of requests, the tolerating count which is the number of requests, and the Total samples is basically all your requests.&lt;/p&gt;

&lt;h3 id="toc-http-requests-3"&gt;HTTP Requests&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Load times&lt;/strong&gt; are extremely important to monitor as they directly impact how your users perceive your service and that will influence their decision whether or not to become customers.&lt;/p&gt;

&lt;p&gt;Based on the number of your separate requests and their response time, the load time for your webapp can be influenced dramatically.&lt;/p&gt;

&lt;h3 id="toc-sematext-as-a-rum-solution-4"&gt;Sematext as a RUM solution&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://sematext.com/experience/"&gt;Sematext Experience&lt;/a&gt;, our RUM solution, will give you insights into your load times by breaking them down into small components, providing a birds-eye view of what influences your app speed.&lt;/p&gt;

&lt;p&gt;A simple screen will tell you exactly where your system is underperforming and where is the most room for improvement.&lt;/p&gt;

&lt;p&gt;Apdex is also a big part of Sematext, it’s how we tell if the website is raising to customer expectations. You’ll be able to set up simple alerts that will notify when your users’ satisfaction is below a certain threshold so that you can take the necessary steps to correct the issue.&lt;/p&gt;

&lt;p&gt;Learn how Sematext compares to other tools from our blog post where we covered the &lt;a href="https://sematext.com/blog/real-user-monitoring-tools/"&gt;best RUM solutions&lt;/a&gt; available today.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QwC4Or1h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/04/ux-metrics-post-image2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QwC4Or1h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/04/ux-metrics-post-image2.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Understanding how your service caters to your worldwide audience is going to be a crucial aspect of your business. Within the Geography tab, you’ll be able to tell exactly which regions your users are having a difficult time loading the app or what type of device/connection isn’t working as expected.&lt;/p&gt;

&lt;h2 id="toc-2-user-engagement-metrics-5"&gt;2. User Engagement Metrics&lt;/h2&gt;

&lt;p&gt;Different user experience engagement metrics give you great insight into how hooked users are with your website, from the frequency of usage to depth and volume of usage. They show what users are or aren’t interested in so that you can make quick changes and avoid mistakes that could drive them away. Check out &lt;strong&gt;some of the most important engagement metrics you should keep track of&lt;/strong&gt; to improve user experience.&lt;/p&gt;

&lt;h3 id="toc-unique-visitors-6"&gt;Unique Visitors&lt;/h3&gt;

&lt;p&gt;Unique visitor is a term used to describe a person that visits a website at least once during the reporting period. The &lt;strong&gt;unique visitors&lt;/strong&gt; metric is the number of distinct visitors visiting a page or multiple pages on your website in a given time.&lt;/p&gt;

&lt;h3 id="toc-new-vs-returning-visitors-7"&gt;New vs Returning Visitors&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;New visitors&lt;/strong&gt; are users who are navigating to your website for the first time on a specific device.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Returning visitors&lt;/strong&gt; are those who have previously visited your website. Google considers returning visitors as those who have returned from the same device within a two-year time frame. If a user visits a website after more than two years, then it’s counted as a new visitor. A low number of returning visitors can be a sign of poor user experience or that your product fails to deliver to its promises.&lt;/p&gt;

&lt;p&gt;This metric is presented as a pie graph, comparing the ratio between the two. You should always have an influx of new traffic – 50-70% is a good range, but as usual, it depends on the industry you are in and what are your website goals. A higher level of new visitors equals higher revenue – as long as your returning customers are returning.&lt;/p&gt;

&lt;h3 id="toc-pageviews-8"&gt;Pageviews&lt;/h3&gt;

&lt;p&gt;When it comes to measuring website traffic, you want to look at pageviews.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pageview&lt;/strong&gt; is the engagement metric measuring how many times users have accessed a particular page on your website within a given time frame. A higher number of pageviews could be a sign of interest, but it can also indicate that people are surfing your website without finding what they’re looking for. That’s why you need to look for context and correlate pageviews with other engagement metrics that we’ll discuss below.&lt;/p&gt;

&lt;h3 id="toc-time-on-page-9"&gt;Time on Page&lt;/h3&gt;

&lt;p&gt;There are two ways to look at time spent, both just as important: time spent on page and session length.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time spent&lt;/strong&gt; on page measures the time a user spends on a page on your website. It indicates interest, the more time users spend on the page, the more engaged they are and the better they like your content.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Session length&lt;/strong&gt; is the amount of time a user spends on your website from the moment they land on a page until they exit, or in between the first interaction the last on that they perform. Longer sessions indicate higher engagement. However, shorter session duration is not necessarily a bad sign. Ir could actually be a good thing, indicating that users have found what they were looking for. As mentioned earlier, it’s important to look at the bigger picture and see what other engagement performance metrics tell you.&lt;/p&gt;

&lt;h3 id="toc-pages-per-session-10"&gt;Pages per Session&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Pages per session&lt;/strong&gt; is the average number of pages viewed during a session on your website. More pages visited means that users are exploring more of your site and are more engaged. Knowing what users are doing on your website and what pages they are looking at makes it easier for you to detect user experience issues and see how certain parts of your website or webapp are performing.&lt;/p&gt;

&lt;h3 id="toc-conversion-rate-11"&gt;Conversion Rate&lt;/h3&gt;

&lt;p&gt;Customer engagement is key for driving conversions and overall profitability. So if your website or app feature desired actions you want users to take, such as signing up, filling up a form, making a transaction, etc., you’ll want to measure how many users are completing these steps or are getting converted.&lt;/p&gt;

&lt;p&gt;Thus, the &lt;strong&gt;conversion rate&lt;/strong&gt; is the percentage of users that follow a set of directions you want them to perform. This metric also allows you to see where users are dropping off in various stages of their experience navigating your website.&lt;/p&gt;

&lt;h2 id="toc-3-usability-metrics-12"&gt;3. Usability Metrics&lt;/h2&gt;

&lt;p&gt;Usability metrics reflect users’ behaviors, telling you what they actually do on your website, as well as how easy it was for them to accomplish what they were set to do. This is the most common category of success metrics that UX teams are already tracking. Let’s see which are the &lt;strong&gt;main usability metrics&lt;/strong&gt; you should use to monitor user experience:&lt;/p&gt;

&lt;h3 id="toc-task-success-rate-13"&gt;Task Success Rate&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Task success rate&lt;/strong&gt;, or task completion rate, is the percentage of users who have successfully executed a task. You can only measure the success rate if you are very specific as to what the end goal is, whether it’s to fill out a form, buy a product, etc.&lt;/p&gt;

&lt;p&gt;Although it says nothing about why users fail, task success rate is a good indicator to start measuring user experience.&lt;/p&gt;

&lt;p&gt;Naturally, users may have some difficulties when first using your product. It’s best that you measure success rate on going as they gain more experience. It will give you an idea about your product’s learning curve, which is a great indicator of user experience success. You want the success rate to be as high as possible.&lt;/p&gt;

&lt;p&gt;You can calculate task success rate by dividing the number of correctly completed tasks by the total number of attempts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Aj0gDJjj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/04/ux-metrics-post-image8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Aj0gDJjj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/04/ux-metrics-post-image8.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id="toc-time-on-task-14"&gt;Time-on-Task&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Time on task&lt;/strong&gt;, or task time, or task completion time, is the average time a user needs to complete a task successfully. It’s a useful metric as it tells you how certain actions affect user productivity, which usually plays a big role in how satisfied customers are. Needless to say, the shorter the time, the better the user experience.&lt;/p&gt;

&lt;h3 id="toc-use-of-search-vs-navigation-15"&gt;Use of Search vs. Navigation&lt;/h3&gt;

&lt;p&gt;This metric helps you understand how efficient your architecture and navigation are. The navigation bar is one of the most important elements of a website or webapp and should be intuitive enough so that people can easily and quickly reach their destination. If that’s not possible and they get lost, they turn to the search bar. In most cases, the less the search function is used, the better.&lt;/p&gt;

&lt;p&gt;You can calculate the Navigation vs. Search ratio by dividing the number of tasks accomplished via navigator or search by the number of completed tasks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--__1h1aBm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/04/ux-metrics-post-image7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--__1h1aBm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/04/ux-metrics-post-image7.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id="toc-user-error-rate-16"&gt;User Error Rate&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;user error rate&lt;/strong&gt; is the number of users who made a mistake while doing a task, such as navigating to the wrong part of a website or an unsuccessful attempt to enter the email address in the contact form. It’s a good indicator of user performance as well as for how user-friendly your website or webapp really is. Errors are closely related to usability issues. In fact, usability is the source of errors, so a high error rate means that you have serious usability problems. However, you need to be very specific as what actions are perceived as errors,&lt;/p&gt;

&lt;p&gt;There are two ways to calculate the error rate, depending on the number of error opportunities a task allows and what you need to measure. For example, filling in a form has many opportunities for failure.&lt;/p&gt;

&lt;p&gt;If your task has only one potential error or there are many error opportunities but you want to track only one of them – for example when entering the email address in the “Repeat email address” field – you want to measure the &lt;strong&gt;error occurrence rate&lt;/strong&gt; by dividing the total number of errors that occurred for all users by the number of error opportunities for all users.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Dz3Q8bz9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/04/ux-metrics-post-image1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Dz3Q8bz9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/04/ux-metrics-post-image1.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If there are multiple error opportunities per task or you want to measure multiple errors, you can calculate the error rate by dividing the number of errors by the total number of attempts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vz_gRw_W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/04/ux-metrics-post-image14.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vz_gRw_W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/04/ux-metrics-post-image14.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id="toc-system-usability-scale-sus-17"&gt;System Usability Scale (SUS)&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;&lt;a href="https://www.usabilitest.com/system-usability-scale"&gt;System Usability Scale (SUS)&lt;/a&gt;&lt;/strong&gt; is one of the most popular tools used to assess the usability of a product. It’s a questionnaire consisting of 10 statements that users need to rate on a five-point scale from strongly agree to strongly disagree. SUS is a way to quantify qualitative data, like a user’s perceived satisfaction of a product or service following a usability testing or after they have used the product.&lt;/p&gt;

&lt;p&gt;At the same time, you can use it as a benchmarking tool against the product before improvement or in comparison to competitors. Based on the answers, you get a score between 1 and 100. The higher the score, the better the usability.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XgPCr-qE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/04/ux-metrics-post-image10.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XgPCr-qE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/04/ux-metrics-post-image10.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source: &lt;a href="https://uxpajournal.org/how-low-can-you-go-is-the-system-usability-scale-range-restricted/"&gt;The Journal of Usability Studies&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="toc-4-user-adoption-metrics-18"&gt;4. User Adoption Metrics&lt;/h2&gt;

&lt;p&gt;By measuring adoption metrics, you can see how often customers are using your product, which features they are using and what they are doing with those features. In a nutshell, you are trying to see if users are experiencing value from their investment. This is critical information for successful customer management and for product managers as it helps them understand how to evolve the offerings. Needless to say, a higher adoption rate means that more individuals are adopting the product than abandoning it.&lt;/p&gt;

&lt;p&gt;Here are the &lt;strong&gt;most important adoption metrics that measure customer product engagement&lt;/strong&gt;:&lt;/p&gt;

&lt;h3 id="toc-active-users-19"&gt;Active Users&lt;/h3&gt;

&lt;p&gt;The number of &lt;strong&gt;active users&lt;/strong&gt; is the most basic – and straightforward – of adoption metrics. For a better understanding of your product or service usage, you should go further and measure Daily Active Users (DAU), Weekly Active Users (WAU), Monthly Active Users (MAU), and stickiness (DAU/MAU).&lt;/p&gt;

&lt;p&gt;As a rule, the number of active users should be higher than the number of new users, indicating that you have returning users. However, first you need to define what “active users” mean as in how many times do users need to interact with the product within a certain time frame.&lt;/p&gt;

&lt;p&gt;Stickiness is another key metric. Combined with the feature adoption rate (see below), you can easily identify which features make your product addictive, which drive the most engagement.&lt;/p&gt;

&lt;h3 id="toc-product-access-20"&gt;Product Access&lt;/h3&gt;

&lt;p&gt;The most immediate way to see if your product or service is bringing value to customers is if they incorporate it into their everyday lives or, in other words, &lt;strong&gt;how often do they access said product&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You can track product usage through license utilization. By measuring the number of daily product logins against the number of licenses purchased by a customer you can determine how often they are using your product on a regular basis. This helps your customer success team identify active and at-risk customers so that it can quickly intervene with personalized and more rewarding experiences.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HAy1Qx0K--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/04/ux-metrics-post-image15.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HAy1Qx0K--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/04/ux-metrics-post-image15.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id="toc-average-time-spent-with-product-21"&gt;Average Time Spent with Product&lt;/h3&gt;

&lt;p&gt;Another way to measure adoption is the &lt;strong&gt;average time spent with the product&lt;/strong&gt;. You can calculate this metric by dividing the amount of time spent in the product by the number of logins within a specific time period.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--c7cYMzE9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/04/ux-metrics-post-image11.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--c7cYMzE9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/04/ux-metrics-post-image11.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id="toc-feature-adoption-rate-22"&gt;Feature Adoption Rate&lt;/h3&gt;

&lt;p&gt;Besides tracking overall product usage, you can zoom in and focus on the time spent using specific features to identify how helpful said feature is for a certain customer or for your entire client database. You can calculate the &lt;strong&gt;feature adoption rate&lt;/strong&gt; by dividing the number of times a feature was used by the number of logins.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--p6uwMbdw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/04/ux-metrics-post-image6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--p6uwMbdw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/04/ux-metrics-post-image6.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="toc-5-user-retention-metrics-23"&gt;5. User Retention Metrics&lt;/h2&gt;

&lt;p&gt;Retention refers to how many customers keep using your app, product, or service. Thus, retention metrics reveal how well you are meeting user needs and whether you are providing a good customer experience.&lt;/p&gt;

&lt;p&gt;Check out which are the &lt;strong&gt;key customer retention metrics you should keep track of&lt;/strong&gt;.&lt;/p&gt;

&lt;h3 id="toc-customer-churn-24"&gt;Customer Churn&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Customer churn rate&lt;/strong&gt; is the percentage of customers that have stopped using your product or service over a given period. There is no universally accepted “good” churn rate. It depends on the industry your business is in. If you’re a SaaS and servicing B2B customers, you’ll likely experience lower churn rates. But if you’re offering consumer services such as entertainment services, your churn rate can be significantly higher especially if your offering is not seen as essential.&lt;/p&gt;

&lt;p&gt;One thing is for sure: regardless of your industry or market, you want your churn rate to be as low as possible. Otherwise, a high churn rate indicates that your product or service fails to meet customers’ expectations or goals, whether it’s in terms of features, user experience, or something else.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--l-KJ-a4n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/04/ux-metrics-post-image5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--l-KJ-a4n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/04/ux-metrics-post-image5.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id="toc-net-promoter-score-25"&gt;Net Promoter Score&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Net Promoter Score (NPS)&lt;/strong&gt; is a qualitative retention metric that measures general satisfaction and loyalty to your product or service. It tells you if your current customers are happy and how willing they are to promote you to their network. A high NPS guarantees visibility in front of potential customers, while a poor score is an opportunity to tackle satisfaction problems and improve customer satisfaction before it’s too late.&lt;/p&gt;

&lt;p&gt;You measure NPS by asking your customers a simple question: &lt;em&gt;from a scale of zero to ten, how likely are you to recommend our product or service to a friend or colleague, with zero being ‘not likely at all’ and ten being ‘extremely likely’?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Users giving a rating of 6 or below are called detractors, while the 9’s and 10’s promoters. Then, you calculate NPS subtracting the percentage of detractor responses from the percentage of promoter responses.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hRMnx_x1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/04/ux-metrics-post-image9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hRMnx_x1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/04/ux-metrics-post-image9.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id="toc-customer-retention-rate-26"&gt;Customer Retention Rate&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Customer retention rate&lt;/strong&gt; is the percentage of customers that have stayed with you over a given period of time. This is perhaps the most important straightforward retention metric showing whether your retention strategy is working or rather if users are satisfied enough by your product to come back. Of course, the higher the retention rate, the better.&lt;/p&gt;

&lt;p&gt;To calculate the customer retention rate, you subtract the number of acquired customers throughout a period from the number of customers at the end of the period, then divide it by the number of customers at the beginning of the period.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HZMh4Gje--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/04/ux-metrics-post-image4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HZMh4Gje--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/04/ux-metrics-post-image4.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id="toc-average-order-value-27"&gt;Average Order Value&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Average order value (AOV)&lt;/strong&gt; is the average amount of money a customer spends per purchase. If you provide a good UX, the average order value can increase, with more services or products being shopped for together.&lt;/p&gt;

&lt;p&gt;To calculate AOV, you divide the total revenue by the number of purchases.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vfe0P1XU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/04/ux-metrics-post-image13.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vfe0P1XU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/04/ux-metrics-post-image13.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3 id="toc-customer-lifetime-value-28"&gt;Customer Lifetime Value&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Customer lifetime value (CLV)&lt;/strong&gt; is a revenue metric that projects how much revenue the average customer will bring you over the course of their relationship with your product or service. You want your CLV to increase or at least stay constant.&lt;/p&gt;

&lt;p&gt;This metric is important because it enables you to understand not only how much revenue your product returns, but it also offers valuable insight into user engagement and user retention.&lt;/p&gt;

&lt;p&gt;CLV is a bit harder to measure than other metrics as it involves multiple steps. First, you need to determine the average order value you can expect from a customer over the course of a year by dividing the annual gross revenue by the number of purchases.&lt;/p&gt;

&lt;p&gt;Step two is to calculate how many times a customer will purchase from you within a year by dividing the number of orders by the number of customers. You then estimate how long you expect a customer to stay with you in terms of years.&lt;/p&gt;

&lt;p&gt;The final step is to multiply the average order value by the number of purchases.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--B4M-A-Ez--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/04/PM-UX-blog-post-13.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--B4M-A-Ez--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://sematext.com/wp-content/uploads/2020/04/PM-UX-blog-post-13.jpeg" alt="customer lifetime value formulara"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="toc--29"&gt;&lt;/h2&gt;

&lt;h2 id="toc-why-you-should-measure-ux-metrics-30"&gt;Why You Should Measure UX Metrics&lt;/h2&gt;

&lt;p&gt;There are many reasons why you should rate your website or webapp user experience metrics. We’ve identified some of them:&lt;/p&gt;

&lt;h3 id="toc-alerting-31"&gt;Alerting&lt;/h3&gt;

&lt;p&gt;UX metrics act as an early warning system that something is off with your product or service. When combined, you have tons of accurate and valuable information at your disposal that makes it easy for you to spot the weakest points so that you can quickly intervene, as well as your strongest so that you can leverage them.&lt;/p&gt;

&lt;p&gt;RUM tools, such as our &lt;a href="https://sematext.com/experience/"&gt;Sematext Experience&lt;/a&gt; can help stay ahead of problems. You can define threshold time for &lt;a href="https://sematext.com/blog/website-performance-metrics/"&gt;website performance metrics&lt;/a&gt; such as page load times, HTTP requests, individual on-page transactions, etc. and be notified in real-time whenever these move past their limits.&lt;/p&gt;

&lt;h3 id="toc-context-32"&gt;Context&lt;/h3&gt;

&lt;p&gt;UX metrics provide context for the numbers from analytics. They allow you to track and map customer journeys and make correlations between user interactions, thus filling in the how, why, when, and where things went wrong.&lt;/p&gt;

&lt;h2 id="toc-final-thoughts-33"&gt;Final Thoughts&lt;/h2&gt;

&lt;p&gt;User experience is more than how user-friendly is your website. It looks at what people see and experience with your product, how they perceive and engage with it, and finally, what they do, and how that reflects in your ROI.&lt;/p&gt;

&lt;p&gt;It may prove difficult to measure and the metrics will vary from business to business. However, you should be looking at metrics coming from each step of the framework (descriptive, perception, and outcome).&lt;/p&gt;

&lt;p&gt;It all starts with real user metrics – a solution like &lt;a href="https://sematext.com/experience/"&gt;Sematext Experience&lt;/a&gt; can help detect early on when users experience issues due to poor website performance. If their first interaction with you leaves much to desire, most likely they’ll bounce and all your previous marketing efforts would be in vain. Make sure you look at the bigger picture and include all types of UX metrics in your UX strategy, choosing the right ones for your business. Make sure you understand and correlate them to determine the context, and then optimize accordingly. This list should be a nice starting point.&lt;/p&gt;

&lt;p&gt;However, we recommend you don’t stop there. Website performance is a complex topic that can be a pain without the proper &lt;a href="https://sematext.com/blog/website-monitoring-tools/"&gt;monitoring tools&lt;/a&gt;. Dive even deeper and correlate your UX metrics with other critical &lt;a href="https://sematext.com/blog/website-performance-metrics/"&gt;site performance metrics&lt;/a&gt; to get the full picture of factors that can negatively impact customer experience and, ultimately, your business.&lt;/p&gt;



&lt;p&gt;&lt;span&gt;Photo by &lt;a href="https://unsplash.com/@amutiomi?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Miguel A. Amutio&lt;/a&gt; on &lt;a href="/s/photos/metrics?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

</description>
      <category>ux</category>
      <category>metrics</category>
      <category>rum</category>
    </item>
    <item>
      <title>How Server Location Affects your Users’ Experience</title>
      <dc:creator>John Demian</dc:creator>
      <pubDate>Mon, 13 Apr 2020 13:50:00 +0000</pubDate>
      <link>https://dev.to/johndemian/how-server-location-affects-your-users-experience-44li</link>
      <guid>https://dev.to/johndemian/how-server-location-affects-your-users-experience-44li</guid>
      <description>&lt;p&gt;So you finally launched your service worldwide, great! The next thing you’ll see is thousands and thousands of people flooding into your amazing website from all corners of the world expecting to have the same experience regardless of their location.&lt;/p&gt;

&lt;p&gt;Here is where things get tricky. &lt;/p&gt;

&lt;p&gt;Delivering the same amazing service to different regions of the world is a challenge that most companies face, a challenge that’s difficult to solve without proper tooling, such as Sematext &lt;/p&gt;

&lt;p&gt;Sematext Experience is a &lt;a href="https://sematext.com/experience" rel="noopener noreferrer"&gt;RUM solution&lt;/a&gt; that provides insightful data about how your webapp is performing in all the different corners of the world by measuring data in real-time directly from your users. Read more about real user monitoring and how it can help improve customer experience in our &lt;a href="https://sematext.com/guides/what-is-real-user-monitoring/" rel="noopener noreferrer"&gt;RUM guide&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In this post, we are going to see how server location affects your website performance and how you can measure it to ensure a flawless experience for all your users.&lt;/p&gt;

&lt;h2&gt;
  
  
  Server Location and Application Performance
&lt;/h2&gt;

&lt;p&gt;There are no two ways about it. Your app will react differently based on your user’s location and it has to do with something we call server &lt;em&gt;latency&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;The experience of your customers living in a different part of the world will be vastly different from what you are seeing in your tests. It’s crucial to gather data from every location that your users live in, that way you can take the necessary steps to fix the issue.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Is Latency?
&lt;/h3&gt;

&lt;p&gt;Latency is the time it takes for a request to travel from the sender to the receiver and for the receiver to process that request. In other words, it’s the time it takes for the request sent from the browser to be processed and returned by the server. &lt;/p&gt;

&lt;p&gt;Consider a simple e-commerce store that caters to users worldwide. High latency will make browsing categories and products very difficult and in a space as competitive as online retailing, the few extra seconds can amount a fortune in lost sales.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Should You Measure Network Latency?
&lt;/h2&gt;

&lt;p&gt;Providing an overall good service across the world is not just good for your image, it’s good for your business. You’ll soon come to realize that bad user experience will affect your bottom line directly. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsematext.com%2Fwp-content%2Fuploads%2F2020%2F03%2Fmeasure-network-latency.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsematext.com%2Fwp-content%2Fuploads%2F2020%2F03%2Fmeasure-network-latency.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Source:&lt;a href="https://www.fastcompany.com/1825005/how-one-second-could-cost-amazon-16-billion-sales" rel="noopener noreferrer"&gt; fastcompany.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;To use the eCommerce example again here is a little quote from &lt;a href="http://www.yoast.com" rel="noopener noreferrer"&gt;Yoast&lt;/a&gt; that will put things into perspective:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;79% of online shoppers say they won’t go back to a website if they’ve had trouble with load speed.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;And let’s not forget that fast-loading sites have higher conversion rates and lower bounce rates. So it’s not a matter of whether you should or shouldn’t invest in optimizing your load speed across multiple regions, but rather if you can afford not to.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Causes Network Latency
&lt;/h2&gt;

&lt;p&gt;There are thousands of little variables that make up your network latency but they mainly fall under one of these 4 categories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Transmission mediums&lt;/strong&gt; - Your data travels across large distances in different forms, either through electrical signals over copper cabling, light waves over fiber optics. Every time it switches from one medium to another a few extra milliseconds will be added to the overall transmission time.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Payload&lt;/strong&gt; - The more data gets transferred the slower the communication between client and server.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Routers -&lt;/strong&gt; Take time to analyze the header information of a packet and, in some cases, add additional information. Each hop a packet takes from router to router increases the latency time. Furthermore, depending on the device there can be MAC address and routing tables lookups. &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Storage Delays&lt;/strong&gt; - Delays can occur when a packet is stored or accessed. This results in a delay caused by intermediate devices like switches and bridges.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to Measure Network Latency?
&lt;/h2&gt;

&lt;p&gt;Network Latency is always measured in milliseconds (ms) and exposed through two metrics - Time to First Byte and Round Trip Time. You can use either of them for the test on your network. However, regardless of what you choose, make sure to keep all records in the same test category. It’s important to monitor any changes and address the culprits if you want to ensure a smooth user experience and keep your &lt;a href="https://sematext.com/blog/how-to-use-your-apdex-score-to-measure-user-satisfaction/" rel="noopener noreferrer"&gt;customer satisfaction score&lt;/a&gt; high.&lt;/p&gt;

&lt;h3&gt;
  
  
  Time to First Byte
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Time to First Byte&lt;/strong&gt; (TTFB) is the time the first byte of each file reaches the user’s browser after a server connection has been established.&lt;/p&gt;

&lt;p&gt;The TTFB itself is affected by three main factors:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  The time it takes for your request to propagate through the network to the web server&lt;/li&gt;
&lt;li&gt;  The time it takes for the web server to process the request and generate the response&lt;/li&gt;
&lt;li&gt;  The time it takes for the response to propagate back to your browser.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Round Trip Time
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Round Trip Time&lt;/strong&gt; (RTT), also called &lt;strong&gt;Round Trip Delay&lt;/strong&gt; (RTD) is the duration it takes for a browser to send a request and receive a response from a server. RTT is perhaps the most popular metric involved in measuring network latency and it is measured in milliseconds (ms).&lt;/p&gt;

&lt;p&gt;RTT is influenced  by a few key components of your network:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  *&lt;em&gt;Distance *&lt;/em&gt;– The bigger the distance between server and client the longer it takes to get the signal back&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Transmission medium&lt;/strong&gt; – The medium used to route a signal&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;The number of network hops&lt;/strong&gt; – Intermediate routers or servers take time to process a signal, increasing RTT. The more hops a signal has to travel through, the higher the RTT.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Traffic levels&lt;/strong&gt; – RTT typically increases when a network is congested with high levels of traffic. Conversely, low traffic times can result in decreased RTT.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Using RUM Tools to Reduce Latency
&lt;/h2&gt;

&lt;p&gt;So you’ll be dealing with a userbase that’s spread across multiple continents, you understand the importance of keeping your performance in good standing regardless of the user location and you even understand what you need to look for. All there’s left is the “how” part. &lt;/p&gt;

&lt;p&gt;In the past few years, the popularity of RUM tools grew exponentially as a byproduct of the increased number of companies that took their services and products globally. An ever-growing need to monitor and understand user behavior led to a lot of monitoring companies switching from just monitoring server resources to looking at how users experience the website.&lt;/p&gt;

&lt;p&gt;We’ve created &lt;a href="https://sematext.com/experience/" rel="noopener noreferrer"&gt;Sematext Experience&lt;/a&gt; as a response to that very need. The tool offers a real-time overview of your users’ interactions with the website, allowing you to pinpoint exactly where your system is underperforming. &lt;a href="https://www.youtube.com/watch?v=cB6eTV-5zfg" rel="noopener noreferrer"&gt;Here’s &lt;/a&gt;a little youtube video of the Sematext Experience demo.&lt;/p&gt;

&lt;p&gt;Besides providing key information on how the website is performing across different locations, it will also provide intel on how the website loads on different devices running at different connection speeds.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;Understanding how the users’ experience is always going to be crucial as it will influence whether or not they will return to the site or not which in turn, will directly impact your bottom line. &lt;/p&gt;

&lt;p&gt;In case you’re interested in some other important metrics that affect website performance, you can check out this&lt;a href="https://sematext.com/blog/website-performance-metrics/" rel="noopener noreferrer"&gt; blog post&lt;/a&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Is everybody switching to serverless in 2020?</title>
      <dc:creator>John Demian</dc:creator>
      <pubDate>Fri, 10 Jan 2020 18:24:46 +0000</pubDate>
      <link>https://dev.to/johndemian/is-everybody-switching-to-serverless-in-2020-1m42</link>
      <guid>https://dev.to/johndemian/is-everybody-switching-to-serverless-in-2020-1m42</guid>
      <description>&lt;p&gt;Probably not, but at least a handful of Fortune 500 will take the serverless route.&lt;/p&gt;

&lt;p&gt;2020 is already well underway and businesses all over the world are gearing up for a new year full of unpredictable moments. Now these last years we've seen technology change at a rapid pace and it seems like we are getting bombarded with new things before we even got a chance to get used to the "old" stuff. &lt;/p&gt;

&lt;p&gt;AWS Lambda is still new to most of us and while we do understand how it can save companies &lt;a href="https://dashbird.io/blog/saving-money-switching-serverless/"&gt;a lot of money&lt;/a&gt; or how it's a great way to &lt;a href="https://dashbird.io/blog/serverless-will-change-your-business/"&gt;develop applications faster&lt;/a&gt; and with less risk, and how &lt;a href="https://dev.to/johndemian/technical-debt-is-changing-the-way-we-build-applications-1c04"&gt;serverless mitigates the technical debt&lt;/a&gt; that plagues so many companies, there are still plenty of unknowns and to top it off, there are new services being released all. The. Time.&lt;/p&gt;

&lt;p&gt;Here are some of the most important things to happen in the serverless space back in 2019&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_-LvfeaL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://d33wubrfki0l68.cloudfront.net/a83056bdc055c2ffbade9bb61edea8890163f25a/62a1f/static/437f75f62eba0115f5dc159da6c925fb/d00b9/2019-in-serverlss.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_-LvfeaL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://d33wubrfki0l68.cloudfront.net/a83056bdc055c2ffbade9bb61edea8890163f25a/62a1f/static/437f75f62eba0115f5dc159da6c925fb/d00b9/2019-in-serverlss.webp"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;
&lt;center&gt;&lt;a href="https://www.nuweba.com/blog/2019-in-serverless"&gt;Source&lt;/a&gt;&lt;/center&gt;

&lt;p&gt;Serverless adoption is growing at an alarming speed and we have companies like Amazon to thank for that. Their continued effort to improve and develop this space as well as the new tools we get is what draws in thousands of developers. Here are the ones that were announced only last month.&lt;/p&gt;

&lt;h2&gt;Lambda: Provisioned Concurrency&lt;/h2&gt;

&lt;p&gt;Cold Starts have been an issue since Lambda was launched, years ago. Many attempts by the development community have tried to mitigate it with various degrees of success. Now AWS launched Provisioned Concurrency.&lt;/p&gt;

&lt;h2&gt;S3: Access Points&lt;/h2&gt;

&lt;p&gt;Instead of concentrating all bucket access policies in a single place, AWS S3 now allows distributing access rules across multiple Access Points.&lt;/p&gt;

&lt;h2&gt;Fully Managed Cassandra&lt;/h2&gt;

&lt;p&gt;Although DynamoDB is a perfect fit for serverless applications, many teams and companies have been wary of using it due to lock-in fears.&lt;/p&gt;

&lt;h2&gt;API Gateway: HTTP APIs&lt;/h2&gt;

&lt;p&gt;On top of an HTTP proxy service, API Gateway offers a wide range of features: API Keys management, SDK generation, throttling, etc. All these extra features come with a cost, until now. This new feature will have users pay a third of the price they used to pay while still getting all the amazing features that they have grown used to.&lt;/p&gt;

&lt;h2&gt;Serverless Machine Learning&lt;/h2&gt;

&lt;p&gt;AWS announced three new serverless machine learning offerings. Click on the links below to read more details in the official announcements.&lt;/p&gt;

&lt;p&gt;My buddy Renato made a detailed post on all of these plus many more &lt;a href="https://dashbird.io/blog/aws-reinvent-2019-serverless-announcements-recap/"&gt;here&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;2019 was amazing but I suspect this year we'll get to see even more companies switching to serverless and even more developers building amazing things.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to enjoy these holidays like a pro.</title>
      <dc:creator>John Demian</dc:creator>
      <pubDate>Thu, 19 Dec 2019 13:49:20 +0000</pubDate>
      <link>https://dev.to/johndemian/how-to-enjoy-these-holidays-like-a-pro-1cc6</link>
      <guid>https://dev.to/johndemian/how-to-enjoy-these-holidays-like-a-pro-1cc6</guid>
      <description>&lt;p&gt;The holidays are coming and between dinners with the entire family and shopping for last-minute gifts, there will be less and less time for keeping your eye on those precious Lambdas, especially with all that delicious eggnog laying around.&lt;/p&gt;

&lt;p&gt;So what are you to do? Easy. Set up alerts.&lt;/p&gt;

&lt;p&gt;Sure you can use Cloudwatch to set up alerts and it will probably do the job, at least for the most part but if you are to really enjoy the holidays you need to know beyond a doubt that your app is not only running but running at peak performance.&lt;/p&gt;

&lt;p&gt;This is where Dashbird comes in. It will give you the peace of mind of knowing your precious applications are running smoothly the entire time and the best part, you can start using it right now, for free!&lt;/p&gt;

&lt;p&gt;Here’s how you set it up.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The signup
&lt;/h2&gt;

&lt;p&gt;This is obvious but I feel like I should go through this step in order to make this little guide as complete as possible. To begin with, you should jump over on the &lt;a href="https://dashbird.io/register/" rel="noopener noreferrer"&gt;registration&lt;/a&gt; page and fill your information.&lt;/p&gt;

&lt;p&gt;The next step is probably the most complicated step of this entire thing and it’s where you deploy Dashbird’s client-side code to your AWS account. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdashbird.io%2Fimages%2Fdocs%2Fonboarding.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdashbird.io%2Fimages%2Fdocs%2Fonboarding.png" title="Dashbird setup" alt="alt_text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It sounds more complicated than it actually is and the import process should be around 2 minutes but in some rare cases, it may take more time to discover resources. &lt;/p&gt;

&lt;h2&gt;
  
  
  2. Understanding how Dashbird alerts work
&lt;/h2&gt;

&lt;p&gt;I want to take a second to explain how our alerting system works. The first thing you do is you set up a policy for the type of alert you want. After you’ve created a new policy there are certain criteria that you select that will trigger the alert when those parameters are met.&lt;/p&gt;

&lt;p&gt;You can configure your alerts based on these parameters:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Type of request (invocations in general, cold starts, errors, etc)&lt;/li&gt;
&lt;li&gt;  Metric (cost, duration, memory usage, etc)&lt;/li&gt;
&lt;li&gt;  Inequality operator (above or below a certain threshold)&lt;/li&gt;
&lt;li&gt;  A given number to compare against the metric monitored&lt;/li&gt;
&lt;li&gt;  Aggregation factor (sum, average, minimum, maximum)&lt;/li&gt;
&lt;li&gt;  Time-period to look for the comparison (last minute, 5 or 10 minutes, for example)&lt;/li&gt;
&lt;li&gt;  Target Lambdas (to which functions this policy should apply - can be all your Lambdas)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fmm7spta72k1zia8rylz5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fmm7spta72k1zia8rylz5.png" title="image_tooltip" alt="alt_text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Set up your first Alert
&lt;/h2&gt;

&lt;p&gt;You add a new Policy from the right side of the screen with the &lt;strong&gt;“+ ADD”&lt;/strong&gt; button. Select either a function or a project depending on what your target is and then you go through the parameters and you are done.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fwkdhq37ljw28dlcdbzvp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fwkdhq37ljw28dlcdbzvp.png" title="image_tooltip" alt="alt_text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When selecting the target, keep in mind that you can target a project rather than Lambdas. This is especially helpful when having multiple microservices. With Dashbird’s Projects, you can bundle multiple functions, effectively allowing you to track a subset of your infrastructure like a microservice, for example.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fmmz19sopamae9dst15dq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fmmz19sopamae9dst15dq.png" title="Lambda error alert" alt="alt_text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Selecting the alerting channel
&lt;/h2&gt;

&lt;p&gt;As of today, Dashbird Alerts can be received via two channels: Slack and email. You can pick the one that works for you from the top section of the Policy screen. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F1cswyhefhtmp1smyoot6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F1cswyhefhtmp1smyoot6.png" title="image_tooltip" alt="alt_text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I've made &lt;a href="https://www.youtube.com/watch?v=tCcWUQKeFKY" rel="noopener noreferrer"&gt; this little video&lt;/a&gt; that will guide you through the entire process.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Enjoy the holiday
&lt;/h2&gt;

&lt;p&gt;That’s it. Now you’ll get notified whenever something goes sideways or if you’ve set up your alerts correctly when something is about to go wrong.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F24ov8huyll911j6yvf3q.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F24ov8huyll911j6yvf3q.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>alerts</category>
    </item>
    <item>
      <title>Technical debt is changing the way we build applications</title>
      <dc:creator>John Demian</dc:creator>
      <pubDate>Tue, 26 Nov 2019 23:50:13 +0000</pubDate>
      <link>https://dev.to/johndemian/technical-debt-is-changing-the-way-we-build-applications-1c04</link>
      <guid>https://dev.to/johndemian/technical-debt-is-changing-the-way-we-build-applications-1c04</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WCME3lDz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images.unsplash.com/photo-1528659882437-b89a74bc157f%3Fixlib%3Drb-1.2.1%26ixid%3DeyJhcHBfaWQiOjEyMDd9%26auto%3Dformat%26fit%3Dcrop%26w%3D1920%26q%3D80" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WCME3lDz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images.unsplash.com/photo-1528659882437-b89a74bc157f%3Fixlib%3Drb-1.2.1%26ixid%3DeyJhcHBfaWQiOjEyMDd9%26auto%3Dformat%26fit%3Dcrop%26w%3D1920%26q%3D80"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;“Technical debt” is a term that scares even the most experienced developers because they know, it’s something they will eventually have to deal with at one point in the future. It’s not a matter of if, it’s a matter of when. Paul Johnson put it very plainly in an &lt;a href="https://medium.com/@PaulDJohnston/serverless-is-a-doctrine-not-a-technology-4193ccb66cfc"&gt;article&lt;/a&gt; earlier this year.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;*&lt;em&gt;Today’s code is tomorrow’s technical debt *&lt;/em&gt;- &lt;a href="https://twitter.com/PaulDJohnston"&gt;Paul Johnson&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The technical debt we’re talking about is the price you pay for choosing to go the faster route rather than to spend the extra time to write the code that would be more flexible and more manageable. The debt is the time it takes to rewrite and reiterate parts of your applications.&lt;/p&gt;

&lt;p&gt;Just like financial debt, technical debts accrue interest over time. That interest is manifested in a number of ways and can be consequences. &lt;/p&gt;

&lt;p&gt;An example would be the lack of inability to use certain npm modules because you worked with an outdated one and didn’t want to spend time making the upgrade with everything it involved. So you figured you’d keep it as is and deal with it later.&lt;/p&gt;

&lt;p&gt;But now you are stuck with an old Hugo version and can’t upgrade because it will break your circleCI integration and you won’t be able to deploy to production and make all the other modules useless. And there’s the documentation that’s outdated just like everything else and now you are stuck in a hole that takes a lot of modification to make to the point you might want to start from scratch, but that ain’t happening because there’s no “budget for something like that”. &lt;/p&gt;

&lt;p&gt;That. That is technical debt interest manifested into a little project that a “friend” of mine is dealing with.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EB7XQgdk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/n7hp72j73pwp1qaffjs1.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EB7XQgdk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/n7hp72j73pwp1qaffjs1.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical debt changed the way we build applications
&lt;/h2&gt;

&lt;p&gt;I started working as a developer at a small company that didn’t really worry about technical debt(at first). We eventually ran into an issue where we had to swap out our entire application that was built on Action Script 3.0 and have it migrated over to a whole new Javascript-based application.&lt;/p&gt;

&lt;p&gt;In that particular example we had to make the switch because Flash was dying fast but most of the time, technical debt comes in a more unexpected way. Even if you started out planning ahead for it, even if you took all the necessary precautions to avoid it, technical debt is going to bit you in, as the French call it, rear-end.&lt;/p&gt;

&lt;p&gt;There are certain ways to mitigate the technical debt in an application, more or less effective. One of these solutions to this issue is serverless computing as an alternative to the traditional model of building applications. &lt;/p&gt;

&lt;p&gt;Here are a few reasons why your development team should consider using serverless architecture in your next mobile app or web application in order to manage the technical debt.&lt;/p&gt;

&lt;h2&gt;
  
  
  A fully managed service will remove any infrastructure debt
&lt;/h2&gt;

&lt;p&gt;That’s right! Services like AWS Lambda, Azure Functions, or Google Cloud functions are just a few of the function as a service options out there that will completely manage everything for you, which might not sound extraordinary to everyone but it’s amongst many others, a &lt;a href="http://bit.ly/2OrSzSL"&gt;great reason to switch to a serverless architecture&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;That means not having to worry about any orchestration, any hardware maintenance or upgrades of any kind. It basically allows developers to abstract the infrastructure altogether while being 100% sure this lack of involvement will not end up hurting them in the long run.&lt;/p&gt;

&lt;h2&gt;
  
  
  Serverless applications scale gracefully
&lt;/h2&gt;

&lt;p&gt;Trying to meet demands with an application that wasn’t designed to scale is an absolute pain. Not being able to scale in order to meet user demand is more often than not a deal-breaker and will put any company at a huge disadvantage. Not being able to scale is more like a technical bankruptcy rather than just a technical dept.&lt;/p&gt;

&lt;p&gt;Nevertheless, building your application using serverless will ensure that scaling is taken care of by the service provider who makes sure to spawn extra containers to meet demand.&lt;/p&gt;

&lt;h2&gt;
  
  
  Time to market and operational costs
&lt;/h2&gt;

&lt;p&gt;Having that ever-impending deadline looming over you and your team will surely cause them to cut corners or skip certain steps resulting in something Dag Liodden likes to call “deliberate tech debt”. It basically happens when your software development team knows there’s a better way to write that particular function, module or service but for the sake of saving time or cutting costs chooses to go a different route, a quicker route. Check out this article on the &lt;a href="https://hackernoon.com/there-are-3-main-types-of-technical-debt-heres-how-to-manage-them-4a3328a4c50c"&gt;different types of technical debt&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The way serverless handles these two pain points is by having the developer focus on the code and business logic and taking care of all the heavy lifting by provisioning, managing and scaling the infrastructure to fit the current neet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Flexibility in choosing providers
&lt;/h2&gt;

&lt;p&gt;Of course, we had to talk about vendor lock-in while talking about serverless. While there are lots of &lt;a href="http://bit.ly/2OrSzSL"&gt;serverless benefits&lt;/a&gt; there are also a few things that might scare people from taking the serverless approach to building web services and applications. &lt;/p&gt;

&lt;p&gt;Vendor lock-in is a problem that developers face but this too can be resolved by using platforms like the &lt;a href="https://serverless.com/"&gt;Serverless platform&lt;/a&gt; that allows you to move your infrastructure from one provider to another with relative ease.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Scv53bDc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--RFpN8DkW--/c_limit%252Cf_auto%252Cfl_progressive%252Cq_auto%252Cw_880/https://notes.ayushsharma.in/static/images/bitbucket-pipelines-serverless-framework.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Scv53bDc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--RFpN8DkW--/c_limit%252Cf_auto%252Cfl_progressive%252Cq_auto%252Cw_880/https://notes.ayushsharma.in/static/images/bitbucket-pipelines-serverless-framework.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dashbird.io/knowledge-base/aws-lambda/advantages-challenges-solutions/#monitoring-logging-and-tracing"&gt;Monitoring and debugging&lt;/a&gt; a serverless application can be very time consuming but there are solutions. Tools like &lt;a href="https://dashbird.io/"&gt;Dasbhird&lt;/a&gt; take care of just that by facilitating that missing observability into your architecture in real time.&lt;/p&gt;

&lt;h2&gt;
  
  
  In conclusion
&lt;/h2&gt;

&lt;p&gt;Technical debt is always going to be something we’ll have to deal with but while there’s no way to guarantee you won’t have to deal with it, serverless is proving to be a long term solution that many developers, as well as big corporations, are adopting so it stands to reason that there might just be something to this crazy new concept besides the hype that’s been surrounding this subject int he past few years.&lt;/p&gt;




&lt;p&gt;I want to clarify one thing that might have been a bit misleading. When I was talking about how with serverless technology there's no need to upgrade or manage I was referring to the infrastructure itself and the code. That part is still up to you.&lt;/p&gt;

</description>
      <category>technicaldebt</category>
      <category>serverless</category>
    </item>
    <item>
      <title>Going serverless? Here’s what you need to know</title>
      <dc:creator>John Demian</dc:creator>
      <pubDate>Mon, 28 Oct 2019 12:58:23 +0000</pubDate>
      <link>https://dev.to/johndemian/going-serverless-here-s-what-you-need-to-know-3h1k</link>
      <guid>https://dev.to/johndemian/going-serverless-here-s-what-you-need-to-know-3h1k</guid>
      <description>&lt;p&gt;Major companies have embraced this new innovation that is serverless and are changing their entire mindset of what the backend is. But amidst all the buzzwords flying about, comes a very important concern - &lt;strong&gt;how can I be sure I am using serverless in a secure way?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Serverless or &lt;a href="https://dashbird.io/blog/what-is-faas-function-as-a-service/" rel="noopener noreferrer"&gt;Function-as-a-Service (FaaS) &lt;/a&gt; has a lot of benefits and one of them is the fact that the security of the infrastructure powering the applications has been moved to the platform providers like AWS Lambda, Azure Functions, IBM Cloud Functions, Google Cloud Functions etc. and denial of service will no longer be as a result of hacker attempts but more of a billing issue. This results in the focus of attackers shifting from the infrastructure as it was in the past, to the application. &lt;/p&gt;

&lt;p&gt;Serverless applications are structured as a combination of small functions that execute your code returning a simple result. Depending on the number of open source repositories this kind of architecture widens the surface area and likelihood of cyber attacks making planning and building secure serverless applications an important point at the top of your todo list.&lt;/p&gt;

&lt;p&gt;Here are several steps or best practices that should consider in order to build a secure serverless application. &lt;/p&gt;

&lt;h3&gt;Function-level Security&lt;/h3&gt;

&lt;p&gt;The first of on the list of security best practices for serverless is to implement function-level security. As serverless allows you to run your applications through a series of functions that can be triggered, it is important to implement security at the functional level. A good practice is to take note of all your functions and check out what each function is meant(or allowed) to do against what it is currently doing. &lt;/p&gt;

&lt;p&gt;A rule of thumb according to &lt;a href="https://twitter.com/hsolow" rel="noopener noreferrer"&gt;Hillel Sollow&lt;/a&gt; is to define separate roles for each function which prevents you from giving certain functions access to data that they don’t need or performing actions that aren’t necessary thereby eliminating security loopholes in your code that can be exploited by attackers.&lt;/p&gt;

&lt;p&gt;AWS Lambda allows you to do this in two distinct ways:&lt;br&gt;
&lt;strong&gt;Through Identity-based policies&lt;/strong&gt; - with this approach, you can either attach policies with permissions to a user or group in your account or you attach a policy to a specific IAM role thereby granting cross-account access to your Lambda function&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Through Lambda Function policies&lt;/strong&gt; - this approach allows you to grant cross-account permissions to your lambda functions without using identity-based policies with IAM roles.&lt;/p&gt;

&lt;h3&gt;Security audits on all dependencies&lt;/h3&gt;

&lt;p&gt;Most serverless applications use a lot of dependencies from Node.js, Python and many other repositories with open-source code. To ensure your application isn't leaving any backdoor to attackers, you need to check all dependencies for vulnerabilities. &lt;/p&gt;

&lt;p&gt;This can pose to be a very hard task in a scenario where you’re running serverless applications with lots of functions but not to worry, there are various solutions like: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;RetireJS - an open source vulnerability checker where developers can check if a Javascript library has any known vulnerabilities through a site-checking service
&lt;/li&gt;
&lt;li&gt;Npm - an open source Javascript registry that acquired Node Security Project. Npm runs vulnerability checks through the npm audit command which is available in npm@6.
&lt;/li&gt;
&lt;li&gt;
Snyk - a commercial vulnerability checker with its own vulnerability database (VD). Snyk works with .NET, PHP, GoLang, Java, Python, Scala, Ruby and Node.js
&lt;/li&gt;
&lt;li&gt;
Greenkeeper - a commercial dependency management tool that automatically manages, updates and tests npm dependencies.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Other solutions exist with the ability to help check dependencies with many of them relying on the &lt;a href="https://nvd.nist.gov/" rel="noopener noreferrer"&gt;NIST’s&lt;/a&gt; National Vulnerability Database (NVD) others rely on both the NIST NVD and their vulnerability databases as well so you will be doing yourself a big favour by searching them out and making good use of them.&lt;/p&gt;

&lt;h3&gt;Eliminate all ‘Dead’ Functions&lt;/h3&gt;

&lt;p&gt;In serverless, ‘dead’ functions are functions that have not been invoked for a very long time. As we all know that serverless gives room for unused functions to lie around thereby increasing the clutter (remember that you don't pay unless a function is invoked). There is a very high chance that you will have lots of unused functions with various permissions and privileges lying around. &lt;/p&gt;

&lt;p&gt;Now, this can pose a very serious challenge to the developer as you can’t know what functions are not in use if they aren’t running and from a security point of view, functions that haven’t been used for a long time run a risk of having outdated libraries and dependencies.&lt;/p&gt;

&lt;h2&gt;So what do you do?&lt;/h2&gt;

&lt;p&gt;Well, besides having a well thought out plan from the get-go you'll have to use a proper monitoring tool for your application. There's no going around it. I'd recommend using &lt;a href="dashbird.io"&gt;Dashbird.io&lt;/a&gt;. It's easy to use, doesn't add any latency to your execution time and is very secure since it connects directly to your AWS account.&lt;/p&gt;

&lt;h3&gt;Don’t write bad code&lt;/h3&gt;

&lt;p&gt;This really can’t be stressed enough. Even with all the best practices mentioned earlier put in place, if you write bad code, you’ll be opening up your application to exploitation by attackers. Therefore, as a rule of thumb, ensure that your developers are continuously trained on coding best practices and all tools and libraries are constantly updated. &lt;/p&gt;

&lt;p&gt;Also, make sure your code goes through extensive code reviews and lots and lots of tests as a small bug in one function can lead to a good enough opening for attackers to infiltrate your application.&lt;/p&gt;

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

&lt;p&gt;As with all applications (serverless or not), security is and will always be a very important factor to consider. &lt;br&gt;
Even though serverless makes the work of cyber attackers harder as the server infrastructure assigned to a function is almost always reset once the function is no longer active, it is still of great importance that your individual functions have been fortified enough to avoid illegal penetration.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to set up alerts for your Lambdas</title>
      <dc:creator>John Demian</dc:creator>
      <pubDate>Mon, 21 Oct 2019 12:01:07 +0000</pubDate>
      <link>https://dev.to/johndemian/how-to-set-up-alerts-for-your-lambdas-689</link>
      <guid>https://dev.to/johndemian/how-to-set-up-alerts-for-your-lambdas-689</guid>
      <description>&lt;p&gt;In this article, we’ll make a brief introduction, and we’ll also talk about the differences between CloudWatch alerts vs. Dashbird alerts. Which one is better and why?&lt;/p&gt;

&lt;h2&gt;What Is Amazon CloudWatch Used For?  &lt;/h2&gt;

&lt;p&gt;Amazon CloudWatch is built for system operators, site reliability engineers (SRE), IT managers and developers as well. CloudWatch allows you to monitor your applications via data access and insights it provides. It can also recognize, understand and respond to all changes happening throughout the entire system. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/cloudwatch/" rel="noopener noreferrer"&gt;CloudWatch&lt;/a&gt; is also collecting monitoring and operational data through metrics, events, and logs which further provides you with a unique view over the AWS resources, services and apps that run on AWS as well as in the localized servers. CloudWatch enables you to set alarms (or alerts), troubleshoot for issues, and discover the insights for application optimization which will ensure that the application runs smooth.&lt;/p&gt;

&lt;h2&gt;  The CloudWatch Alerts Explained&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdocs.aws.amazon.com%2FAWSEC2%2Flatest%2FUserGuide%2Fimages%2Fmonitoring_create_alarm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdocs.aws.amazon.com%2FAWSEC2%2Flatest%2FUserGuide%2Fimages%2Fmonitoring_create_alarm.png"&gt;&lt;/a&gt;&lt;br&gt;
A CloudWatch alert (a.k.a. alarm) can watch over a single CloudWatch metric or even a result of math expression found in CloudWatch metrics. &lt;/p&gt;

&lt;p&gt;Alerts will perform single or multiple actions based on the value of metric or expression which is relative to a threshold over a number of time periods. Adding alarms to CloudWatch dashboard is enabled and that way you’ll be able to monitor them visually. There are three alarm states:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OK&lt;/strong&gt; - meaning that the expression or metric is found inside the already defined threshold;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ALARM&lt;/strong&gt; - implies that the expression or metric are located outside of the specified threshold;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;INSUFFICIENT_DATA&lt;/strong&gt; - this alert is shown when the alarm has already started but the metric is not available, or there’s not enough data for the metric to realize in which state the alarm is.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When creating an alarm, you are able to specify three settings which will allow CloudWatch to evaluate when to change the alarm state:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Period&lt;/strong&gt; - will enable you to evaluate the time length of metric or expression in order to create an individual data point for an alarm;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evaluation Period&lt;/strong&gt; - is the number of the recent data points you need to evaluate to be able to determine the state of the alarm; &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Datapoints to Alarm&lt;/strong&gt; - is the number of data points in the evaluation period which must be breached, so it’s causing the alarm to go to the ALARM state. These breaching data points must all be within the last number of data points which is equal to the Evaluation Period. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are a lot of features that apply to all CloudWatch alarms, and we’ll go through some of them. For example, the number of evaluation periods for an alarm if multiplied by the length of every evaluation period can’t surpass the one day limit. Another feature worth mentioning is that ASCII characters must be included in alarm naming. You are also able to create 5000 alarms within every region per a single AWS account.&lt;/p&gt;

&lt;h2&gt;Dashbird Alerts Explained  &lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdashbird.io%2Fimages%2Fdocs%2Ferrors-teaser.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdashbird.io%2Fimages%2Fdocs%2Ferrors-teaser.png"&gt;&lt;/a&gt;&lt;br&gt;
Dashbird’s instant alerting system will notify you if any issue shows up within any part of your application. Its system offers messages and realistic logs that can be easily read and understood by humans, which will save you and your company a lot of debugging time. &lt;/p&gt;

&lt;p&gt;Dashbird monitors your application and is able to detect all kinds of errors by using various programming languages. Dashbird’s instant alert system will alert you about crashes, timeouts, runtime errors, cold starts, early exits, and configuration errors. &lt;/p&gt;

&lt;p&gt;Dashbird interface also provides an option in the left navigation panel to press the “alert button” which will further take you to the alert page in the Dashbird app. There you have a showcase of all errors occurring in your system. &lt;/p&gt;

&lt;p&gt;Everything mentioned above works for programming languages that are supported by AWS Lambda which also includes Java, Python, C#, and Node.js.&lt;/p&gt;

&lt;p&gt;All the needed data to successfully go through troubleshooting event and resolve any issues inside your application are entirely at your disposal. A human-friendly interface will present you with any previous occurrences, stack traces, logs and trends for every issue or error are also available. You can also use a “more info” button for every single error you face, and that way you’ll see the error page with all the needed info for debugging the current issue.&lt;/p&gt;

&lt;p&gt;Pro-active alerts are another one of Dashbird’s features. Basically, you could set up an email notification alert system, so when your functions are about to reach memory limitations, you will be notified about it. Dashbird provides seamless integration with Slack as well. If you wish to read more about the Dashbird alerts and serverless monitoring tools, how it all works compared to other services, follow this link to our &lt;a href="https://dashbird.io/blog/serverless-monitoring-tools-2018/" rel="noopener noreferrer"&gt;blog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As of January 2019, the new alerting system is out and with the new and improved design &lt;/p&gt;

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

&lt;p&gt;Both CloudWatch and Dashbird have their pros and cons, and we’ll wrap up here after mentioning a few. &lt;/p&gt;

&lt;p&gt;While Cloudwatch is mostly an excellent choice for users who are already inside the AWS ecosystem, it's right there the second you need it but as we established Cloudwatch can be difficult to work with. The alerting options for CloudWatch are not as boundless since they’re available with third-party services.&lt;/p&gt;

&lt;p&gt;Cloudwatch doesn’t offer pre-configured alerts, but you need to create custom alerts on your own which further means you must be very familiar with how everything works in order to create them properly.&lt;/p&gt;

&lt;p&gt;On the other hand, Dashbird’s alert notification system is automated and instant which surely provides you comfort and ease in case something happens within your application.&lt;/p&gt;

&lt;p&gt;If you have any ideas, questions or thoughts, feel free to share them in our comment section below.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
