<?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: James Heggs</title>
    <description>The latest articles on DEV Community by James Heggs (@eggsy84).</description>
    <link>https://dev.to/eggsy84</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%2F464367%2F0d310081-a88f-429c-8661-67fc65d194da.png</url>
      <title>DEV Community: James Heggs</title>
      <link>https://dev.to/eggsy84</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/eggsy84"/>
    <language>en</language>
    <item>
      <title>Technical Leadership Katas - 002 Basing on credibility</title>
      <dc:creator>James Heggs</dc:creator>
      <pubDate>Sat, 11 Sep 2021 08:45:31 +0000</pubDate>
      <link>https://dev.to/eggsy84/technical-leadership-katas-002-basing-on-credibility-1l1h</link>
      <guid>https://dev.to/eggsy84/technical-leadership-katas-002-basing-on-credibility-1l1h</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmp2houuyscidy8kj6u2o.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmp2houuyscidy8kj6u2o.jpeg" alt="Laptop and notebook to indicate someone learning"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;For lots of us our tech roles feel vocational. We have that moment where we realise that we can &lt;em&gt;actually get paid&lt;/em&gt; for doing the things we enjoy such as coding, tinkering with servers or designing things.&lt;/p&gt;

&lt;p&gt;So when we consider management it is often viewed as a fork in the road on our careers. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Route one - do we become more technical, exploring routes like architect or "Senior" {insert role her}, Principle Consultant those kinds of things. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Route Two - do we become managers. Scaling that hierarchy. Leading people and managing their mindset.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The problem with this is we tend to take approaches of reduction based decision making in deciding which route is right for us. As a result, route one and route two become:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Route One - "I can continue learning and get better at {insert skill here}"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Route Two - "I don't want to manage people's holidays"&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This kata is here to debunk that myth and provide an exercise around how you can &lt;strong&gt;base your technical leadership on technical credibility&lt;/strong&gt;. Tips to continue your technical development whilst acknowledging that you'll have further human responsibilities.&lt;/p&gt;

&lt;h2&gt;
  
  
  Past experience and how it played out
&lt;/h2&gt;

&lt;p&gt;Around 12 years ago I was interview when asked where I saw my future going and if I wanted to lead people. Which I answered with a definite NO - I just wanted to code.&lt;/p&gt;

&lt;p&gt;Fast forward and things look a little different now. Much of my work involves management in some form, whether that be decision making or developing our existing engineers. &lt;/p&gt;

&lt;p&gt;But...I always wanted to remain credible. I didn't (and still don't) want to lose those technical skills. Being an engineer whether that be in Software Development or more recently platform engineering was part of my identity. &lt;/p&gt;

&lt;p&gt;For a period of time I noticed my engineering work declining. I also felt those pangs of not knowing certain aspects - I remember one specific time when I'd not refreshed my Java skills and seeing one of our team had implemented a function using &lt;a href="https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html" rel="noopener noreferrer"&gt;Lambda Expressions&lt;/a&gt; and I hadn't encountered that type of syntax before. &lt;/p&gt;

&lt;p&gt;Don't confuse that feeling with ego. That feeling is one of "How can I lead people if I don't have credibility"&lt;/p&gt;

&lt;p&gt;At that point I put in to place some action to ensure I had a level of knowledge that I was comfortable with around the tools/languages/practices being utilised.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kata instructions
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Step 1
&lt;/h4&gt;

&lt;p&gt;Admittedly your time will be more restricted. Create a table to highlight areas where you want to be &lt;strong&gt;Aware&lt;/strong&gt; and &lt;strong&gt;Efficient&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This will help you highlight where time needs to be spent. Efficiency will take longer time to achieve than awareness.&lt;/p&gt;

&lt;p&gt;This will be a working document and change over time. If you do it in markdown it means you will be able to add links to items. &lt;/p&gt;

&lt;p&gt;Here's an example below&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aware&lt;/th&gt;
&lt;th&gt;Efficient&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.pulumi.com/" rel="noopener noreferrer"&gt;Pulumi&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.infoworld.com/article/3569150/jdk-16-the-new-features-in-java-16.html" rel="noopener noreferrer"&gt;Java 16 language features&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Design Systems&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  Step 2
&lt;/h4&gt;

&lt;p&gt;Moving in to leadership means becoming comfortable with your calendar no longer being your own. People will need your support and that means you will have slots in to provide that support in whatever form it takes. &lt;/p&gt;

&lt;p&gt;Counteract that with calendaring your focus time. Some examples I've seen work are 1 hour before things get "busy" or "1 hour after lunchtime", "1 hour at the end of the day". You'll know what is the best time for you (your mindset) and what is realistic for your working environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IMPORTANT&lt;/strong&gt; Make sure to highlight your focus time as &lt;strong&gt;BUSY&lt;/strong&gt; in your calendar software.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 3
&lt;/h4&gt;

&lt;p&gt;Pick a project. Tapping in to the "Purpose" aspect of Dan Pink's great book called &lt;a href="https://www.danpink.com/books/drive/" rel="noopener noreferrer"&gt;Drive&lt;/a&gt; we all need a purpose to a work. If you said go new Java 16 language features without giving a purpose you'd likely have a peak of motivation but then it would wane.&lt;/p&gt;

&lt;p&gt;In step 3 identify a project that you could code, research, create that will improve your life and align that project with your "Efficient" topics. &lt;/p&gt;

&lt;p&gt;Some candidates for this might be automating things that take your (or the teams) time up, researching and implementing new processes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;REALLY IMPORTANT&lt;/strong&gt; Do NOT pick up a project that should be implemented by one of the teams. Everyone hates a leader that goes into their coding hole and then emerges with a brand new tool or process that they suddenly expect people to use.&lt;/p&gt;

&lt;p&gt;If anyone wants advice on this one please do drop in the comments!&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 4
&lt;/h4&gt;

&lt;p&gt;Earlier steps highlighted that time is now at a premium so you need a few cheats when it comes to staying up to date on technical practices and tools. &lt;/p&gt;

&lt;p&gt;Newsletters can be one of those cheats.&lt;/p&gt;

&lt;p&gt;Using your aware/efficient table - Sign up for a &lt;a href="https://github.com/zudochkin/awesome-newsletters" rel="noopener noreferrer"&gt;few newsletters&lt;/a&gt; from the following link.&lt;/p&gt;

&lt;p&gt;I particularly like &lt;a href="https://www.devopsweekly.com/" rel="noopener noreferrer"&gt;DevOps Weekly&lt;/a&gt; and my favourite cheat is the &lt;a href="https://www.thoughtworks.com/radar" rel="noopener noreferrer"&gt;ThoughtWorks Tech Radar&lt;/a&gt;. &lt;/p&gt;

&lt;h4&gt;
  
  
  Step 5
&lt;/h4&gt;

&lt;p&gt;Identify which calendar slots you'll dedicate on working on your project and which ones you'll use to update yourself via your newsletters.&lt;/p&gt;

&lt;h2&gt;
  
  
  Submission process
&lt;/h2&gt;

