{"componentChunkName":"component---src-pages-markdown-remark-fields-slug-js","path":"/engineering/a-journey-from-node-to-golang/","result":{"data":{"markdownRemark":{"id":"10a0485a-b55e-5ccf-b264-53d9645898a1","excerpt":"Migrating your existing code to a new programming language is a very tedious task. We need to have a proper set of requirements and some obvious benchmarking…","html":"<p>Migrating your existing code to a new programming language is a very tedious task. We need to have a proper set of requirements and some obvious benchmarking between the new and existing technology.</p>\n<p>So here our journey started to transform (not convert) our existing code to a new language. You might be thinking why I have used the word transformation instead of conversion, so -</p>\n<p><strong>Conversion:</strong> Conversion is just about writing your existing code in different languages as it is.</p>\n<p><strong>Transformation:</strong> Transformation is about leveraging all possible benefits of a new language and convert accordingly.</p>\n<h2 id=\"why-we-decided-to-change\" style=\"position:relative;\"><a href=\"#why-we-decided-to-change\" aria-label=\"why we decided to change permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Why we decided to change?</h2>\n<p>The idea of migrating code to a new programming language started with a simple requirement: we wanted to take our cloud solution to on-premise as well. Till now, our services were written in NodeJS for a cloud solution and it was doing pretty well. The performance was also good but there is nothing that cannot be improved upon. So, along with performance improvement, we started to find out that <strong>can we make a GUI or CLI using existing NodeJS code that can take our solution on-premise?</strong></p>\n<p>Answer for that was practically YES. but, technically NO. If we’re writing apps with a GUI, Node can’t do it on its own. We had to use some other projects which provide GUI creation capabilities (eg: ElectronJS, NW.js, etc). Making CLI seemed doable but there were also problems like the inablility to have single file distribution for our code. And the ability to download a single file and execute commands - without an installer, or even a setup process - does wonders for a user. This also makes the product easily backward-compatible.</p>\n<p>Also, another factor came in that it was better to switch to a technology that works closely with gRPC.</p>\n<p>So, we drew out a few goals for our new solution</p>\n<ul>\n<li>Zero deployment dependencies</li>\n<li>Performance upgradation</li>\n<li>Single file distribution</li>\n<li>Easily compatible with gRPC</li>\n<li>Good memory management</li>\n<li>Better readability and maintainability</li>\n</ul>\n<p>After research with our requirement, we were able to figure out that we can achieve these with GoLang, developed by Google.\nOn the basis of our research, we also did some benchmarking on different node js frameworks and GoLang.</p>\n<p><strong>Benchmarking sever</strong> we’ve used with below configurations</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 536px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 37.5%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAABJ0AAASdAHeZh94AAABcklEQVQoz12R3W6CQBCFef+XsDY22qQ2aRsfQL2xWu2VIrIq/0v9VyICoqc7Y/BCki+zO+yZPQe0p3IZ5fIzSqUn1GqvqFReUK3W0Gg0UH+ro15/x8fnF9rtNprNJlqtFtdi/Yi2XC6xWq0YGYag/Xq9ge/7GOs6hiMd680G+/0eu92O2W6393UBvSe08/mM0+nEJEnCNU1THmiaApPJBFKGyPOc+1mW3Stpi30xQzlcgZ7L5YLr9cpCOhQEAQ+cChOmEOx8sVhwlVIyYXiDHJKGDGmDwS8sy2KEErquh0TdSHU0HMG2LYwnBnQV37LmmM8tNSRU712+NJSB+kRrdhfH8W0gCU0xhWEYcBwXKTlUkYWYwfV81XPY7Ww2R6CcpVnKcQvukclhvz9QlvfcpMgUPc/P+FNRyA0N45jKled5Ch/HY6wipqy5kXFkQut1e+h0vtHt/fDfi6JICY5wbBvG2IAfSI5CPRpE9XCIGDr7yD95q00P4KxcEAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"server\"\n        title=\"server\"\n        src=\"/static/0bf48f56fa9abf07626bc03e9f1cccad/2d920/server.png\"\n        srcset=\"/static/0bf48f56fa9abf07626bc03e9f1cccad/2d920/server.png 536w\"\n        sizes=\"(max-width: 536px) 100vw, 536px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p><strong>The benchmarking result</strong> was pretty much similor to what we are thinking. Here are the benchmarking results -</p>\n<h4 id=\"100000-requests-5000-concurrency\" style=\"position:relative;\"><a href=\"#100000-requests-5000-concurrency\" aria-label=\"100000 requests 5000 concurrency permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>100000 Requests 5000 Concurrency</h4>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 17.07692307692308%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAYAAACTWi8uAAAACXBIWXMAABJ0AAASdAHeZh94AAAAtklEQVQI1yWO24qDMBRF/f8/c6xYI3TAcTA1TaJipY54RVlNMw+Hc9n7LHaQJAlhGHKJL3y5XilF0zTkeU6aptR146pGCEFZSrquo6oqr7VtS1H8cLt9Y4zhwwqEE67XhDiO3UPJuq4cx8HweiHlnX3f3W3hLiXDMHCeJ89n5zTpfdZaB7OM48hvURBkWUYURYhMME2TBy7L4g1aG+Z59rvWmr7v2baNPwdWD+XnT0pj/4HKJX8DRDXcuO7y3E8AAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"sheet1\"\n        title=\"sheet1\"\n        src=\"/static/6233a9b39dd838b4a50d59199181f7d5/e5715/sheet1.png\"\n        srcset=\"/static/6233a9b39dd838b4a50d59199181f7d5/a6d36/sheet1.png 650w,\n/static/6233a9b39dd838b4a50d59199181f7d5/e5715/sheet1.png 768w,\n/static/6233a9b39dd838b4a50d59199181f7d5/2cffa/sheet1.png 1092w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<h4 id=\"100000-requests-7500-concurrency\" style=\"position:relative;\"><a href=\"#100000-requests-7500-concurrency\" aria-label=\"100000 requests 7500 concurrency permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>100000 Requests 7500 Concurrency</h4>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 16.76923076923077%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAYAAACTWi8uAAAACXBIWXMAABJ0AAASdAHeZh94AAAAs0lEQVQI1zWOyQ6CQBQE/f9Pw0BAxANBZUARCDAQHJawlMMkHjqvDy9ddbJtG8uy+N/X601RFIRhyMX3Tc/zHM/zeD5jqqoiTVOCa0BZlkRRRBDcyLIMR2+cPNfF1XEcByEE8zyzbRtN0yCShGVZmKaJRPe269j3nbqu9W/Cuq4Gln1y+m/P437Xg5psnc/4Vx+lBsZxNJGyNbZKKYZhMAYH5ABKKY3lATosP3qw7VpEHPMDW8vcvhsKSCoAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"sheet2\"\n        title=\"sheet2\"\n        src=\"/static/6da55e8d7c1586aca7b288226698ae0e/e5715/sheet2.png\"\n        srcset=\"/static/6da55e8d7c1586aca7b288226698ae0e/a6d36/sheet2.png 650w,\n/static/6da55e8d7c1586aca7b288226698ae0e/e5715/sheet2.png 768w,\n/static/6da55e8d7c1586aca7b288226698ae0e/db3a5/sheet2.png 1087w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>There was a big difference. For better clarity let’s see the below graphs.</p>\n<h3 id=\"total-time-taken-for-tests\" style=\"position:relative;\"><a href=\"#total-time-taken-for-tests\" aria-label=\"total time taken for tests permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Total Time taken for Test(s)</h3>\n<p>In the below chart, we can clearly see that Golang won the competition and Hapi has taken the maximum time to finish the test.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 600px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 61.83333333333333%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAAsTAAALEwEAmpwYAAAB60lEQVQoz4WSvWsUQRjG7y+xFCxFLVXsRCw1VQJWWghpxCbGwsRCtIohIpgi2ikoCn6QJhI5QkwiRDAkomcCgXjx7vbjZmdn5/NxZnY37mqCAw87O/Pub573mW1wzhEEAaIo8ur1ev49SRKEYeglhIAbxhj8bzTKQveRe+4nrTWkzOXmB8nVNkryQbDcVd1Z1Wm9zjrMsgyubafqacpKWEdKaXCh8Wolw0srxlVtz3hnFYdxHMNBqyf/nRTNDE6PE5y8RRDS+q5UBlzaWIrlBiHEA6WUe3k5ZEA0Hs1xPF8S6Kca5+8lOHc3Qc+uv10VmJnnCBONydkMFyYoPv2QObB0mMOMb8UBW22F46MEF21xRLWHnb2ToNvXGJyiODpC8O2nwugzhiPX+5hfF3Vg6azU5i+FM7cJLj38F3hlOsWpMYLWrsLYC4ZjNwiaG4VDxpi9EEdX2NiRGH5M8eRDhq1OHVi27ICXp+k+QPHnP1Q6D7T5VeHQMMHVGWaBGiduEgzcd0Bj4YmF5MChB6lv+XtbY+Qpw+FrxLZcOPTZWSkpsN2O8WZxF8vrXQQxxexKF80vISjjeP85xJwVTTkW1kK8W+4gIhlWW328/tjBTje1Sakc6DLzt26cVXdSmacqhGJNV+blutmbO9RvekJ3qnRQx1IAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"total-time-taken-for-test\"\n        title=\"total-time-taken-for-test\"\n        src=\"/static/ec9779e9c601a6da5e89dfb80919b4bf/0a47e/total-time-taken-for-test.png\"\n        srcset=\"/static/ec9779e9c601a6da5e89dfb80919b4bf/0a47e/total-time-taken-for-test.png 600w\"\n        sizes=\"(max-width: 600px) 100vw, 600px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<h3 id=\"request-per-second-s-and-transfer-rate-kbs\" style=\"position:relative;\"><a href=\"#request-per-second-s-and-transfer-rate-kbs\" aria-label=\"request per second s and transfer rate kbs permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Request per second (s) and Transfer Rate kb/s</h3>\n<p>In the below chart, we can see that Golang served maximum requests per second.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 600px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 61.83333333333333%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAAsTAAALEwEAmpwYAAAB2ElEQVQoz5VTv08bMRi9f46lUgcGVAm1gg1VlVi6wN6NjaErIztDpTIEUFSRENoiUZHyo6mSlIQL8V3uh++Su3Nev88+Q0ClEpY+3/v82c/P72wnTVMMh0Mdo9EIvufBHQgI4cH3fQRBAI++wnUhaI6guhACvI7bdDrFbHOUUsjzXBdssReASAJEYUgRIUoSTPo9JL6HMI71JkzI83m9Dc6dLMuQ0AJbTFtXKOIQTP14srIEj4geEDIoisLIJ9xZeQN5XLvLn9u0Qiml3rWgo7ffLiFuHGqFnP9LyVMxozAvFRXoEKE8rpucvS1VznqscUlgT2LxfxXaUGQJx51iJpzxWONyQ0ebbT0srELj4fj3L2S9P6ZWeqStGI+Rnp/p+YoG8uEtVHmNtMKYrgLvQGdE990ywtoXXbz9sIabzQ2N84sf8D7tGFa3g9bCC+RRqNP++iqiulnjlC5gQiLXtyX2Xy5Afa2iTaPf368h+LgBSbi5tY3rlUUkhE+O2rian6PrFeFiAJy9fgVZrRhC7vjaRLHE58YAzd0KkpsuTroZGruHGLea6MdMco7w9Bu8OEelfo3ewR4mdMzazwCXe1Wkbh/FFMbD+ydk/rZ6or9/ZOoBto05/gIrAJAmZs9rvQAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"request-per-second-and-transfer-rate-kb-s\"\n        title=\"request-per-second-and-transfer-rate-kb-s\"\n        src=\"/static/bcfe26c697b7f0b731fbc82f581b4e67/0a47e/request-per-second-and-transfer-rate-kb-s.png\"\n        srcset=\"/static/bcfe26c697b7f0b731fbc82f581b4e67/0a47e/request-per-second-and-transfer-rate-kb-s.png 600w\"\n        sizes=\"(max-width: 600px) 100vw, 600px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<h3 id=\"request-per-second-s-and-time-per-request-ms\" style=\"position:relative;\"><a href=\"#request-per-second-s-and-time-per-request-ms\" aria-label=\"request per second s and time per request ms permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Request per second (s) and Time per request (ms)</h3>\n<p>The below chart is showing that the Number of requests is very high compared to other node js frameworks.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 600px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 61.83333333333333%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAAsTAAALEwEAmpwYAAAB20lEQVQoz42TW2vUQBTH8y2toKD46gcQH3wX9KldWZ988PIkoriF9qUEL1Qtsm2x2wqCuN0um5hkN5vrZC5/55xsErUqDpzMf86Z+c05kxknz3MEQcC2WCwQRXN4foj5PLI2RxzH3Ieex/EwDNmiKEKWZaBmjEHTHBpIKVdOg7IyGH8XSJMYSZJguVwitwvFdILEwpcrX5qm0FrzOuob7RCsKIo2YIymLa027GttlQnFf/H/ZhaoUIkSQhrcelrgq68403NA/W9QB1Q1sBAaFzcyjCaSgUrptpT/NQaSEKJg4NX7GU7OamAlNdRfFkr1Z81AyqTJ8Eq/AzbWnCsZ6cbPvp/GHZB2qUQLHE0qnvD4rYB7VFpNWdAR0NkqjAOFO4PCViUZ8vKjwCyqeJ5uMhRlV/LxrL5PN55kePCu1lvDEr0dzfpoXGGtl4MQtNGlexkOvHoesRz+m1ry/Vtbt8Hh1IYK3HwO9O6+AqZDPDwErl3fgX60jpEPXLjtIxi8gBQVLvcLvO4/A2bfuHiHyForJGkGd9/Hl7195KGHQ1v63sBFeXKAcQLsup8Qf3iDKFNw35/ibGsTpX1lu8cxPm9uI5+eQjUvpXs+knepizv/Ne3XoHtsulXE+AHk4pLmxln/1AAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"request-per-second-and-time-per-request\"\n        title=\"request-per-second-and-time-per-request\"\n        src=\"/static/dcf7cdee87f4343ba96554487cd3e553/0a47e/request-per-second-and-time-per-request.png\"\n        srcset=\"/static/dcf7cdee87f4343ba96554487cd3e553/0a47e/request-per-second-and-time-per-request.png 600w\"\n        sizes=\"(max-width: 600px) 100vw, 600px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<h3 id=\"total-data-transferred\" style=\"position:relative;\"><a href=\"#total-data-transferred\" aria-label=\"total data transferred permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Total Data Transferred</h3>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 600px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 61.83333333333333%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAAsTAAALEwEAmpwYAAACCElEQVQoz32TzWsTQRiHVwVLpQe9FPHgH+BJBL8FJQj+BcWDqEUQgp8HsYKoFxGJB6U99KJgg1DwIHiyfqGoeBALobX0YhNE0xhjdZM0yc7uzM7j7G42iU3owDAfvPN7n/djLCkltVod6bksVX0qyw0a9RqOcBGlEtVyFVcso2p5qo5DvvILISS+nadRtXE9idYa3/fD1QoE6/U6wnUBTWvo9l4rPzpqFZ59s+qWWSTWEowvoxnrRObjrwSPPkp6Dd3DcTAsz/Mol8shZeBFBTShR8XQWIPk+B/UtwXc0jxuZY5spcjS3x9QWkB5jrHrQUgHvo49GsFTac2ZkQ/kjhzEHt1K8fVGBieT3BpNwJVNyOJ8RGrEViUMPZrcDk9okpfekT20F/vuIIUXfax9eIyrt3fAWQs3P4Mf+pa9c/hfSoxBLJhL7Me+t5nCyw30pU9wPbULLqxBFuaaoXUQKqVCOtdUuV1+M1UHYWKfIQwE+1k/cZxrqZ1w3sJbnG0SqjbhaoJhDi+/J3f4gCHcYgQH6E+f5Mad3XBxnRH80i3YXZR2yEfva4bPvSG7Zzt2aoDClIX1YIiRm9vgtIVcnOkOOc5d0OCO+QlCiGia/XRO8Gn6O/nnzyhlnvDz62MmZ9/yOTOFn3mKU/ltPoQX2gZvg2hbRels2ZC04yb4H7K5rmxsvaKx/wHhpmMjBdxxEQAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"chart\"\n        title=\"chart\"\n        src=\"/static/b6d6b3964620b206772933fe75bd7d45/0a47e/chart.png\"\n        srcset=\"/static/b6d6b3964620b206772933fe75bd7d45/0a47e/chart.png 600w\"\n        sizes=\"(max-width: 600px) 100vw, 600px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>All the data clearly shows the direction so we decided to move to GoLang.</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>","headings":[{"value":"Why we decided to change?","depth":2},{"value":"100000 Requests 5000 Concurrency","depth":4},{"value":"100000 Requests 7500 Concurrency","depth":4},{"value":"Total Time taken for Test(s)","depth":3},{"value":"Request per second (s) and Transfer Rate kb/s","depth":3},{"value":"Request per second (s) and Time per request (ms)","depth":3},{"value":"Total Data Transferred","depth":3}],"fields":{"slug":"/engineering/a-journey-from-node-to-golang/"},"frontmatter":{"metatitle":null,"metadescription":null,"description":"If your existing technology is not fulfilling all your needs and you are thinking about switching to the new one. Also, if you are concerned about the performance. Here is the blog that can help you in this direction.","title":"A journey from Node to GoLang","canonical":null,"date":"August 11, 2020","updated_date":null,"tags":["NodeJs","Golang","Performance"],"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.5037593984962405,"src":"/static/0cb80044e5634c85f2b1002c7c3661d8/c2ae5/node-go.png","srcSet":"/static/0cb80044e5634c85f2b1002c7c3661d8/f5f11/node-go.png 200w,\n/static/0cb80044e5634c85f2b1002c7c3661d8/6d133/node-go.png 400w,\n/static/0cb80044e5634c85f2b1002c7c3661d8/c2ae5/node-go.png 600w","sizes":"(max-width: 600px) 100vw, 600px"}}},"author":{"id":"Narendra Pareek","github":"pareek-narendra","bio":"Narendra is a Product Manager at LoginRadius, where he is utilizing his skills in driving vision and roadmap for businesses. He focuses on collaboration between customer and company. He is also having a 5 years of develoment experience in different NodeJS, GO and PHP language projects.","avatar":null}}}},"pageContext":{"id":"10a0485a-b55e-5ccf-b264-53d9645898a1","fields__slug":"/engineering/a-journey-from-node-to-golang/","__params":{"fields__slug":"engineering"}}},"staticQueryHashes":["1171199041","1384082988","1711371485","1753898100","2100481360","229320306","23180105","528864852"]}