{"componentChunkName":"component---src-pages-author-author-yaml-id-js","path":"/author/ruben-gonzalez/","result":{"data":{"allMarkdownRemark":{"edges":[{"node":{"id":"9ea15107-ef55-5540-8495-41fc16c4fd0c","html":"<p>Do you remember the Amazon outage that affected several high-profile customers back in 2011? On April 21st, widely-used sites such as Reddit and Quora were brought down, and many others experienced latency or were knocked offline, too. Early that morning, as part of normal scaling activities, Amazon staff performed a network change. However, the change was done incorrectly and, after the staff attempted to correct it through a rollback, the inner mechanisms of the service made it unavailable to serve read and write requests. The ‘inner mechanisms’ responsible for the service unavailability are out of the scope of this article, but they are described in the <a href=\"https://aws.amazon.com/message/65648/\">service disruption summary</a> that Amazon published. What interests us here is the strategies that companies can use to mitigate the negative effects on their products when a service they rely on fails. These strategies make up what is known as a <em>failover system</em>.</p>\n<p>A failover system is a set of mechanisms that perform <em>failover</em>. In computer networking, failover is the process of switching to a redundant or standby server or network upon the <strong><em>abnormal</em></strong> termination of a previously-active server or network. The benefit of a failover system is obvious: with one in place, you can ensure your product or service will be available even when adverse events take place. Uptime—time during which a service is operational—is crucial to the success of your business. If your services are unavailable, you are likely to lose customers and any revenue they would have generated. In an article entitled <a href=\"https://medium.com/netflix-techblog/lessons-netflix-learned-from-the-aws-outage-deefe5fd0c04\">‘Lessons Netflix Learned from the AWS Outage</a>,’ Netflix talks about the manual process they used to deal with the Amazon outage and acknowledges the importance of automating this process in the future so they can keep scaling their service. That is, the company acknowledges the importance of having an automated failover system in place instead of relying on a team of top engineers <strong><em>manually</em></strong> making changes every time there is an issue.</p>\n<p>How is an automated failover system set up? Let us consider the simplest scenario: setting a failover system for one server. By definition of a failover system, in addition to the main server, we need to have another redundant standby server that we can switch to whenever the main one fails. Since the redundant server must provide the same functionality as the first, it must be identical to it. Additionally, we need a tool that ensures client requests are routed to the redundant server in case of failure of the main one. We can achieve this by using a DNS failover tool. DNS is the internet protocol used to translate human-readable hostnames into IP addresses, and a DNS failover tool makes sure the “dictionary” (DNS tables) used for this translation are updated in the event of an outage. DNS failover tools know when to update the tables by periodically checking on the main server’s status. With these three tools—and some configuration—you can set up a simple, automated failover system. Of course, there are other considerations you must take when setting the failover system, such as ensuring the redundant standby server is hosted in a geographic area different from the main server’s location and using different companies to host your services. That way, your services will be less likely to go down simultaneously. </p>\n<p>At LoginRadius, we have set up automated failover systems in all layers of our architecture, which is why we can ensure 99.99% uptime on a monthly basis. With our services, you can be assured your customers will always be able to engage with your business, ensuring you will never lose these customers and any revenue they will generate. </p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"title":"Failover Systems and LoginRadius' 99.99% Uptime","author":{"id":"Ruben Gonzalez","github":"rubenprograms","avatar":null},"date":"June 24, 2019","updated_date":null,"tags":["Engineering","AWS"],"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.0050251256281406,"src":"/static/aa689bef0926b16dc0f50c38ca2e3f1c/18421/tech.webp","srcSet":"/static/aa689bef0926b16dc0f50c38ca2e3f1c/61e93/tech.webp 200w,\n/static/aa689bef0926b16dc0f50c38ca2e3f1c/1f5c5/tech.webp 400w,\n/static/aa689bef0926b16dc0f50c38ca2e3f1c/18421/tech.webp 719w","sizes":"(max-width: 719px) 100vw, 719px"}}}},"fields":{"authorId":"Ruben Gonzalez","slug":"/engineering/failover-systems-and-loginradius-99-99-uptime/"}}},{"node":{"id":"b9110b6e-ac2a-5354-ac38-3d37cedbbf8f","html":"<p><strong>What is an SSL Certificate?</strong></p>\n<p>Let’s start with some working definitions of the HTTP and HTTPS protocols. HTTP is the Internet protocol over which data is sent between a browser and a server when they are communicating. HTTP<strong>S</strong> is the secure counterpart of HTTP , which encrypts data to ensure private communication.1 An SSL certificate is a data file that is installed on a web server to enable the use of the HTTPS protocol.2</p>\n<p><strong>Why SSL Certificates?</strong></p>\n<p>The communication privacy that HTTP provides is desirable for obvious reasons: for example, you would not want a website you are purchasing something from to not encrypt your credit card information before sending it to the server, for that would expose it to everyone who needs only a decent understanding of how the internet works to access it. Other benefits of SSL certificates include:</p>\n<ul>\n<li>Providing server authentication: data in the internet is rarely sent from the source computer <strong><em>directly</em></strong> to the destination computer, which means a node (computer) in the path could pretend to be the server your browser is trying to send data to. This is what happens in a <em>man-in-the-middle attack</em>: the attacker forms connections with the two nodes that are intending to establish private communication and fakes its identity so the nodes confidently send data to it. Not only can the attacker access the data in the communication but it can also alter it as it pleases to direct the conversation between the nodes.4 This could be prevented with an SSL certificate from a trusted SSL provider, ensuring the delivery of your data to the right server.3</li>\n<li>Encouraging trust from users: visual clues will be present once an SSL certificate is installed on a server, signaling to the user that the server provides a secure connection. The protocol portion of the URL on the browser is visibly HTTP<strong>S</strong>, and a padlock icon shows up to the left of the address bar. Certain types of SSL certificates also colour the icon or  bar green. All these reassure users that the data they send to the server through their browser is safe, thus encouraging behaviours like online purchases and information sharing. 3</li>\n</ul>\n<p><strong>Considerations</strong></p>\n<p>There are some considerations to be aware of when implementing SSL certificates on your server. There is a cost involved due to he infrastructure that has been put into place by the SSL certificate provider to issue the certificate. Additionally, processing encrypted data takes more server resources. However, there is available hardware that can minimize this impact.3 Considering the additional security and end user trust SSL certificates can bring to your website, there is no doubt that its benefits far outweigh the costs and efforts of its implementation.</p>\n<p><strong>A Final Note</strong></p>\n<p>You might be aware that version 3.0 of the Secure Sockets Layer protocol was deprecated in 2015 by the IETF because of its vulnerabilities. Other protocols, such as TLS, are more secure and have to be used in replacement of SSL.5 This might lead you to think, how do I replace my <em>SSL</em> certificate with a <em>TLS</em> certificate so I ensure security in my website? The answer is you do not have to. Although the phrases ‘SSL certificate’ or ‘SSL/TLS certificates’ are used, the certificates are not bound to the protocol your server uses. Certificates can be used with either SSL or TLS; what determines what protocol you use is your server configuration.6</p>\n<p><strong>References:</strong></p>\n<ol>\n<li><a href=\"https://www.instantssl.com/ssl-certificate-products/https.html\">SSL Certificate Products</a></li>\n<li><a href=\"https://www.globalsign.com/en/ssl-information-center/what-is-an-ssl-certificate/\">What is an SSL Certificate?</a></li>\n<li><a href=\"https://tools.ietf.org/html/rfc7568\">IETF</a></li>\n<li><a href=\"https://www.globalsign.com/en/blog/ssl-vs-tls-difference/\">SSL vs TLS - What's the Difference?</a></li>\n</ol>\n<p>Note: image labeled for reuse, taken from Google images.</p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"title":"Let's Encrypt with SSL Certificates","author":{"id":"Ruben Gonzalez","github":"rubenprograms","avatar":null},"date":"January 14, 2019","updated_date":null,"tags":["SSL","SSL Certificate","Security"],"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1,"src":"/static/90a313f3cd5904bc72263dd554515b3a/e9589/ssl.webp","srcSet":"/static/90a313f3cd5904bc72263dd554515b3a/61e93/ssl.webp 200w,\n/static/90a313f3cd5904bc72263dd554515b3a/1f5c5/ssl.webp 400w,\n/static/90a313f3cd5904bc72263dd554515b3a/e9589/ssl.webp 500w","sizes":"(max-width: 500px) 100vw, 500px"}}}},"fields":{"authorId":"Ruben Gonzalez","slug":"/engineering/lets-encrypt-with-ssl-certificates/"}}}]},"authorYaml":{"id":"Ruben Gonzalez","bio":"Ruben is a Computer Science student at The University of British Columbia. His main interests include web development, AI, classical music, and social justice. Originally from Colombia, he also is fluent in Spanish.","github":"rubenprograms","stackoverflow":null,"linkedin":null,"medium":null,"twitter":null,"avatar":null}},"pageContext":{"id":"Ruben Gonzalez","__params":{"id":"ruben-gonzalez"}}},"staticQueryHashes":["1171199041","1384082988","2100481360","23180105","528864852"]}