&lt;p&gt;The following write-ups should be recorded in your GitHub repo within the corresponding kata directly.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Your Aware/Efficient markdown file
&lt;/h3&gt;

&lt;p&gt;Create a file called PERSONALDEVELOPMENTFOCUS.md and create your aware/efficient table.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Your project
&lt;/h3&gt;

&lt;p&gt;Create a markdown file that identifies and explains the project you'll be working on.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Your focus time
&lt;/h3&gt;

&lt;p&gt;Create a markdown file called FOCUSTIME.md that outlines your calendar plan and how that time will be spent. Apply the information from this file to your personal calendar.&lt;/p&gt;

</description>
      <category>leadership</category>
      <category>career</category>
      <category>tutorial</category>
      <category>techlead</category>
    </item>
    <item>
      <title>Technical Leadership Katas - 001 Your situational starting point</title>
      <dc:creator>James Heggs</dc:creator>
      <pubDate>Tue, 31 Aug 2021 21:59:42 +0000</pubDate>
      <link>https://dev.to/eggsy84/tech-lead-katas-001-your-situational-starting-point-171b</link>
      <guid>https://dev.to/eggsy84/tech-lead-katas-001-your-situational-starting-point-171b</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=pykuvuA-QFU"&gt;Situational leadership&lt;/a&gt; is a great tool for leading technical teams. Utilising situational leadership you can transform the progress of an individual and their own development.&lt;/p&gt;

&lt;p&gt;To apply situational leadership I think you have to first start with yourself. Understanding your own take on the leadership approaches and where you naturally start.&lt;/p&gt;

&lt;h2&gt;
  
  
  Past experience and how it played out
&lt;/h2&gt;

&lt;p&gt;In the past I was unaware of my natural starting point and the impact it had on my colleagues.&lt;/p&gt;

&lt;p&gt;One of my teams were undertaking a new project to implement &lt;a href="https://en.wikipedia.org/wiki/Single_sign-on"&gt;single sign on&lt;/a&gt; across our web application stack.&lt;/p&gt;

&lt;p&gt;It was the first project for a brand new tech lead that had joined our team. Not only was it their first project it was also their first tech lead role EVER!&lt;/p&gt;

&lt;p&gt;My natural starting point, although I was unaware at the time, is that of &lt;strong&gt;supporting&lt;/strong&gt;. I tend to go straight to "Here's a project, I'm here if you need me".&lt;/p&gt;

&lt;p&gt;It took me a number of weeks to realise for that given task, in the given context, I'd started at the wrong point whilst guiding the team.&lt;/p&gt;

&lt;p&gt;Thankfully the tech lead in question had enough relationship confidence to bring this to my attention. I think the words they used were similar "Please can you just tell me exactly how to go about this". Seeing their fear of failure and realising they'd never faced a task this large or cross cutting I realised that I'd started at the wrong point for the tech lead (and subsequently their team).&lt;/p&gt;

&lt;p&gt;If I'd been aware of understanding myself and then responding (ironically as the framework points out) to the situation then I could have saved the technical lead a few weeks anguish, fearing they would be unable to get the task done and internally questioning their skillset.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kata instructions
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Step 1
&lt;/h4&gt;

&lt;p&gt;Gather an understanding of what situational leadership is by watching &lt;a href="https://www.youtube.com/watch?v=pykuvuA-QFU"&gt;this video&lt;/a&gt;. If you've already come across it then jump on to step 2.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 2
&lt;/h4&gt;

&lt;p&gt;Identify which quadrant you naturally fall on. At around the 2m20s mark on the video, it outlines the 4 different leadership styles. Review those styles and identify what is your most common "go to" approach. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Really important&lt;/strong&gt; Do not think of one approach to be bad or good. Each of them have their own place and actually you'll want to leverage all of them depending on the situation. For this step just focus on identifying what &lt;strong&gt;YOUR&lt;/strong&gt; most common approach is. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TIP&lt;/strong&gt; If you find it hard to identify it yourself then ask a friend or colleague. Often people will share insight with you that you hadn't considered.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 3
&lt;/h4&gt;

&lt;p&gt;Reflect on a time you have provided guidance on a task. Label it as either "Directing", "Coaching", "Supporting" or "Delegating".&lt;/p&gt;

&lt;p&gt;Here's an example:&lt;/p&gt;

&lt;p&gt;"In a recent discussion with an &lt;strong&gt;{role}&lt;/strong&gt; on our team, they wanted a discussion about &lt;strong&gt;{task}&lt;/strong&gt;. The supporting detail around the task was &lt;strong&gt;{task context}&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;I approached the task is a &lt;strong&gt;{leadership style}&lt;/strong&gt;."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important&lt;/strong&gt; In this step only make sure to record the approach taken. Label it but do not judge it just yet.&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 4
&lt;/h4&gt;

&lt;p&gt;You can't change the past but you can reflect on it.&lt;/p&gt;

&lt;p&gt;Reflect on your notes from step 3. &lt;/p&gt;

&lt;p&gt;Did you take what was the best situational approach? &lt;/p&gt;

&lt;p&gt;Did you just go with your natural situational starting point and if so was that correct or would you change anything now?&lt;/p&gt;

&lt;p&gt;If you had taken a different approach what might have been the outcome? Positive or negative.&lt;/p&gt;

&lt;h2&gt;
  
  
  Submission process
&lt;/h2&gt;

&lt;p&gt;The following write-ups should be recorded in your GitHub repo.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Identify your natural situational starting point
&lt;/h3&gt;

&lt;p&gt;Write up detail around your natural starting point. Why do you start there? What experiences from the past have had an impact on you and lead you to that starting point?&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Share the story
&lt;/h3&gt;

&lt;p&gt;Write up notes from your own personal story relating to step 3 above.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Iterate and improve
&lt;/h3&gt;

&lt;p&gt;Write up the review notes relating to step 4 above. Reflect as much as possible on different situational approaches. &lt;/p&gt;

</description>
      <category>leadership</category>
      <category>career</category>
      <category>techlead</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Technical Leadership Katas</title>
      <dc:creator>James Heggs</dc:creator>
      <pubDate>Tue, 31 Aug 2021 21:59:24 +0000</pubDate>
      <link>https://dev.to/eggsy84/tech-lead-katas-99l</link>
      <guid>https://dev.to/eggsy84/tech-lead-katas-99l</guid>
      <description>&lt;h2&gt;
  
  
  Soft skills - You're joking right?
&lt;/h2&gt;

&lt;p&gt;Technical leadership is hard. In fact let's put it out there, working with people in any capacity is hard. &lt;/p&gt;

&lt;p&gt;People have feelings, emotions, outside influences, past experiences, current experiences, families, friends, lost families, lost friends and quite literally everything in between. Not to mention the whole "social media" thing and how that impacts us.&lt;/p&gt;

