{"id":5990,"date":"2021-02-11T00:51:15","date_gmt":"2021-02-11T01:21:15","guid":{"rendered":"https:\/\/ultering.com\/it4us\/?p=5990"},"modified":"2021-02-11T02:13:42","modified_gmt":"2021-02-11T02:43:42","slug":"web-app-resilience-and-performance-key-points-a-summary","status":"publish","type":"post","link":"https:\/\/ultering.com\/it4us\/?p=5990","title":{"rendered":"Web App: Resilience and Performance Key Points &#8211; A Summary"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_83 counter-hierarchy ez-toc-counter ez-toc-white ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6a144b1c224d2\" class=\"ez-toc-cssicon-toggle-label\"><span class><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\" \/><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\" \/><\/svg><\/span><\/span><\/label><input type=\"checkbox\" id=\"ez-toc-cssicon-toggle-item-6a144b1c224d2\" checked aria-label=\"Toggle\"><nav><ul class=\"ez-toc-list ez-toc-list-level-1 \"><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/ultering.com\/it4us\/?p=5990\/#ABOUT\">ABOUT<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/ultering.com\/it4us\/?p=5990\/#KEY_POINTS_TO_RESILIENCE_AND_PERFORMANCE_%E2%80%93_THE_CHECKLIST\">#KEY POINTS TO RESILIENCE AND PERFORMANCE &#8211; THE CHECKLIST<\/a><ul class=\"ez-toc-list-level-3\"><li class=\"ez-toc-heading-level-3\"><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/ultering.com\/it4us\/?p=5990\/#HTTP2\">#HTTP2<\/a><ul class=\"ez-toc-list-level-4\"><li class=\"ez-toc-heading-level-4\"><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/ultering.com\/it4us\/?p=5990\/#Advantages\">#Advantages<\/a><\/li><\/ul><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-3\"><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/ultering.com\/it4us\/?p=5990\/#Performance_Comparison\">#Performance Comparison<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-3\"><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/ultering.com\/it4us\/?p=5990\/#More_Detailed_Information\">#More Detailed Information<\/a><\/li><\/ul><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/ultering.com\/it4us\/?p=5990\/#CACHE\">CACHE<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/ultering.com\/it4us\/?p=5990\/#CDN_%E2%80%93_CONTENT_DELIVERY_SERVICE\">CDN &#8211; CONTENT DELIVERY SERVICE<\/a><ul class=\"ez-toc-list-level-3\"><li class=\"ez-toc-heading-level-3\"><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/ultering.com\/it4us\/?p=5990\/#What_Is_CDN\">What Is CDN?<\/a><\/li><\/ul><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-2\"><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/ultering.com\/it4us\/?p=5990\/#APPLICATION_ARCHITECTURE\">APPLICATION ARCHITECTURE<\/a><ul class=\"ez-toc-list-level-3\"><li class=\"ez-toc-heading-level-3\"><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/ultering.com\/it4us\/?p=5990\/#SPA\">SPA<\/a><\/li><li class=\"ez-toc-page-1 ez-toc-heading-level-3\"><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/ultering.com\/it4us\/?p=5990\/#SSR\">SSR<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"ABOUT\"><\/span>ABOUT<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>I have two main approaches on this site:<br>\n&#8211; Step-by-Step information<br>\nand<br>\n&#8211; Summaries.<\/p>\n<p>On another site that I publish (<a href=\"https:\/\/alsdias.blogspot.com\/\">Blogger)<\/a>, I have the posts oriented by &#8220;Problem vs. Solution&#8221;.<br>\nSo, here you get the information to avoid the problem! <noscript><img decoding=\"async\" src=\"https:\/\/ultering.com\/it4us\/wp-content\/plugins\/wp-edit\/plugins\/emoticons\/img\/smiley-smile.gif\"><\/noscript><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"https:\/\/ultering.com\/it4us\/wp-content\/plugins\/wp-edit\/plugins\/emoticons\/img\/smiley-smile.gif\" class=\" lazyload\"><\/p>\n<p>Resilience &amp; Performance is a vast subject, but you get at least a basic checklist to double-check your project.<br>\nThis is very helpful to avoid problems.<\/p>\n<p>The intention of this post is to keep evolving because it is a very dynamic area.<br>\nIf you want to contribute with references, additional information, please, you&#8217;re welcome, and let me know using the comments or email to do so.<br>\nAdditionally, if you see another way of doing things, feel free to add your comment. Always useful. Thanks!<br>\nAs I&#8217;ve said, this is a continuous piece of work.<\/p>\n<p>&nbsp;<\/p>\n<h2><span class=\"ez-toc-section\" id=\"KEY_POINTS_TO_RESILIENCE_AND_PERFORMANCE_%E2%80%93_THE_CHECKLIST\"><\/span>#KEY POINTS TO RESILIENCE AND PERFORMANCE &#8211; THE CHECKLIST<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Check the following points, if your web app is making use of.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"HTTP2\"><\/span>#HTTP2<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<h4><span class=\"ez-toc-section\" id=\"Advantages\"><\/span>#Advantages<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p><strong>Retro-compatibility<\/strong><br>\nHTTP\/2 retains the same semantics as HTTP\/1.1.<br>\nThis includes HTTP methods such as GET and POST and the status codes as usual, URLs, fields, etc.<\/p>\n<p><strong>Single, Persistent Connection<\/strong><br>\nOnly one connection is used for each web page.<br>\nThe same connection is used as long as the web page is open.<\/p>\n<p><strong>Multiplexing<\/strong>, <strong>Request parallelism &amp;<\/strong>&nbsp;<strong>Requests prioritization<\/strong><br>\nRequests and replies are prioritized and multiplexed onto separate streams within the single connection.<\/p>\n<p><strong>Header Compression and Binary Encoding<\/strong><br>\nUses secure standard, HPACK compression, reducing network traffic.<br>\nHeader information is sent in a binary compact format, not as plain text.<\/p>\n<p><strong>SSL Encryption<\/strong><br>\nHTTP\/2 adds SSL support with better performance.<\/p>\n<p><strong>Server push<br>\n<\/strong>HTTP\/2 Server Pushallows an&nbsp;<a title=\"HTTP\/2\" href=\"https:\/\/en.wikipedia.org\/wiki\/HTTP\/2\">HTTP\/2<\/a>-compliant server to send resources to a HTTP\/2-compliant client before the client requests them. It is, for the most part, a performance technique that can be helpful in loading resources preemptively.<strong><br>\n<\/strong><a href=\"https:\/\/en.wikipedia.org\/wiki\/HTTP\/2_Server_Push\">Wikipedia<\/a><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Performance_Comparison\"><\/span>#Performance Comparison<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p class=\"p-name\">Check this dynamic comparison test:<br>\n<a href=\"https:\/\/evertpot.com\/h2-parallelism\/\">Performance testing HTTP\/1.1 vs HTTP\/2 vs HTTP\/2 + Server Push for REST APIs<\/a><\/p>\n<h3><span class=\"ez-toc-section\" id=\"More_Detailed_Information\"><\/span>#More Detailed Information<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p class=\"devsite-page-title\"><a href=\"https:\/\/developers.google.com\/web\/fundamentals\/performance\/http2\/\">Introduction to HTTP\/2<\/a><\/p>\n<h2><\/h2>\n<h2><span class=\"ez-toc-section\" id=\"CACHE\"><\/span>CACHE<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The cache replicates the information with previous traffic and may offer many configurations.<br>\nThere is a setback when using a cache that must be considered.<br>\nThey are not recommended for sites where the information traffic is very dynamic, with a low rate of repeatability.<br>\nThe new information always demands some processing and if the probability to be used again is low, the cache may slow down instead of helping performance.<br>\nIt is required a fine tunning and careful consideration. It is not a silver bullet.<\/p>\n<p>&nbsp;<\/p>\n<h2><noscript><img decoding=\"async\" class=\"alignnone size-full wp-image-5997\" src=\"https:\/\/ultering.com\/it4us\/wp-content\/uploads\/2021\/02\/http2_cache.jpg\" alt width=\"595\" height=\"298\" srcset=\"https:\/\/ultering.com\/it4us\/wp-content\/uploads\/2021\/02\/http2_cache.jpg 595w, https:\/\/ultering.com\/it4us\/wp-content\/uploads\/2021\/02\/http2_cache-300x150.jpg 300w\" sizes=\"(max-width: 595px) 100vw, 595px\"><\/noscript><img decoding=\"async\" class=\"alignnone size-full wp-image-5997 lazyload\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20595%20298%22%3E%3C%2Fsvg%3E\" alt width=\"595\" height=\"298\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20595%20298%22%3E%3C%2Fsvg%3E 595w\" sizes=\"(max-width: 595px) 100vw, 595px\" data-srcset=\"https:\/\/ultering.com\/it4us\/wp-content\/uploads\/2021\/02\/http2_cache.jpg 595w, https:\/\/ultering.com\/it4us\/wp-content\/uploads\/2021\/02\/http2_cache-300x150.jpg 300w\" data-src=\"https:\/\/ultering.com\/it4us\/wp-content\/uploads\/2021\/02\/http2_cache.jpg\"><\/h2>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h2><span class=\"ez-toc-section\" id=\"CDN_%E2%80%93_CONTENT_DELIVERY_SERVICE\"><\/span>CDN &#8211; CONTENT DELIVERY SERVICE<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Think about making use of CDN if your site has become slow, but first check other responsibilities like database latency, code optimization (remember O notation), architecture design, etc.<br>\nThen, if still necessary, consider CDN.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"What_Is_CDN\"><\/span>What Is CDN?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><noscript><img decoding=\"async\" class=\"alignnone size-full wp-image-5999\" src=\"https:\/\/ultering.com\/it4us\/wp-content\/uploads\/2021\/02\/http2_cdn.jpg\" alt width=\"600\" height=\"390\" srcset=\"https:\/\/ultering.com\/it4us\/wp-content\/uploads\/2021\/02\/http2_cdn.jpg 600w, https:\/\/ultering.com\/it4us\/wp-content\/uploads\/2021\/02\/http2_cdn-300x195.jpg 300w\" sizes=\"(max-width: 600px) 100vw, 600px\"><\/noscript><img decoding=\"async\" class=\"alignnone size-full wp-image-5999 lazyload\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20600%20390%22%3E%3C%2Fsvg%3E\" alt width=\"600\" height=\"390\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20600%20390%22%3E%3C%2Fsvg%3E 600w\" sizes=\"(max-width: 600px) 100vw, 600px\" data-srcset=\"https:\/\/ultering.com\/it4us\/wp-content\/uploads\/2021\/02\/http2_cdn.jpg 600w, https:\/\/ultering.com\/it4us\/wp-content\/uploads\/2021\/02\/http2_cdn-300x195.jpg 300w\" data-src=\"https:\/\/ultering.com\/it4us\/wp-content\/uploads\/2021\/02\/http2_cdn.jpg\"><\/p>\n<p><noscript><img decoding=\"async\" class=\"size-full wp-image-6001 alignleft\" src=\"https:\/\/ultering.com\/it4us\/wp-content\/uploads\/2021\/02\/cdn_wikipedia.jpg\" alt width=\"253\" height=\"178\"><\/noscript><img decoding=\"async\" class=\"size-full wp-image-6001 alignleft lazyload\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20253%20178%22%3E%3C%2Fsvg%3E\" alt width=\"253\" height=\"178\" data-src=\"https:\/\/ultering.com\/it4us\/wp-content\/uploads\/2021\/02\/cdn_wikipedia.jpg\"><br>\nA&nbsp;<b>content delivery network<\/b>, or&nbsp;<b>content distribution network<\/b>&nbsp;(<b>CDN<\/b>), is a geographically distributed network of&nbsp;<a title=\"Proxy server\" href=\"https:\/\/en.wikipedia.org\/wiki\/Proxy_server\">proxy servers<\/a>&nbsp;and their&nbsp;<a title=\"Data center\" href=\"https:\/\/en.wikipedia.org\/wiki\/Data_center\">data centers<\/a>. The goal is to provide high availability and performance by distributing the service spatially relative to&nbsp;<a title=\"End user\" href=\"https:\/\/en.wikipedia.org\/wiki\/End_user\">end users<\/a>. CDNs came into existence in the late 1990s as a means for alleviating the performance bottlenecks of the Internet,<sup id=\"cite_ref-:0_1-0\" class=\"reference\"><a href=\"https:\/\/en.wikipedia.org\/wiki\/Content_delivery_network#cite_note-:0-1\">[1]<\/a><\/sup><sup id=\"cite_ref-2\" class=\"reference\"><a href=\"https:\/\/en.wikipedia.org\/wiki\/Content_delivery_network#cite_note-2\">[2]<\/a><\/sup>&nbsp;even as the Internet was starting to become a mission-critical medium for people and enterprises.<\/p>\n<p><strong>CDNs are a layer in the internet ecosystem.<\/strong><\/p>\n<p><strong>Content owners such as media companies and e-commerce vendors pay CDN operators to deliver their content to their end-users. In turn, a CDN pays <a title=\"Internet service provider\" href=\"https:\/\/en.wikipedia.org\/wiki\/Internet_service_provider\">Internet service providers (ISPs)<\/a>, carriers, and network operators for hosting its servers in their data centers.<\/strong><\/p>\n<p>CDN is an umbrella term spanning different types of content delivery services:&nbsp;<a class=\"mw-redirect\" title=\"Video streaming\" href=\"https:\/\/en.wikipedia.org\/wiki\/Video_streaming\">video streaming<\/a>, software downloads, web and mobile content acceleration, licensed\/managed CDN, transparent caching, and services to measure CDN performance,&nbsp;<a title=\"Load balancing (computing)\" href=\"https:\/\/en.wikipedia.org\/wiki\/Load_balancing_(computing)\">load balancing<\/a>, Multi CDN switching and analytics and cloud intelligence. CDN vendors may cross over into other industries like security, with&nbsp;<a class=\"mw-redirect\" title=\"DDoS\" href=\"https:\/\/en.wikipedia.org\/wiki\/DDoS\">DDoS<\/a>&nbsp;protection and&nbsp;<a title=\"Web application firewall\" href=\"https:\/\/en.wikipedia.org\/wiki\/Web_application_firewall\">web application firewalls<\/a>&nbsp;(WAF), and WAN optimization.<\/p>\n<p>@FROM:&nbsp; &nbsp;<a href=\"https:\/\/en.wikipedia.org\/wiki\/Content_delivery_network\">Wikipedia<\/a><\/p>\n<p>&nbsp;<\/p>\n<h2><span class=\"ez-toc-section\" id=\"APPLICATION_ARCHITECTURE\"><\/span>APPLICATION ARCHITECTURE<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Design is a huge area, but we may begin with SPA vs SSR.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"SPA\"><\/span>SPA<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The bundles tend to become big and heavy requiring more processing to render the page on the client.<br>\nOn the other hand, after the initial loading, the application runs smother, lighter.<br>\nEasier to tune cache.<br>\nSEO optimization loss.<br>\nXSS vulnerability requiring careful design.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"SSR\"><\/span>SSR<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Fast loading (page comes ready from the server).<br>\nThe client is less required, so devices having smaller processing power are able to handle the requisition faster.<br>\nRequires cache&#8217;s accurate tuning.<br>\nBetter security (source code on server).<br>\nBetter SEO performance (faster and better processing).<br>\nIf not well designed it may require more roundtrips (requests to the server to rerender the page).<\/p>\n<p>&nbsp;<\/p>\n<p>I hope this short piece of information, but still big when putting it to work, helps you as it has helped me.<br>\nGood coding!<\/p>\n<!--CusAds0-->\n<div style=\"font-size: 0px; height: 0px; line-height: 0px; margin: 0; padding: 0; clear: both;\"><\/div>","protected":false},"excerpt":{"rendered":"<p>ABOUT I have two main approaches on this site: &#8211; Step-by-Step information and &#8211; Summaries. On another site that I publish (Blogger), I have the posts oriented by &#8220;Problem vs. Solution&#8221;. So, here you get the information to avoid the problem! Resilience &amp; Performance is a vast subject, but you get at least a basic &#8230; <a href=\"https:\/\/ultering.com\/it4us\/?p=5990\" class=\"more-link\">Read More<span class=\"screen-reader-text\"> &#8220;Web App: Resilience and Performance Key Points &#8211; A Summary&#8221;<\/span> &raquo;<\/a><\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"footnotes":""},"categories":[151,89,197,143],"tags":[],"class_list":["post-5990","post","type-post","status-publish","format-standard","hentry","category-cs","category-network","category-web","category-web-design"],"_links":{"self":[{"href":"https:\/\/ultering.com\/it4us\/index.php?rest_route=\/wp\/v2\/posts\/5990","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ultering.com\/it4us\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ultering.com\/it4us\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ultering.com\/it4us\/index.php?rest_route=\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/ultering.com\/it4us\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5990"}],"version-history":[{"count":6,"href":"https:\/\/ultering.com\/it4us\/index.php?rest_route=\/wp\/v2\/posts\/5990\/revisions"}],"predecessor-version":[{"id":6008,"href":"https:\/\/ultering.com\/it4us\/index.php?rest_route=\/wp\/v2\/posts\/5990\/revisions\/6008"}],"wp:attachment":[{"href":"https:\/\/ultering.com\/it4us\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5990"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ultering.com\/it4us\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5990"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ultering.com\/it4us\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5990"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}