<?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: Dayisi Tobi Iyanu</title>
    <description>The latest articles on DEV Community by Dayisi Tobi Iyanu (@thobeats).</description>
    <link>https://dev.to/thobeats</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%2F1289320%2F8ed8081f-eb21-40df-9359-ac641fe3af20.JPG</url>
      <title>DEV Community: Dayisi Tobi Iyanu</title>
      <link>https://dev.to/thobeats</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thobeats"/>
    <language>en</language>
    <item>
      <title>Budgtr Downtime incident report.</title>
      <dc:creator>Dayisi Tobi Iyanu</dc:creator>
      <pubDate>Sun, 09 Jun 2024 21:50:36 +0000</pubDate>
      <link>https://dev.to/thobeats/budgtr-downtime-incident-report-2lph</link>
      <guid>https://dev.to/thobeats/budgtr-downtime-incident-report-2lph</guid>
      <description>&lt;p&gt;We would like to apologize to all our users for the downtime experienced last week. We understand the discomfort this would have caused, and we have done the necessary checks and fixes to ensure that this does not happen again.&lt;/p&gt;

&lt;p&gt;We have provided an incident report of the downtime that occurred on the 5th of June, 2024. Also outlined is our response to the issue.&lt;/p&gt;

&lt;h3&gt;
  
  
  Issue Summary
&lt;/h3&gt;

&lt;p&gt;The issue started from 6:03 AM to 8:52 AM WAT, requests to the website resulted in a 500 error as users couldn't access the service for this period. The cause of this outage was an untested change that was pushed into production, which resulted in a bug.&lt;/p&gt;

&lt;h3&gt;
  
  
  Timeline (All West African Time)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;6:03 AM - New Change was pushed.&lt;/li&gt;
&lt;li&gt;6:55 AM - The first Outage occurrence was logged in.&lt;/li&gt;
&lt;li&gt;6:56 AM - Our monitoring system alerted us.&lt;/li&gt;
&lt;li&gt;7:20 AM - failed change was rolled back.&lt;/li&gt;
&lt;li&gt;7:30 AM - Successful change rolled back&lt;/li&gt;
&lt;li&gt;8:00 AM - New change was tested and pushed into production.&lt;/li&gt;
&lt;li&gt;8:30 AM - Server was restarted.&lt;/li&gt;
&lt;li&gt;8:52 AM - System was restored at 100% functionality.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Root Cause
&lt;/h3&gt;

&lt;p&gt;At 6:03 AM a new feature that was discussed and approved for development within the team was pushed to production without being tested. The new feature is a payment infrastructure that Budgetr would be using, but the APIs to be consumed were not consumed properly which resulted in breaking the whole code base which then caused the 500 error.&lt;/p&gt;

&lt;h3&gt;
  
  
  Resoluion and Recovery
&lt;/h3&gt;

&lt;p&gt;At 6:56 AM our monitoring system alerted our engineers of the error, which escalated immediately. At 7:20 AM our engineers tried to roll back the change to fix it locally, but it failed due to some authorization constraints. &lt;/p&gt;

&lt;p&gt;At 7:30 AM the proper authorization access was granted and our engineers were able to successfully roll back the changes. Our engineers went to work straight and fixed the error, after pushing it to the test environment, the test process took place and the results came out as positive.&lt;/p&gt;

&lt;p&gt;At 8:00 AM our engineers pushed to production. To ensure a smooth sail of service, we restarted the servers at 8:30 AM and our service was confirmed to be 100% stable at 8:52 AM.&lt;/p&gt;

&lt;h3&gt;
  
  
  Corrective and Preventative Measures
&lt;/h3&gt;

&lt;p&gt;In the last 4 days, we have conducted an internal review and analysis of the outage. The following are the actions that will be taken to ensure this issue doesn't occur again:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;All new features would be pushed to the test environment by default.&lt;/li&gt;
&lt;li&gt;Only authorized personnel can push tested and approved changes to production.&lt;/li&gt;
&lt;li&gt;Detailed information concerning the features or changes being pushed to test should be provided in the commit messages.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Budgetr is committed to ensuring a seamless service for all our customers and as a result we constantly improve our technology and operational processes to prevent these issues. We sincerely apologize for the discomfort this issue would have caused you or your businesses and we appreciate your patience and understanding.&lt;/p&gt;

&lt;p&gt;Sincerely,&lt;br&gt;
The Budgetr Team.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>What happens when you type google.com in your browser and press Enter</title>
      <dc:creator>Dayisi Tobi Iyanu</dc:creator>
      <pubDate>Sat, 11 May 2024 23:04:57 +0000</pubDate>
      <link>https://dev.to/thobeats/what-happens-when-you-type-googlecom-in-your-browser-and-press-enter-1ij</link>
      <guid>https://dev.to/thobeats/what-happens-when-you-type-googlecom-in-your-browser-and-press-enter-1ij</guid>
      <description>&lt;p&gt;Have you ever wondered what happens when you type in "&lt;a href="http://www.google.com"&gt;www.google.com&lt;/a&gt;" on your browser? Why does the Google website appear on your browser instead of another website?&lt;br&gt;