&lt;p&gt;Given that knowledge, pushing yourself in to any form of position where you are responsible for those people is a very vulnerable and scary place to be. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;When I say vulnerable I totally mean the relation that &lt;a href="https://www.ted.com/talks/brene_brown_the_power_of_vulnerability?language=en"&gt;vulnerability has to courage&lt;/a&gt; and Brené Brown's amazing work.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Those type of skills, to lead people, are described as many different things and whether you agree with the term 'soft skills' or not (aside: Some people don't disagree with the term but feel our cultural interpretation of being 'soft' is wrong) I think one thing I hope we all agree on is that acquiring leadership skills is really tough. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Interesting whilst writing this I thought I'd try and find out where that phrase &lt;a href="https://code.joejag.com/2018/the-origin-of-soft-skills.html"&gt;'soft skills' originated from&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Managing (yep I said the M word) people with all those different emotions is really tough. &lt;/p&gt;

&lt;p&gt;The type of immediate feedback we get from a failed unit test or failed deployment carries little to zero emotion (ok maybe not the deployment one 🙈). It's cold, hard and objective. The type of immediate feedback we get from an idea, approach, bad news, good news tends to be very different.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kata exercises
&lt;/h2&gt;

&lt;p&gt;Why not take the approach to managerial development in the same way that we might take with perfecting or learning a language through a series of Katas.&lt;/p&gt;

&lt;p&gt;Over this "Tech Lead Kata" series, I'm going to share a series of Kata exercises for growing yourself as a technical leader.&lt;/p&gt;

&lt;p&gt;Based on past managerial experiences I'll share some of the things that have got me through. I'll also share my stuff ups, the things I got wrong so you avoid being as stupid and foolish as me.&lt;/p&gt;

&lt;p&gt;My aim is to share a Kata a week and lets get to 10 exercises and see how we get on. &lt;/p&gt;

&lt;h2&gt;
  
  
  Why bother listening to me?
&lt;/h2&gt;

&lt;p&gt;Fair question! Your initial mind will quite rightly be skeptical and anything persuasive I write will have zero impact on your choice. &lt;/p&gt;

&lt;p&gt;So I'll be all political and ask the question back - what's the alternative? Compare the kata exercises to alternatives, if you think they look good then go for them, if your alternative personal development approach looks like it'll yield better results then go for that one. &lt;/p&gt;

&lt;p&gt;For the purposes of your comparison &lt;a href="https://www.linkedin.com/in/jheggs/"&gt;here is my LinkedIn&lt;/a&gt; if you want to understandably make some judgements 🤣&lt;/p&gt;

&lt;p&gt;And you've also got the comments section - please please 🙏 share your thoughts in there to help others build up a picture on whether they should bother investing their time on the katas.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to start?
&lt;/h2&gt;

&lt;p&gt;Here's a suggested way of getting involved&lt;/p&gt;

&lt;p&gt;Spin up a repository under your own account called "tech-lead-katas".&lt;/p&gt;

&lt;p&gt;Within that repository create a directory for each and a README.md file within that directory. Something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;tech-lead-katas
    ├── 001-natural-situational-starting-point
    │   └── README.md
    └── 002-some-other-kata
        └── README.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For those that are really brave, I'd encourage learning in the open - share the links to your kata submissions as comments on the posts! Or even start discussions around what you thought about the Kata - we'll all learn from each other.&lt;/p&gt;

&lt;p&gt;Learning in the open will increase your connection and accountability to what you are working through much in the way that tools like &lt;a href="https://www.100daysofcode.com/"&gt;#100daysOfCode&lt;/a&gt; or &lt;a href="https://www.100daysofcloud.com/"&gt;#100DaysOfCloud&lt;/a&gt; do&lt;/p&gt;

&lt;h2&gt;
  
  
  Kata 1 - Your natural situational starting point
&lt;/h2&gt;

&lt;p&gt;Got this far and still reading??! Phew! &lt;/p&gt;

&lt;p&gt;Here's the first Kata - &lt;a href="https://dev.to/eggsy84/tech-lead-katas-001-your-situational-starting-point-171b"&gt;Understanding your natural situational starting point&lt;/a&gt;&lt;/p&gt;

</description>
      <category>leadership</category>
      <category>tutorial</category>
      <category>techlead</category>
      <category>career</category>
    </item>
    <item>
      <title>GCP DevOps Certification - Pomodoro Twelve</title>
      <dc:creator>James Heggs</dc:creator>
      <pubDate>Sat, 15 May 2021 13:14:08 +0000</pubDate>
      <link>https://dev.to/eggsy84/gcp-devops-certification-pomodoro-twelve-4nhn</link>
      <guid>https://dev.to/eggsy84/gcp-devops-certification-pomodoro-twelve-4nhn</guid>
      <description>&lt;h1&gt;
  
  
  System Complexity
&lt;/h1&gt;

&lt;p&gt;The &lt;a href="https://www.coursera.org/learn/site-reliability-engineering-slos/home/welcome"&gt;Coursera SRE programmes&lt;/a&gt; shifts on to discussing system complexity and the introduction of the initial Service Level Indicators. Google recommend that around 1 to a maximum of 3 SLI's per user journey should be enough.&lt;/p&gt;

&lt;p&gt;Thoughts behind limiting the number to a maximum of 3 SLI's:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Not all metrics make could SLIs&lt;/li&gt;
&lt;li&gt;Each SLI increases the cognitive load on the operations team&lt;/li&gt;
&lt;li&gt;More SLIs lower the signal-to-noise ratio (which can impact resolution time)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You may also have lots of user journey's through your complex system still resulting in many SLI's - however each journey should be assessed as to whether or not it is "important enough" to be tracked by a SLI.&lt;/p&gt;

&lt;h3&gt;
  
  
  An important caveat
&lt;/h3&gt;

&lt;p&gt;Other metrics you might be already recording still have value. The above recommendation isn't one that should be used to ditch your existing metrics.&lt;/p&gt;

&lt;p&gt;A deterioration in SLI's is an indicator that something is wrong, once that deterioration is bad enough to provoke some operational response that the other monitoring systems will really help in ascertaining a cause.&lt;/p&gt;

&lt;h1&gt;
  
  
  Managing complexity with aggregation
&lt;/h1&gt;

&lt;p&gt;You might have multiple user journeys.&lt;/p&gt;

&lt;p&gt;Take example an online store. People can view a home page that lists products. They can search for products. They can browse products by category and they can see the individual product details.&lt;/p&gt;

&lt;p&gt;Each of those could be separate user journeys and result in multiple SLI's. However if you aggregated what you collect (in terms of SLI) from each journey then the SLI could be determined as an overall "Browse" SLI.&lt;/p&gt;

&lt;p&gt;The Google course provides this example:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MeJSBgyf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7breejm1dur0uem89rtc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MeJSBgyf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7breejm1dur0uem89rtc.png" alt="Google SLI aggregation" width="800" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If all have availability and latency SLI's then they could be aggregated.&lt;/p&gt;

&lt;h3&gt;
  
  
  Another important caveat
&lt;/h3&gt;

&lt;p&gt;Summing events together can work well for similar user journeys. However it might not fit a scenario where there is a large disparity between rates of the user journey such as request rates differing significantly. &lt;/p&gt;

&lt;p&gt;IE. The number of &lt;strong&gt;valid&lt;/strong&gt; events (thinking back to previous pomodoros) for a small &lt;em&gt;but&lt;/em&gt; significant user journey could get lost in the noise of higher rate user journey.&lt;/p&gt;

