{"id":5008,"date":"2015-08-08T05:36:07","date_gmt":"2015-08-08T05:36:07","guid":{"rendered":"https:\/\/www.instamojo.com\/blog\/?p=5008"},"modified":"2021-06-21T14:24:15","modified_gmt":"2021-06-21T08:54:15","slug":"technology-performance-journey-instamojo","status":"publish","type":"post","link":"https:\/\/www.instamojo.com\/blog\/technology-performance-journey-instamojo\/","title":{"rendered":"Technology &#8211; Performance Journey at Instamojo"},"content":{"rendered":"<p>Ask any engineer and he\u2019d agree &#8211; With growth, comes performance &amp; scale challenges. <strong>Instamojo is no different<\/strong>. At the rate we are growing, we did face more than a few hiccups over time.<\/p>\n<h4><strong>December 2013<\/strong><\/h4>\n<p>Our only source of knowing the performance is Google Analytics for page load time. An average load time of 18s is not good at all. We believed it is time we include performance into our core priorities. <strong>The first basic rule of performance &#8211; Measure, and New Relic fits our bill perfectly with our stack.<\/strong><\/p>\n<p>At this time, our average server response time is approximately 370ms. But many outliers are crossing 30secs too. In the next 2 months, we fine-tuned our integration with New Relic. This was done to identify proper bottlenecks whenever and wherever we can.<\/p>\n<h4>Feb 2014<\/h4>\n<p>It was time to act upon the insights we got from the performance analysis from New Relic &amp; Google Analytics.<\/p>\n<p>1. Optimize database queries a lot. In terms of Django, we started effectively using <strong>`prefetch_related`<\/strong> and <strong>`select_related`<\/strong> and <strong>adding proper indexes<\/strong> to our database tables.<\/p>\n<p>2. Use CDN for our static resources instead of serving directly from S3. While this is easy to set up, we still need a solution to avoid cache validation. Luckily <strong>django.contrib.staticfiles.storage<\/strong>.CachedStaticFilesStorage with some fixes worked like charm. It helped in generating hashed file paths for each of our files. For example, we have favicon.6b5a70e7628d.png generated from favicon.png. This can be cached by CDN as well as browser forever, without having to deal with cache-invalidation at all.<\/p>\n<p>3. Support gzipped static assets. We made a trade-off here not to support non-gzipped static assets, given that most (and all modern) browsers support gzip compression.<\/p>\n<p>We also observed some serious memory leaks with our Django application. They were causing memory thrashing and causing the slowdown.<\/p>\n<h4><strong>June 2014<\/strong><\/h4>\n<p>Our servers are much more predictable now. While we couldn\u2019t totally fix the memory leaks, we mitigated the effects, and have workarounds in place. We started distributing our various services (both internal and external) into separate servers. This is to ensure they have minimal impact on each other.<\/p>\n<p><strong>How are we doing today?<\/strong><\/p>\n<p>For the last 7 days (from New Relic):<\/p>\n<p><a href=\"https:\/\/www.instamojo.com\/blog\/wp-content\/uploads\/2015\/08\/63b6c90a03d54255d3c36a1a9d764d2b.png\"><img loading=\"lazy\" class=\"aligncenter wp-image-5313 size-full\" src=\"https:\/\/www.instamojo.com\/blog\/wp-content\/uploads\/2015\/08\/63b6c90a03d54255d3c36a1a9d764d2b.png\" alt=\"Instamojo web transactions response time\" width=\"726\" height=\"410\" srcset=\"https:\/\/www.instamojo.com\/blog\/wp-content\/uploads\/2015\/08\/63b6c90a03d54255d3c36a1a9d764d2b.png 726w, https:\/\/www.instamojo.com\/blog\/wp-content\/uploads\/2015\/08\/63b6c90a03d54255d3c36a1a9d764d2b-300x169.png 300w\" sizes=\"(max-width: 726px) 100vw, 726px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h4>Simplest Lessons:-<\/h4>\n<p><strong>1. Invariability:<\/strong>\u00a0You can\u2019t fix the problems that you don\u2019t know of.<\/p>\n<p><strong>2. Scalability:<\/strong>\u00a0Design your systems for horizontal scalability. You\u2019ll outgrow a single server, however big the server might be. It&#8217;s only a question of when.<\/p>\n<p><strong>3.\u00a0Measure and Monitor:<\/strong> It is also important to monitor and measure the performance of all 3rd party services\/modules. (I\u2019m looking at you, sorl-thumbnail)<\/p>\n<p><strong>4. Improving performance is a continuous process:\u00a0<\/strong>We have come a long way but we still have a long way ahead. Join us and help us beat rocket speed.<\/p>\n<hr \/>\n<p style=\"text-align: center;\"><a class=\"mb-button mb-style-flat mb-size-default mb-corners-default mb-text-style-default \" style=\"background-color: #4e4e91;\" href=\"https:\/\/www.instamojo.com\/online-store\/?utm_source=imblog&amp;utm_medium=interlink&amp;utm_campaign=online_store\" target=\"_blank\" rel=\"noopener\">DISCOVER INSTAMOJO<\/a><\/p>\n<p><strong><em>This post was penned by Sai Prasad, Head of Backend Engineering at Instamojo.com.<\/em><\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"Ask any engineer and he\u2019d agree &#8211; With growth, comes performance &amp; scale challenges. Instamojo is no different.&hellip;\n","protected":false},"author":6,"featured_media":18649,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[6],"tags":[12,512,513],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v17.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Technology - Performance Journey at Instamojo | Ecommerce Blog<\/title>\n<meta name=\"description\" content=\"With growth, comes performance &amp; scale challenges. Instamojo is no different. We have faced more than a few hiccups over time. These are our learnings.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.instamojo.com\/blog\/technology-performance-journey-instamojo\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Technology - Performance Journey at Instamojo | Ecommerce Blog\" \/>\n<meta property=\"og:description\" content=\"With growth, comes performance &amp; scale challenges. Instamojo is no different. We have faced more than a few hiccups over time. These are our learnings.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.instamojo.com\/blog\/technology-performance-journey-instamojo\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog Instamojo\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Instamojo\" \/>\n<meta property=\"article:author\" content=\"facebook.com\/instamojo\" \/>\n<meta property=\"article:published_time\" content=\"2015-08-08T05:36:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-06-21T08:54:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.instamojo.com\/blog\/wp-content\/uploads\/2015\/08\/Technology-Performance-Journey-at-Instamojo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"500\" \/>\n<meta name=\"twitter:card\" content=\"summary\" \/>\n<meta name=\"twitter:creator\" content=\"@instamojo\" \/>\n<meta name=\"twitter:site\" content=\"@instamojo\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Instamojo\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.instamojo.com\/blog\/#organization\",\"name\":\"Instamojo\",\"url\":\"https:\/\/www.instamojo.com\/blog\/\",\"sameAs\":[\"https:\/\/www.facebook.com\/Instamojo\",\"https:\/\/www.instagram.com\/instamojo_india\/\",\"https:\/\/www.linkedin.com\/company\/instamojo\/\",\"https:\/\/www.youtube.com\/user\/instamojo\",\"https:\/\/in.pinterest.com\/instamojo\/\",\"https:\/\/twitter.com\/instamojo\"],\"logo\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.instamojo.com\/blog\/#logo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/www.instamojo.com\/blog\/wp-content\/uploads\/2020\/10\/Instamojo-logo.png\",\"contentUrl\":\"https:\/\/www.instamojo.com\/blog\/wp-content\/uploads\/2020\/10\/Instamojo-logo.png\",\"width\":400,\"height\":92,\"caption\":\"Instamojo\"},\"image\":{\"@id\":\"https:\/\/www.instamojo.com\/blog\/#logo\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.instamojo.com\/blog\/#website\",\"url\":\"https:\/\/www.instamojo.com\/blog\/\",\"name\":\"Blog Instamojo\",\"description\":\"eCommerce business growth blog\",\"publisher\":{\"@id\":\"https:\/\/www.instamojo.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.instamojo.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.instamojo.com\/blog\/technology-performance-journey-instamojo\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/www.instamojo.com\/blog\/wp-content\/uploads\/2015\/08\/Technology-Performance-Journey-at-Instamojo.jpg\",\"contentUrl\":\"https:\/\/www.instamojo.com\/blog\/wp-content\/uploads\/2015\/08\/Technology-Performance-Journey-at-Instamojo.jpg\",\"width\":800,\"height\":500,\"caption\":\"Technology performance journey at Instamojo\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.instamojo.com\/blog\/technology-performance-journey-instamojo\/#webpage\",\"url\":\"https:\/\/www.instamojo.com\/blog\/technology-performance-journey-instamojo\/\",\"name\":\"Technology - Performance Journey at Instamojo | Ecommerce Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.instamojo.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.instamojo.com\/blog\/technology-performance-journey-instamojo\/#primaryimage\"},\"datePublished\":\"2015-08-08T05:36:07+00:00\",\"dateModified\":\"2021-06-21T08:54:15+00:00\",\"description\":\"With growth, comes performance & scale challenges. Instamojo is no different. We have faced more than a few hiccups over time. These are our learnings.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.instamojo.com\/blog\/technology-performance-journey-instamojo\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.instamojo.com\/blog\/technology-performance-journey-instamojo\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.instamojo.com\/blog\/technology-performance-journey-instamojo\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.instamojo.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Technology &#8211; Performance Journey at Instamojo\"}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/www.instamojo.com\/blog\/technology-performance-journey-instamojo\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.instamojo.com\/blog\/technology-performance-journey-instamojo\/#webpage\"},\"author\":{\"@id\":\"https:\/\/www.instamojo.com\/blog\/#\/schema\/person\/42d2fa4635c87aa3a0e3665835f155a0\"},\"headline\":\"Technology &#8211; Performance Journey at Instamojo\",\"datePublished\":\"2015-08-08T05:36:07+00:00\",\"dateModified\":\"2021-06-21T08:54:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.instamojo.com\/blog\/technology-performance-journey-instamojo\/#webpage\"},\"wordCount\":488,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.instamojo.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.instamojo.com\/blog\/technology-performance-journey-instamojo\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.instamojo.com\/blog\/wp-content\/uploads\/2015\/08\/Technology-Performance-Journey-at-Instamojo.jpg\",\"keywords\":[\"Instamojo\",\"Instamojo engineering\",\"Instamojo speed\"],\"articleSection\":[\"Team Speaks\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.instamojo.com\/blog\/technology-performance-journey-instamojo\/#respond\"]}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.instamojo.com\/blog\/#\/schema\/person\/42d2fa4635c87aa3a0e3665835f155a0\",\"name\":\"Instamojo\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.instamojo.com\/blog\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1ca6da28cc8b22fb742c790c96543ab9?s=96&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1ca6da28cc8b22fb742c790c96543ab9?s=96&r=g\",\"caption\":\"Instamojo\"},\"description\":\"India's simplest D2C tech platform. Host your online store, create landing pages, or share payment links. Sign up for free.\",\"sameAs\":[\"http:\/\/instamojo.com\",\"facebook.com\/instamojo\",\"https:\/\/twitter.com\/instamojo\"],\"url\":\"https:\/\/www.instamojo.com\/blog\/author\/instamojo\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Technology - Performance Journey at Instamojo | Ecommerce Blog","description":"With growth, comes performance & scale challenges. Instamojo is no different. We have faced more than a few hiccups over time. These are our learnings.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.instamojo.com\/blog\/technology-performance-journey-instamojo\/","og_locale":"en_US","og_type":"article","og_title":"Technology - Performance Journey at Instamojo | Ecommerce Blog","og_description":"With growth, comes performance & scale challenges. Instamojo is no different. We have faced more than a few hiccups over time. These are our learnings.","og_url":"https:\/\/www.instamojo.com\/blog\/technology-performance-journey-instamojo\/","og_site_name":"Blog Instamojo","article_publisher":"https:\/\/www.facebook.com\/Instamojo","article_author":"facebook.com\/instamojo","article_published_time":"2015-08-08T05:36:07+00:00","article_modified_time":"2021-06-21T08:54:15+00:00","og_image":[{"width":800,"height":500,"url":"https:\/\/www.instamojo.com\/blog\/wp-content\/uploads\/2015\/08\/Technology-Performance-Journey-at-Instamojo.jpg","type":"image\/jpeg"}],"twitter_card":"summary","twitter_creator":"@instamojo","twitter_site":"@instamojo","twitter_misc":{"Written by":"Instamojo","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Organization","@id":"https:\/\/www.instamojo.com\/blog\/#organization","name":"Instamojo","url":"https:\/\/www.instamojo.com\/blog\/","sameAs":["https:\/\/www.facebook.com\/Instamojo","https:\/\/www.instagram.com\/instamojo_india\/","https:\/\/www.linkedin.com\/company\/instamojo\/","https:\/\/www.youtube.com\/user\/instamojo","https:\/\/in.pinterest.com\/instamojo\/","https:\/\/twitter.com\/instamojo"],"logo":{"@type":"ImageObject","@id":"https:\/\/www.instamojo.com\/blog\/#logo","inLanguage":"en-US","url":"https:\/\/www.instamojo.com\/blog\/wp-content\/uploads\/2020\/10\/Instamojo-logo.png","contentUrl":"https:\/\/www.instamojo.com\/blog\/wp-content\/uploads\/2020\/10\/Instamojo-logo.png","width":400,"height":92,"caption":"Instamojo"},"image":{"@id":"https:\/\/www.instamojo.com\/blog\/#logo"}},{"@type":"WebSite","@id":"https:\/\/www.instamojo.com\/blog\/#website","url":"https:\/\/www.instamojo.com\/blog\/","name":"Blog Instamojo","description":"eCommerce business growth blog","publisher":{"@id":"https:\/\/www.instamojo.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.instamojo.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"ImageObject","@id":"https:\/\/www.instamojo.com\/blog\/technology-performance-journey-instamojo\/#primaryimage","inLanguage":"en-US","url":"https:\/\/www.instamojo.com\/blog\/wp-content\/uploads\/2015\/08\/Technology-Performance-Journey-at-Instamojo.jpg","contentUrl":"https:\/\/www.instamojo.com\/blog\/wp-content\/uploads\/2015\/08\/Technology-Performance-Journey-at-Instamojo.jpg","width":800,"height":500,"caption":"Technology performance journey at Instamojo"},{"@type":"WebPage","@id":"https:\/\/www.instamojo.com\/blog\/technology-performance-journey-instamojo\/#webpage","url":"https:\/\/www.instamojo.com\/blog\/technology-performance-journey-instamojo\/","name":"Technology - Performance Journey at Instamojo | Ecommerce Blog","isPartOf":{"@id":"https:\/\/www.instamojo.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.instamojo.com\/blog\/technology-performance-journey-instamojo\/#primaryimage"},"datePublished":"2015-08-08T05:36:07+00:00","dateModified":"2021-06-21T08:54:15+00:00","description":"With growth, comes performance & scale challenges. Instamojo is no different. We have faced more than a few hiccups over time. These are our learnings.","breadcrumb":{"@id":"https:\/\/www.instamojo.com\/blog\/technology-performance-journey-instamojo\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.instamojo.com\/blog\/technology-performance-journey-instamojo\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.instamojo.com\/blog\/technology-performance-journey-instamojo\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.instamojo.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Technology &#8211; Performance Journey at Instamojo"}]},{"@type":"Article","@id":"https:\/\/www.instamojo.com\/blog\/technology-performance-journey-instamojo\/#article","isPartOf":{"@id":"https:\/\/www.instamojo.com\/blog\/technology-performance-journey-instamojo\/#webpage"},"author":{"@id":"https:\/\/www.instamojo.com\/blog\/#\/schema\/person\/42d2fa4635c87aa3a0e3665835f155a0"},"headline":"Technology &#8211; Performance Journey at Instamojo","datePublished":"2015-08-08T05:36:07+00:00","dateModified":"2021-06-21T08:54:15+00:00","mainEntityOfPage":{"@id":"https:\/\/www.instamojo.com\/blog\/technology-performance-journey-instamojo\/#webpage"},"wordCount":488,"commentCount":0,"publisher":{"@id":"https:\/\/www.instamojo.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.instamojo.com\/blog\/technology-performance-journey-instamojo\/#primaryimage"},"thumbnailUrl":"https:\/\/www.instamojo.com\/blog\/wp-content\/uploads\/2015\/08\/Technology-Performance-Journey-at-Instamojo.jpg","keywords":["Instamojo","Instamojo engineering","Instamojo speed"],"articleSection":["Team Speaks"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.instamojo.com\/blog\/technology-performance-journey-instamojo\/#respond"]}]},{"@type":"Person","@id":"https:\/\/www.instamojo.com\/blog\/#\/schema\/person\/42d2fa4635c87aa3a0e3665835f155a0","name":"Instamojo","image":{"@type":"ImageObject","@id":"https:\/\/www.instamojo.com\/blog\/#personlogo","inLanguage":"en-US","url":"https:\/\/secure.gravatar.com\/avatar\/1ca6da28cc8b22fb742c790c96543ab9?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1ca6da28cc8b22fb742c790c96543ab9?s=96&r=g","caption":"Instamojo"},"description":"India's simplest D2C tech platform. Host your online store, create landing pages, or share payment links. Sign up for free.","sameAs":["http:\/\/instamojo.com","facebook.com\/instamojo","https:\/\/twitter.com\/instamojo"],"url":"https:\/\/www.instamojo.com\/blog\/author\/instamojo\/"}]}},"_links":{"self":[{"href":"https:\/\/www.instamojo.com\/blog\/wp-json\/wp\/v2\/posts\/5008"}],"collection":[{"href":"https:\/\/www.instamojo.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.instamojo.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.instamojo.com\/blog\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.instamojo.com\/blog\/wp-json\/wp\/v2\/comments?post=5008"}],"version-history":[{"count":5,"href":"https:\/\/www.instamojo.com\/blog\/wp-json\/wp\/v2\/posts\/5008\/revisions"}],"predecessor-version":[{"id":18698,"href":"https:\/\/www.instamojo.com\/blog\/wp-json\/wp\/v2\/posts\/5008\/revisions\/18698"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.instamojo.com\/blog\/wp-json\/wp\/v2\/media\/18649"}],"wp:attachment":[{"href":"https:\/\/www.instamojo.com\/blog\/wp-json\/wp\/v2\/media?parent=5008"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.instamojo.com\/blog\/wp-json\/wp\/v2\/categories?post=5008"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.instamojo.com\/blog\/wp-json\/wp\/v2\/tags?post=5008"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}