There is this wonderful thing that happens in the web universe. Let's take a walk.&lt;/p&gt;

&lt;p&gt;John needs to research his coursework and then decides to check Google on the topic. He enters "&lt;a href="http://www.google.com"&gt;www.google.com&lt;/a&gt;" on his Chrome browser, like all processes there is the first step. The first step is the DNS Requests.&lt;/p&gt;

&lt;h2&gt;
  
  
  DNS REQUESTS
&lt;/h2&gt;

&lt;p&gt;There is something called an IP address. This is a unique dot-separated number combination that identifies a device connected to a computer network. IP addresses are boring to memorize and that is where the DNS comes in. Just like your phonebook stores phone numbers with a name to identify the numbers. Also, DNS stores IP addresses with hostnames (&lt;a href="http://www.google.com"&gt;www.google.com&lt;/a&gt;) to identify the addresses. Therefore, the DNS is the phonebook of the internet. Hence, the DNS gets the hostname and searches for the IP address that is attached to it.&lt;/p&gt;

&lt;p&gt;The IP address has been identified, what next? No, you didn't guess it, the TCP/IP (Transmission Control Protocol/Internet Protocol) comes next.&lt;/p&gt;

&lt;h2&gt;
  
  
  TCP/IP
&lt;/h2&gt;

&lt;p&gt;These guys are responsible for the transmission of data from the server the IP address identifies with to John's computer. The TCP ensures that there is a reliable connection with John's computer and that the data are delivered in order. On the other hand, the IP ensures that the data is routed to the right destination (John's computer).&lt;/p&gt;

&lt;p&gt;That's all, right? No! what if the data is malicious? We have a new guy called the Firewall.&lt;/p&gt;

&lt;h2&gt;
  
  
  Firewall
&lt;/h2&gt;

&lt;p&gt;This guy loves his job, he is the security who scrutinizes the data that has been transferred into the computer and makes sure that they are safe based on predetermined security rules (He doesn't smile).&lt;/p&gt;

&lt;p&gt;This must be it, well not yet. We take security serious &lt;br&gt;
here and we don't want anyone minding John's business, so we got the perfect guys for the job, HTTPS/SSL.&lt;/p&gt;

&lt;h2&gt;
  
  
  HTTPS/SSL
&lt;/h2&gt;

&lt;p&gt;These guys (Hypertext Transfer Protocol Secure/Secure Sockets Layer) make sure the connection between John's computer and the Google server is secure. It encrypts the data transferred between John and the Google server.&lt;/p&gt;

&lt;p&gt;That is all about John, but let me tell you about what happened in the Google server when John made that request. Google has a lot of users, therefore, one server for all its users will be catastrophic. So to ensure optimum service Google makes use of a lot of servers. To ensure all servers are receiving the right amount of requests we employed a manager called the Load Balancer, this guy is terrific.&lt;/p&gt;

&lt;h2&gt;
  
  
  LOAD BALANCER
&lt;/h2&gt;

&lt;p&gt;This guy ensures the distribution of network traffic across all the servers so they don't overwork and crash. Yeah yeah, it balances the load (I know you thought about it).&lt;/p&gt;

&lt;p&gt;But what do these servers do actually? Sip more coffee and relax.&lt;/p&gt;

&lt;h2&gt;
  
  
  WEB SERVERS
&lt;/h2&gt;

&lt;p&gt;These guys interpreted John's requests. They knew what action to carry out based on the HTTP request John sent, and communicated with the application server to process the request.&lt;/p&gt;

&lt;p&gt;Yeah, I mentioned the application server, just relax this story will end.&lt;/p&gt;

&lt;h1&gt;
  
  
  APPLICATION SERVER
&lt;/h1&gt;

&lt;p&gt;Google is an application and all the contents John saw were processed by this guy. He processed the request and sent the response John asked for.&lt;/p&gt;

&lt;p&gt;Yeah, that must be all, well one thing left, it is the database. (Just one more cup of coffee)&lt;/p&gt;

&lt;h2&gt;
  
  
  DATABASE
&lt;/h2&gt;

&lt;p&gt;This guy is Google's recordkeeper, to show John what he asked for, the application had to ask the database for these records.&lt;/p&gt;

&lt;p&gt;Finally, the response is sent to John, and he can view the Google web page.&lt;/p&gt;

&lt;p&gt;Now, I have come to the end of my story, I hope you enjoyed it but most importantly you now know what happens when you request that web page.&lt;/p&gt;

&lt;p&gt;Odabo.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>writing</category>
      <category>web</category>
    </item>
  </channel>
</rss>