&lt;p&gt;If you face that then multiplying the SLI's by a weight based upon their portion of the whole might be on option for normalising data across and aggregation.&lt;/p&gt;

</description>
      <category>googlecloud</category>
      <category>devops</category>
      <category>sre</category>
      <category>certification</category>
    </item>
    <item>
      <title>GCP DevOps Certification - Pomodoro Eleven</title>
      <dc:creator>James Heggs</dc:creator>
      <pubDate>Sun, 09 May 2021 16:15:45 +0000</pubDate>
      <link>https://dev.to/eggsy84/gcp-devops-certification-day-eleven-4njh</link>
      <guid>https://dev.to/eggsy84/gcp-devops-certification-day-eleven-4njh</guid>
      <description>&lt;h1&gt;
  
  
  Data processing SLI's
&lt;/h1&gt;

&lt;p&gt;There is a high likelihood that you'll be working working with a platform that works with user provided or user generated information to provide a service.&lt;/p&gt;

&lt;p&gt;Google recommend four different types of SLI's for that use case:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Freshness&lt;/li&gt;
&lt;li&gt;Correctness&lt;/li&gt;
&lt;li&gt;Coverage&lt;/li&gt;
&lt;li&gt;Throughput&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's review each of them, much along the similar lines of previous blogs Google uses the term "valid", this time in regards to the data and "proportions" to reflect things as percentages.&lt;/p&gt;

&lt;h2&gt;
  
  
  Freshness
&lt;/h2&gt;

&lt;p&gt;The data "freshness" can be considered as the proportion of valid data updated more recently than a give threshold. &lt;/p&gt;

&lt;p&gt;Given that definition an implementation requires making two choices, which of the data this system processes are &lt;strong&gt;valid&lt;/strong&gt; for the SLI, and, when the timer for measuring the freshness of the data starts and stops.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Correctness
&lt;/h2&gt;

&lt;p&gt;When speaking of data correctness its important to note that users often have independent ways of validity checking data from your systems. As a result its important to consider an SLI for data correctness to ensure trust with your users.&lt;/p&gt;

&lt;p&gt;The data "correctness" can be considered as the proportion of valid data producing correct output. &lt;/p&gt;

&lt;p&gt;Given that definition an implementation requires making two choices, which of the data this system processes are &lt;strong&gt;valid&lt;/strong&gt; for the SLI and how to determine whether the data is "correct".&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Coverage
&lt;/h2&gt;

&lt;p&gt;A coverage SLI is useful for scenarios when users have an expectation of when the data will be made available for them.&lt;/p&gt;

&lt;p&gt;Data "coverage" can be considered as the proportion of valid data processed successfully. &lt;/p&gt;

&lt;p&gt;Given that definition an implementation requires making two choices, which of the data this system processes are &lt;strong&gt;valid&lt;/strong&gt; and whether the piece of data was processed successfully.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Throughput
&lt;/h2&gt;

&lt;p&gt;Throughput SLI's for data are useful in scenarios where a latency SLI might not be right. EG. If the latency throughput varies a lot (peak times versus quiet times) then maybe a data throughput SLI might be applicable.&lt;/p&gt;

&lt;p&gt;Data "throughput" can be considered as the proportion of time where the data processing rate is faster than a threshold.&lt;/p&gt;

&lt;p&gt;For this SLI to work you have to turn an event into a portion of time. IE. How long did that one event take to process. Such as Bytes per second. &lt;/p&gt;

&lt;p&gt;Any metric that scales at the same rate as the cost of processing should work for tracking the SLI. EG. Big data file to process would need longer time or more processing power.&lt;/p&gt;

</description>
      <category>googlecloud</category>
      <category>devops</category>
      <category>sre</category>
      <category>certification</category>
    </item>
    <item>
      <title>GCP DevOps Certification - Pomodoro Ten</title>
      <dc:creator>James Heggs</dc:creator>
      <pubDate>Mon, 08 Feb 2021 18:33:36 +0000</pubDate>
      <link>https://dev.to/eggsy84/gcp-devops-certification-day-ten-5d0g</link>
      <guid>https://dev.to/eggsy84/gcp-devops-certification-day-ten-5d0g</guid>
      <description>&lt;h1&gt;
  
  
  Formalising the SLI definition
&lt;/h1&gt;

&lt;p&gt;In a previous post I shared the learning that the SLI should be expressed as a ratio between two numbers. That of &lt;strong&gt;good events&lt;/strong&gt; over &lt;strong&gt;valid events&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ezUosRjq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/z7kym0u6lu2kx7bf068w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ezUosRjq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/z7kym0u6lu2kx7bf068w.png" alt="Alt Text" width="363" height="90"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Working that way it allows us to ensure that SLI's fall as a percentage between 0% and 100%.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;0% nothing is working&lt;/li&gt;
&lt;li&gt;100% nothing is broken&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This means it is intuitive and directly translates to SLO targets and the concept of error budgets.&lt;/p&gt;

&lt;p&gt;Also because of the consistent percentage format it means that building tooling to track your SLI's is made easier. Alerting, SLO reporting etc can all be written to expect that same structure. Good events, valid events and your SLO threshold(s).&lt;/p&gt;

&lt;h1&gt;
  
  
  Valid Events
&lt;/h1&gt;

&lt;p&gt;It might be tempting to consider ALL events. However the phrasing of &lt;strong&gt;valid&lt;/strong&gt; is important as it allows for explicit declarations of events that would not be considered.&lt;/p&gt;

&lt;p&gt;EG. You might receive some level of bots accessing your site impacting performance of their requests. As you learn about SLI performance then you can choose to exclude those from valid events. Another example might be that you have hundreds of possible HTTPS API calls but you decrease the scope of SLI monitoring down to specific request paths. So all &lt;strong&gt;valid&lt;/strong&gt; paths are the ones within that scope.&lt;/p&gt;

&lt;h1&gt;
  
  
  Working example for request/response interaction
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Availability
&lt;/h2&gt;

&lt;p&gt;To utilise an SLI for availability then there are two choices to make:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which requests are to be tracked as &lt;strong&gt;valid&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;What makes a response &lt;strong&gt;successful&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using terms already covered then it can be expressed as the proportion of &lt;strong&gt;valid&lt;/strong&gt; requests served &lt;strong&gt;successfully&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You might be required to write complex logic to identify how available a system might be such as whether or not a user completed a full user journey, discounting where they might have voluntarily exited the process. &lt;/p&gt;

&lt;p&gt;For example an e-commerce application might have a journey of:&lt;/p&gt;

&lt;p&gt;Search =&amp;gt; View =&amp;gt; Add to basket =&amp;gt; Checkout =&amp;gt; Purchase =&amp;gt; Confirmation&lt;/p&gt;

&lt;p&gt;However people can "drop out" at any stages (irrespective of how available the system is) so measuring the SLI should only consider full user journeys.&lt;/p&gt;

&lt;h2&gt;
  
  
  Latency
&lt;/h2&gt;

&lt;p&gt;For a web application, much like availability we can define it as the proportion of &lt;strong&gt;valid&lt;/strong&gt; requests served &lt;strong&gt;faster&lt;/strong&gt; than the threshold.&lt;/p&gt;

&lt;p&gt;So yet again there are two choices:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which requests are to be tracked as &lt;strong&gt;valid&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;When the timer should start and stop for those valid requests&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Setting a threshold for &lt;em&gt;fast enough&lt;/em&gt; is dependent on how accurately measured latency translates to the user experience and is more closely related to the SLO target. For example you can engineer a system to give a perception of speed with techniques like pre-fetching or caching.&lt;/p&gt;

&lt;p&gt;Commonly you might set a threshold of 95% of all requests will respond faster than the threshold. However it is likely that people will still be happy if a lower percentage is present and generally the results would be long tail. EG. Some individuals will get a very slow experience but small percentages. So it might be worth setting thresholds that target 75% to 90% of requests.&lt;/p&gt;

&lt;p&gt;Latency isn't just request/response. There might be scenarios such as data pipeline processing where latency comes in to play.&lt;/p&gt;

&lt;p&gt;EG. If you have a batch processing pipeline that executes daily then it should not take more than 24 hours to complete.&lt;/p&gt;

&lt;p&gt;A note on tracking latency of jobs is when alerts are triggered. If you only report when a batch job has completed and missed the latency target then you window between the threshold and job completion becomes a problem.&lt;/p&gt;

&lt;p&gt;Let us assume a threshold of 60 minutes for a batch job but you job takes 90 minutes and triggers the SLO alert. There was a 30 minute window where we were operationally unaware of something having broken the SLO.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quality
&lt;/h2&gt;

&lt;p&gt;Back to our percentages, quality can be expressed by understanding two values. The proportion of &lt;strong&gt;valid&lt;/strong&gt; requests served without &lt;strong&gt;degrading quality&lt;/strong&gt;. This leaves our choices as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which requests are to be tracked as &lt;strong&gt;valid&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;How to determine whether the response was served with &lt;strong&gt;degrading quality&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Similar to latency it might be worthwhile to set SLO targets across a spectrum because of their interaction with an availability target SLO.&lt;/p&gt;

&lt;p&gt;The programme I am studying provides an example of a web application that fans out requests across 10 servers each of which have 99.9% availability SLO and each backend has an ability to reject requests when they are overloaded.&lt;/p&gt;

&lt;p&gt;So you might say something like 99% of service responses have no missing backend responses. Further, that 99.9% have less than 1 missing backend response. Illustrated below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AIRd6asR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/i8uvlf2a31q6bsdpa07e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AIRd6asR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/i8uvlf2a31q6bsdpa07e.png" alt="Quality example" width="365" height="294"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>certification</category>
      <category>googlecloud</category>
      <category>devops</category>
      <category>sre</category>
    </item>
    <item>
      <title>Creativity in the Ops</title>
      <dc:creator>James Heggs</dc:creator>
      <pubDate>Mon, 12 Oct 2020 21:46:05 +0000</pubDate>
      <link>https://dev.to/eggsy84/creativity-in-the-ops-15ii</link>
      <guid>https://dev.to/eggsy84/creativity-in-the-ops-15ii</guid>
      <description>&lt;h1&gt;
  
  
  Why a career in cloud engineering?
&lt;/h1&gt;

&lt;p&gt;I recently asked the &lt;a href="https://www.linkedin.com/posts/jheggs_kubernetes-devopsculture-devops-activity-6709714457393688577--42K"&gt;following question to my LinkedIn network&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Platform engineers / SRE folk / Ops people&lt;/p&gt;

&lt;p&gt;What is it that brings us into those careers/interests? What gets us out of bed each day?&lt;/p&gt;

&lt;p&gt;For me it's the diversity of tech alongside being on the operational frontline&lt;/p&gt;

&lt;p&gt;Or maybe it's just because of #kubernetes right?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Some of the community thoughts
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Personally, the ability to provide a foundation for other people to create amazing things always pushes me to get out of bed in the morning.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;....there is a lot of team work involved and adapting and overcoming any obstacles that are faced.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;On the platform side, I'm all about elegance, and security.  Building and maintaining the infrastructure that makes thing hyper-secure, enables hyper-scale, and is simple to understand, yet elegant in its design.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;and &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The drive ultimately became the metrics; measuring and optimising the KPIs, tweaking and tweaking until the graphs represented perfection.&lt;/p&gt;

&lt;p&gt;Now it’s just the people.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Why share this?
&lt;/h1&gt;

&lt;p&gt;Those answers show the passion that people have for DevOps. Each of those leaders are really passionate for their craft and will encourage even more people with diverse background into DevOps based environments. And wow do we need it....&lt;/p&gt;

&lt;p&gt;In the latest &lt;a href="https://cloud.google.com/devops/state-of-devops"&gt;DORA State of DevOps report&lt;/a&gt; only 10% of individuals identified as female (of over 1000 surveyed).&lt;/p&gt;

&lt;p&gt;And compare that to last year where it was 12%. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NtdUMJ7g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/0uo43xifdsk1ec2ywaa0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NtdUMJ7g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/0uo43xifdsk1ec2ywaa0.png" alt="DORA Report Gender" width="800" height="329"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If we look at Women in Tech as a whole, it currently sits around 18% as an industry wide average.&lt;/p&gt;

&lt;p&gt;We quite clearly have an even bigger gender diversity issue within DevOps.&lt;/p&gt;

&lt;p&gt;It doesn't stop there.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eqU95NS2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/ek5e7p55m7p3whbg6vmg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eqU95NS2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/ek5e7p55m7p3whbg6vmg.png" alt="DORA disability diversity" width="800" height="313"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  What can we do
&lt;/h1&gt;

&lt;p&gt;Over the past few years working with our &lt;a href="https://techreturners.com"&gt;Tech Returners&lt;/a&gt; I always ask what brings people to return to their technical careers or even what brought them to tech in the first place.&lt;/p&gt;

&lt;p&gt;The majority of answers fall under two camps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Creativity&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Working in a team to create things (or solve problems) for people&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As a DevOps community, I believe that we can do more to encourage people to return or enter platform/cloud/SRE based roles. &lt;/p&gt;

&lt;p&gt;We often focus on the complexities of architectures or massage our own egos around our operational skills/war stories. We've all been to a meetup where the speaker asks for any questions, only to receive some rhetoric about how they should have done something differently.&lt;/p&gt;

&lt;p&gt;If we focus on the creativity of ops roles paired with those human connections I believe we can build a more inclusive DevOps community. &lt;/p&gt;

&lt;p&gt;In turn we'll be so much more productive because of being able to leverage all of that diverse thinking!&lt;/p&gt;

&lt;h1&gt;
  
  
  Signposting
&lt;/h1&gt;

&lt;p&gt;Hopefully you might be a bit more inspired by cloud engineering roles and if so here's a few more community links you might find interesting:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.womenindevops.com/"&gt;Women in DevOps&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.meetup.com/DevOps-Manchester/"&gt;DevOps Manchester&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.leedsdevops.org.uk/"&gt;Leeds DevOps&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://techbeacon.com/devops/20-influential-women-devops"&gt;20 women in DevOps&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>sre</category>
    </item>
    <item>
      <title>GCP DevOps Certification - Pomodoro Nine</title>
      <dc:creator>James Heggs</dc:creator>
      <pubDate>Sat, 10 Oct 2020 10:26:43 +0000</pubDate>
      <link>https://dev.to/eggsy84/gcp-devops-certification-day-nine-56lh</link>
      <guid>https://dev.to/eggsy84/gcp-devops-certification-day-nine-56lh</guid>
      <description>&lt;h1&gt;
  
  
  A pause
&lt;/h1&gt;

&lt;p&gt;I had to pause my learning for a few days. I think personally I just needed to let other things take priority - delivering on &lt;a href="https://techreturners.com"&gt;Tech Returners&lt;/a&gt; and making sure our forthcoming backend lessons are structured well ended up taking my "tech" priorities&lt;/p&gt;

&lt;p&gt;The remaining time was focused on being a Dad - my current "personal project" is teaching my boy to ride his bike. Which is certainly reminding me of my natural fixed mindset. Consciously, day by day, remembering to be &lt;a href="https://www.amazon.co.uk/Mindset-Updated-Changing-Fulfil-Potential/dp/147213995X/ref=sr_1_1?crid=25DUGSN6ZABYO&amp;amp;dchild=1&amp;amp;keywords=growth+mindset&amp;amp;qid=1602324134&amp;amp;sprefix=growth+mind%2Caps%2C147&amp;amp;sr=8-1"&gt;growth mindset&lt;/a&gt; and pass those thoughts of &lt;strong&gt;yet&lt;/strong&gt; down to my son.&lt;/p&gt;

&lt;p&gt;But enough about that time now for further SRE and this next few days it is about metrics, measuring and SLI's.&lt;/p&gt;

&lt;h1&gt;
  
  
  Characteristics of a good SLI
&lt;/h1&gt;

&lt;p&gt;The first concept is that Service Level Indicators should have a predictable relationship with the happiness of your application users.&lt;/p&gt;

&lt;p&gt;Most ops teams will be monitoring some for of system metrics like load average, CPU utilisation, memory usage etc&lt;/p&gt;

&lt;p&gt;Are they good SLI's?&lt;/p&gt;

&lt;p&gt;Probably not - the user doesn't care about the processor usage, they do care if your site/application is responding slowly.&lt;/p&gt;

&lt;p&gt;Ok so what about correlations - you might see thread pool usage correlate with unhappy users so it seems like an SLI over the thread pools could be a good one?&lt;/p&gt;

&lt;p&gt;Probably not - there could be cause/effect assumptions on the thread pool, jumping to a conclusion of system trend to user happiness could result in picking the wrong SLI.&lt;/p&gt;

&lt;p&gt;Side note....I've done this....on multiple occasions. Maybe not as specifically for defining an SLO but definitely for when to page people and wake them up out of bed.&lt;/p&gt;

&lt;h1&gt;
  
  
  Cut to the chase
&lt;/h1&gt;

&lt;p&gt;So the characteristics of a good SLI are:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qeEnuXXt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/nbp4ts4myzr8pe15b1ua.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qeEnuXXt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/nbp4ts4myzr8pe15b1ua.png" alt="Good SLI characteristics" width="381" height="372"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Has a predictable relationship with user happiness&lt;/li&gt;
&lt;li&gt;Shows service is working as users expect it to&lt;/li&gt;
&lt;li&gt;Expressed as ratio of two numbers &lt;strong&gt;good events&lt;/strong&gt; / &lt;strong&gt;valid events&lt;/strong&gt; (resulting in value between zero and 100%)&lt;/li&gt;
&lt;li&gt;Aggregated over a long time window&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The last point is visualised really well in the example below&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8u1YazyQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/2xx2hdbnmfo3r8ibo7hi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8u1YazyQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/2xx2hdbnmfo3r8ibo7hi.png" alt="Good SLI trend" width="671" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notice that whilst both metrics capture a downward trend in user happiness. The top metric suffers from a lot more variance. In fact at one stage we might see that the percentage starts to increase and hit a false dawn that we have improved the reliability (in turn the happiness) only to find it decrease again shortly.&lt;/p&gt;

&lt;p&gt;Also notice that during "happy times" the bottom example SLI has a narrow range of values - predictable and trending.&lt;/p&gt;

&lt;h1&gt;
  
  
  Ways of Measuring
&lt;/h1&gt;

&lt;p&gt;There are 5 ways/approaches to measuring your SLI&lt;/p&gt;

&lt;h3&gt;
  
  
  Request Logs
&lt;/h3&gt;

&lt;p&gt;This approach allows you to track the reliability of long user journeys. Such as a journey that navigates through multiple services. It also allows an option for back filling your SLI data if you still have your server side logs.&lt;/p&gt;

&lt;p&gt;It will likely need a portion of engineering effort especially if there is some form of logic for identifying good user journeys (through multiple services).&lt;/p&gt;

&lt;p&gt;Another potential drawback is that if it takes a portion of time process logs in order to find out whether the event was good or bad then you are risking an increase to your &lt;strong&gt;Time to Detect&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Application Metrics
&lt;/h3&gt;

&lt;p&gt;This has the same engineering challenge as logs in such that they might not tell the full story of the user journey (without engineering effort) however they are much easier to implement and you can get started exporting them relatively quickly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Frontend Infrastructure Metrics
&lt;/h3&gt;

&lt;p&gt;Stats from things like your frontend load balancer provide metrics that are the closest to the user.&lt;/p&gt;

&lt;p&gt;Cloud providers might also have historical data that you can utilise to check if your SLI is predictable and aligns with happiness.&lt;/p&gt;

&lt;p&gt;Downside is that your load balancer is likely stateless so cannot track a full user journey/session.&lt;/p&gt;

&lt;h3&gt;
  
  
  Synthetic Clients
&lt;/h3&gt;

&lt;p&gt;Essentially acting like a user. A tool would act like a user. Crucially it should live outside of your infrastructure, acting and behaving exactly like a user. Theory that Happy synthetic clients === user happiness. (Yes the triple equals was intentional 🤦‍♂️)&lt;/p&gt;

&lt;p&gt;The challenge is of course that a synthetic client is only a best guess of the average user. And users (humans) do unexpected things.&lt;/p&gt;

&lt;p&gt;After the engineering effort this approach can often devolve in to &lt;a href="https://martinfowler.com/bliki/IntegrationTest.html"&gt;Integration Testing&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Client Side Instrumentation
&lt;/h3&gt;

&lt;p&gt;Provides the most accurate way of user experience.&lt;/p&gt;

&lt;p&gt;Challenges are that it could have an impact on things like the battery life of your device, page performance etc.&lt;/p&gt;

&lt;p&gt;Relying on these for quick operational response might also be risky due to the reliance on your clients usage of the application. &lt;/p&gt;

&lt;p&gt;Another challenge of this aspect is the outside noise such as bad experience due to users being out of signal range. To give an example, you might find out that mobile clients suffer poor latency and higher error rates, but because you can't do a whole lot about it, you have to relax your SLO targets to accommodate it instead.&lt;/p&gt;

</description>
      <category>certification</category>
      <category>googlecloud</category>
      <category>devops</category>
      <category>sre</category>
    </item>
    <item>
      <title>GCP DevOps Certification - Pomodoro Eight</title>
      <dc:creator>James Heggs</dc:creator>
      <pubDate>Mon, 05 Oct 2020 11:04:29 +0000</pubDate>
      <link>https://dev.to/eggsy84/gcp-devops-certification-day-eight-794</link>
      <guid>https://dev.to/eggsy84/gcp-devops-certification-day-eight-794</guid>
      <description>&lt;h1&gt;
  
  
  Improving reliability
&lt;/h1&gt;

&lt;p&gt;Shifting away from impacts on reliability, it's time to move to thinking about how to improve reliability.&lt;/p&gt;

&lt;p&gt;There are lots of options for improvement and prioritising them requires some thought. I'll share the options in a moment but the Google SRE team share this calculation for measuring the impact on your error budget.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EWQQjBdz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/7x5utw11wfvfn65oa8ks.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EWQQjBdz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/7x5utw11wfvfn65oa8ks.png" alt="Error Impact" width="341" height="113"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TTD&lt;/strong&gt;&lt;br&gt;
Time to Detect - The time between the user being impacted and someone in your team being informed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TTR&lt;/strong&gt;&lt;br&gt;
Time to resolution - The time between being informed and a fix being presented.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;impact%&lt;/strong&gt;&lt;br&gt;
Impact percentage - how many users will this particular failure impact.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TTF&lt;/strong&gt;&lt;br&gt;
Time to failure (sometimes called TBF time between failures) is how frequently you expect something to happen.&lt;/p&gt;

&lt;h4&gt;
  
  
  All together...
&lt;/h4&gt;

&lt;p&gt;The expected impact of a particular type of failure on your error budget is proportional to the time-to-detect plus the time-to-resolution multiplied by the percentage of impact over the time-to-failure. This last value TTF expresses how frequently you expect this particular failure to occur.&lt;/p&gt;

&lt;h1&gt;
  
  
  To improve reliability
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tasQePKc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/rixqn7xgghwvzszvcrwk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tasQePKc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/rixqn7xgghwvzszvcrwk.png" alt="Areas of improvement" width="761" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So to improve reliability you could focus on &lt;strong&gt;reducing the TTR&lt;/strong&gt;. Maybe setting up quicker alerting or more frequent monitoring checks.&lt;/p&gt;

&lt;p&gt;Or even introduce automated alerting in an environment that previously relied upon humans spotting things on graphical dashboards.&lt;/p&gt;

&lt;p&gt;Maybe spotting &lt;a href="https://en.wikipedia.org/wiki/Single_point_of_failure#:~:text=A%20single%20point%20of%20failure%20(SPOF)%20is%20a%20part%20of,application%2C%20or%20other%20industrial%20system."&gt;Single Points of Failure&lt;/a&gt; (SPOF's) in your architecture and then replicating those is another option to lower the &lt;strong&gt;impact%&lt;/strong&gt; or maybe doing &lt;a href="https://martinfowler.com/bliki/CanaryRelease.html"&gt;canary releases&lt;/a&gt; with dedicated groups of users thus lowering the &lt;strong&gt;impact%&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  The key point
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Nv1n0Vjr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/hntykuemjvm8hln6ydel.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Nv1n0Vjr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/hntykuemjvm8hln6ydel.png" alt="Lowering impact percentage" width="313" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Having this calculation means we can start to prioritise which areas of the SLO impact we focus on.&lt;/p&gt;

</description>
      <category>googlecloud</category>
      <category>devops</category>
      <category>certification</category>
      <category>sre</category>
    </item>
    <item>
      <title>GCP DevOps Certification - Pomodoro Seven</title>
      <dc:creator>James Heggs</dc:creator>
      <pubDate>Sat, 03 Oct 2020 17:05:11 +0000</pubDate>
      <link>https://dev.to/eggsy84/gcp-devops-certification-day-seven-2pkf</link>
      <guid>https://dev.to/eggsy84/gcp-devops-certification-day-seven-2pkf</guid>
      <description>&lt;h1&gt;
  
  
  The largest single source
&lt;/h1&gt;

&lt;p&gt;of unreliability to a system is &lt;strong&gt;change&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now we take learning back to DevOps and understand why that friction occurred. New features, a progressive application that delivers new features competing with a stable reliable system that doesn't change. Dev and Ops.&lt;/p&gt;

&lt;p&gt;For me, SLO's remove that personal aspect. Agreeing upfront the error budget, the level of reliability means both groups allow for each other. It is &lt;a href="https://www.psychologies.co.uk/managing-expectations-0"&gt;managing expectations&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;And key to success is alignment of incentives between development and operations.&lt;/p&gt;

&lt;p&gt;If a service is within SLO then you could...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Wbe3HAl4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/y8idawtg9gixs71m0k6h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Wbe3HAl4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/y8idawtg9gixs71m0k6h.png" alt="Aligning Dev and Ops incentives" width="650" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One approach is only releasing features until the error budget is exhausted, then focusing development on reliability improvements until the budget is refilled. &lt;/p&gt;

&lt;h1&gt;
  
  
  No silver bullets...or are there?
&lt;/h1&gt;

&lt;p&gt;Paint a real world scenario. You've spent all your error budget - can't incur any more outages or downtime but the product team really want to push out a new feature. &lt;/p&gt;

&lt;p&gt;We have all been there and it's a reality of development. Hint - It's not personal, don't treat it as such!&lt;/p&gt;

&lt;p&gt;But if this situation occurs teams can furnish stakeholders with a &lt;a href="https://cloud.google.com/blog/products/management-tools/sre-error-budgets-and-maintenance-windows"&gt;silver bullet&lt;/a&gt; token. A token that allows the bearer to propose ignoring the rules. &lt;/p&gt;

&lt;p&gt;The tokens don't refresh and if the release is desired to still go ahead, the token bearer provides their token to the SRE's in order to enable the release.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lL_fDrcL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/ncxr5yqsf94p0htzy01g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lL_fDrcL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/ncxr5yqsf94p0htzy01g.png" alt="SRE Silver bullets" width="662" height="644"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>googlecloud</category>
      <category>sre</category>
      <category>devops</category>
      <category>certification</category>
    </item>
    <item>
      <title>GCP DevOps Certification - Pomodoro Six</title>
      <dc:creator>James Heggs</dc:creator>
      <pubDate>Fri, 02 Oct 2020 20:15:18 +0000</pubDate>
      <link>https://dev.to/eggsy84/gcp-devops-certification-day-six-b5n</link>
      <guid>https://dev.to/eggsy84/gcp-devops-certification-day-six-b5n</guid>
      <description>&lt;h1&gt;
  
  
  Well kind of day six...
&lt;/h1&gt;

&lt;p&gt;The eagle eyed might have spotted that I missed a day. &lt;/p&gt;

&lt;p&gt;I could drop out excuses like work got busy or other things but in reality I just chose to prioritise doing very little in my down time. In fact I watched &lt;a href="https://www.netflix.com/gb/title/81254224"&gt;The Social Dilemma&lt;/a&gt; - super interesting on how hooked to social media some of us find ourselves.&lt;/p&gt;

&lt;p&gt;I find that if I take these breaks, it allows me to re-approach self development with a renewed interest. It also gives me time to consolidate what I've already learnt.&lt;/p&gt;

&lt;p&gt;Well that is how I'll backwards justify it on this occasion anyway!&lt;/p&gt;

&lt;h1&gt;
  
  
  Edge Cases
&lt;/h1&gt;

&lt;p&gt;Sometimes I think of the world as a consistent pattern but real life is much different. The impact of outage is one of those things that doesn't fit a pattern and is affected by the real world.&lt;/p&gt;

&lt;p&gt;For example imagine the impact of an outage during the release of a brand new episode or title on Netflix. Their busiest time, everyone scrambling to get their watching fix.&lt;/p&gt;

&lt;p&gt;Suddenly you might want your application or site to be even MORE reliable than usual - moving from 3 nines to 4 nines. You might consider implementing change freezes during that time or over provisioning for what you need - notice prioritising the reliability SLO over feature development.&lt;/p&gt;

&lt;p&gt;The SRE course goes on to explain how its entirely reasonable to set more than one SLO target to capture the distribution of users. Explaining that not all users are equal. Example, you might find that having a longer latency SLO for three nines of your responses is good for most of your requests, but some users might find that too slow.&lt;/p&gt;

&lt;p&gt;Right now whilst working through the content I'm trying to battle my inner brain telling me that things fit neatly in a box.&lt;/p&gt;

&lt;h1&gt;
  
  
  Error Budgets
&lt;/h1&gt;

&lt;p&gt;Basically an inverse of reliability. Imagine the system is failing or providing to be unreliable for users - your &lt;a href="https://www.atlassian.com/incident-management/kpis/error-budget"&gt;error budget&lt;/a&gt; tells you how unreliable a service can be. &lt;/p&gt;

&lt;p&gt;(I know it seems odd to read/write/say that)&lt;/p&gt;

&lt;p&gt;Taking request status, if your SLO says that 99.9 percent of requests should be successful in a given quarter, your error budget allows 0.1 percent of requests to fail. &lt;/p&gt;

&lt;p&gt;Or if we take downtime...&lt;/p&gt;

&lt;p&gt;0.1 percent unavailability x &lt;br&gt;
28 days in the four-week window x &lt;br&gt;
24 hours in a day x 60 minutes in an hour =&lt;br&gt;
40.32 minutes of downtime per month. &lt;/p&gt;

&lt;p&gt;This is just about enough time for your monitoring systems to surface an issue, and for a human to investigate and fix it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bjf70CEy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/hjp1t118l6wek47oqkkr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bjf70CEy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/hjp1t118l6wek47oqkkr.png" alt="Unavailability" width="428" height="239"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Not actually that much time and if you have one portion of unavailability that month - you will have likely burnt through your entire month budget.&lt;/p&gt;

&lt;p&gt;This is where the importance of agreeing the error budget and SLO upfront with all required stakeholders and business leadership.&lt;/p&gt;

&lt;p&gt;The error budget can be thought of being a tool for spending time on the things you want. Such as rolling out new features, software experiments etc.&lt;/p&gt;

&lt;p&gt;Spending the error budget is actually useful!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GVOXK-E6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/8meoi28sl5ni1bzbmqi9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GVOXK-E6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/8meoi28sl5ni1bzbmqi9.png" alt="Error Budget" width="707" height="465"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In turn we get some useful side effects...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--p8cRlB2M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/6lgw0fvp8ba25ojqrqwl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--p8cRlB2M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/6lgw0fvp8ba25ojqrqwl.png" alt="Side Effects" width="412" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Credit to Cheryl Kang of Google for the tips in this blog post. Here's another &lt;a href="https://cloud.google.com/blog/products/management-tools/meeting-reliability-challenges-with-sre-principles"&gt;useful blog from Cheryl&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>googlecloud</category>
      <category>sre</category>
      <category>devops</category>
      <category>certification</category>
    </item>
    <item>
      <title>GCP DevOps Certification - Pomodoro Five</title>
      <dc:creator>James Heggs</dc:creator>
      <pubDate>Wed, 30 Sep 2020 19:17:04 +0000</pubDate>
      <link>https://dev.to/eggsy84/gcp-devops-certification-day-five-5ck6</link>
      <guid>https://dev.to/eggsy84/gcp-devops-certification-day-five-5ck6</guid>
      <description>&lt;h1&gt;
  
  
  SLO in latency terms
&lt;/h1&gt;

&lt;p&gt;A common SLA might be response times. &lt;/p&gt;

&lt;p&gt;Lets say your SLA is that every request will be resolved within 300ms then you might set an SLO of 200ms.&lt;/p&gt;

&lt;p&gt;Crucially notice that you will find out your breaking your SLO before breaking the customers trust and service level agreement.&lt;/p&gt;

&lt;p&gt;Going back to the concept of &lt;a href="https://dev.to/eggsy84/gcp-devops-certification-day-four-1a35"&gt;reliability being considered a feature&lt;/a&gt; - if you have a clear SLO on response times and then you start to break it then its essentially an indicator that feature velocity should slow and reliability/performance investments should be prioritised. Yay!&lt;/p&gt;

&lt;h1&gt;
  
  
  Measuring Reliability
&lt;/h1&gt;

&lt;p&gt;Now this part I love! The key notion around the element that you are going to measure is the &lt;a href="https://www.bmc.com/blogs/service-level-indicator-metrics/"&gt;Service Level Indicator&lt;/a&gt; (SLI)&lt;/p&gt;

&lt;p&gt;So for example - measuring the response time would be done by checking the latency. So latency is your SLI.&lt;/p&gt;

&lt;p&gt;SLI's tend to be expressed as the proportion of events that were good. EG. How many requests were within the 200ms mark vs how many requests in total.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--73WyAawz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/ky9z81phd0x38u0zzpy0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--73WyAawz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/ky9z81phd0x38u0zzpy0.png" alt="SLI valid events versus bad events" width="406" height="167"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Setting the SLO for the SLI
&lt;/h1&gt;

&lt;p&gt;Wow even I'm now hating the acronyms but let us go on.&lt;/p&gt;

&lt;p&gt;So we're measuring response times and we know how many requests were marked as good (200ms or less) from all our requests. &lt;/p&gt;

&lt;p&gt;But what SLO target might we set?&lt;/p&gt;

&lt;p&gt;They have a few key features.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generally percentage based value&lt;/li&gt;
&lt;li&gt;Utilise the SLI&lt;/li&gt;
&lt;li&gt;Timeframe (EG. Last 4 weeks)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;For example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;99% of requests will fall within 200ms over the last 4 weeks.&lt;/p&gt;

</description>
      <category>googlecloud</category>
      <category>devops</category>
      <category>sre</category>
      <category>certification</category>
    </item>
  </channel>
</rss>
