PageSourceSearch

https://www.coding-dude.com/wp/nodejs/nodejs-production-apps-from-localhost-to-cloud-scaling/

html coding-dude.com collected 2026-09-24 20:29:44 UTC 83,565 bytes, 634 lines download raw bytes

1<!DOCTYPE html><html
2lang=en-US><head><meta
3charset="UTF-8"><link
4rel=profile href=https://gmpg.org/xfn/11><meta
5name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1'><style>img:is([sizes="auto" i], [sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}</style><title>Node.js Production Apps: From Localhost to Cloud Scaling - Coding Dude</title><meta
6name="description" content="Move your Node.js app from localhost to the cloud. Use this production checklist to configure database pooling, environment secrets, logging, and Docker."><link
7rel=canonical href=https://www.coding-dude.com/wp/nodejs/nodejs-production-apps-from-localhost-to-cloud-scaling/ ><meta
8property="og:locale" content="en_US"><meta
9property="og:type" content="article"><meta
10property="og:title" content="Node.js Production Apps: From Localhost to Cloud Scaling - Coding Dude"><meta
11property="og:description" content="Move your Node.js app from localhost to the cloud. Use this production checklist to configure database pooling, environment secrets, logging, and Docker."><meta
12property="og:url" content="https://www.coding-dude.com/wp/nodejs/nodejs-production-apps-from-localhost-to-cloud-scaling/"><meta
13property="og:site_name" content="Coding Dude"><meta
14property="article:published_time" content="2026-07-21T16:21:47+00:00"><meta
15property="article:modified_time" content="2026-09-17T04:40:33+00:00"><meta
16property="og:image" content="https://www.coding-dude.com/wp/wp-content/uploads/2026/07/localhost-to-cloud.png"><meta
17property="og:image:width" content="1124"><meta
18property="og:image:height" content="502"><meta
19property="og:image:type" content="image/png"><meta
20name="author" content="John Negoita"><meta
21name="twitter:card" content="summary_large_image"><meta
22name="twitter:creator" content="@codingdudecom"><meta
23name="twitter:site" content="@codingdudecom"><meta
24name="twitter:label1" content="Written by"><meta
25name="twitter:data1" content="John Negoita"><meta
26name="twitter:label2" content="Est. reading time"><meta
27name="twitter:data2" content="7 minutes"> 
27<script type=application/ld+json class=yoast-schema-graph>{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.coding-dude.com\/wp\/nodejs\/nodejs-production-apps-from-localhost-to-cloud-scaling\/#article","isPartOf":{"@id":"https:\/\/www.coding-dude.com\/wp\/nodejs\/nodejs-production-apps-from-localhost-to-cloud-scaling\/"},"author":{"name":"John Negoita","@id":"https:\/\/www.coding-dude.com\/wp\/#\/schema\/person\/29b7100b9ec7bb332359bd9fcba98370"},"headline":"Node.js Production Apps: From Localhost to Cloud Scaling","datePublished":"2026-07-21T16:21:47+00:00","dateModified":"2026-09-17T04:40:33+00:00","mainEntityOfPage":{"@id":"https:\/\/www.coding-dude.com\/wp\/nodejs\/nodejs-production-apps-from-localhost-to-cloud-scaling\/"},"wordCount":1269,"commentCount":0,"publisher":{"@id":"https:\/\/www.coding-dude.com\/wp\/#organization"},"image":{"@id":"https:\/\/www.coding-dude.com\/wp\/nodejs\/nodejs-production-apps-from-localhost-to-cloud-scaling\/#primaryimage"},"thumbnailUrl":"https:\/\/www.coding-dude.com\/wp\/wp-content\/uploads\/2026\/07\/localhost-to-cloud.png","articleSection":["NodeJS"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.coding-dude.com\/wp\/nodejs\/nodejs-production-apps-from-localhost-to-cloud-scaling\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.coding-dude.com\/wp\/nodejs\/nodejs-production-apps-from-localhost-to-cloud-scaling\/","url":"https:\/\/www.coding-dude.com\/wp\/nodejs\/nodejs-production-apps-from-localhost-to-cloud-scaling\/","name":"Node.js Production Apps: From Localhost to Cloud Scaling - Coding Dude","isPartOf":{"@id":"https:\/\/www.coding-dude.com\/wp\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.coding-dude.com\/wp\/nodejs\/nodejs-production-apps-from-localhost-to-cloud-scaling\/#primaryimage"},"image":{"@id":"https:\/\/www.coding-dude.com\/wp\/nodejs\/nodejs-production-apps-from-localhost-to-cloud-scaling\/#primaryimage"},"thumbnailUrl":"https:\/\/www.coding-dude.com\/wp\/wp-content\/uploads\/2026\/07\/localhost-to-cloud.png","datePublished":"2026-07-21T16:21:47+00:00","dateModified":"2026-09-17T04:40:33+00:00","description":"Move your Node.js app from localhost to the cloud. Use this production checklist to configure database pooling, environment secrets, logging, and Docker.","breadcrumb":{"@id":"https:\/\/www.coding-dude.com\/wp\/nodejs\/nodejs-production-apps-from-localhost-to-cloud-scaling\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.coding-dude.com\/wp\/nodejs\/nodejs-production-apps-from-localhost-to-cloud-scaling\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.coding-dude.com\/wp\/nodejs\/nodejs-production-apps-from-localhost-to-cloud-scaling\/#primaryimage","url":"https:\/\/www.coding-dude.com\/wp\/wp-content\/uploads\/2026\/07\/localhost-to-cloud.png","contentUrl":"https:\/\/www.coding-dude.com\/wp\/wp-content\/uploads\/2026\/07\/localhost-to-cloud.png","width":1124,"height":502,"caption":"Localhost to cloud"},{"@type":"BreadcrumbList","@id":"https:\/\/www.coding-dude.com\/wp\/nodejs\/nodejs-production-apps-from-localhost-to-cloud-scaling\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.coding-dude.com\/wp\/"},{"@type":"ListItem","position":2,"name":"Blog","item":"https:\/\/www.coding-dude.com\/wp\/blog\/"},{"@type":"ListItem","position":3,"name":"Node.js Production Apps: From Localhost to Cloud Scaling"}]},{"@type":"WebSite","@id":"https:\/\/www.coding-dude.com\/wp\/#website","url":"https:\/\/www.coding-dude.com\/wp\/","name":"Coding Dude","description":"Coding tutorials, tips and tricks","publisher":{"@id":"https:\/\/www.coding-dude.com\/wp\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.coding-dude.com\/wp\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.coding-dude.com\/wp\/#organization","name":"Coding Dude","url":"https:\/\/www.coding-dude.com\/wp\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.coding-dude.com\/wp\/#\/schema\/logo\/image\/","url":"https:\/\/www.coding-dude.com\/wp\/wp-content\/uploads\/2018\/05\/codingdude-logo-wide.jpg","contentUrl":"https:\/\/www.coding-dude.com\/wp\/wp-content\/uploads\/2018\/05\/codingdude-logo-wide.jpg","width":226,"height":60,"caption":"Coding Dude"},"image":{"@id":"https:\/\/www.coding-dude.com\/wp\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/codingdudecom"]},{"@type":"Person","@id":"https:\/\/www.coding-dude.com\/wp\/#\/schema\/person\/29b7100b9ec7bb332359bd9fcba98370","name":"John Negoita","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/d51d5d54d4c51f0a7bfe39333bd98cfc5245ab49433be692fce26b741c08181e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/d51d5d54d4c51f0a7bfe39333bd98cfc5245ab49433be692fce26b741c08181e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d51d5d54d4c51f0a7bfe39333bd98cfc5245ab49433be692fce26b741c08181e?s=96&d=mm&r=g","caption":"John Negoita"},"description":"I'm a Java programmer, been into programming since 1999 and having tons of fun with it.","sameAs":["http:\/\/www.coding-dude.com","https:\/\/x.com\/codingdudecom"]}]}</script>
27 <link
28rel=dns-prefetch href=//cpwebassets.codepen.io><link
29rel=dns-prefetch href=//static.addtoany.com><link
30rel=dns-prefetch href=//fonts.googleapis.com><link
31rel=alternate type=application/rss+xml title="Coding Dude &raquo; Feed" href=https://www.coding-dude.com/wp/feed/ ><link
32rel=alternate type=application/rss+xml title="Coding Dude &raquo; Comments Feed" href=https://www.coding-dude.com/wp/comments/feed/ ><link
33rel=alternate type=application/rss+xml title="Coding Dude &raquo; Node.js Production Apps: From Localhost to Cloud Scaling Comments Feed" href=https://www.coding-dude.com/wp/nodejs/nodejs-production-apps-from-localhost-to-cloud-scaling/feed/ > 
33<script>/*<![CDATA[*/window._wpemojiSettings={"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/16.0.1\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/16.0.1\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/www.coding-dude.com\/wp\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.8.10"}};
34/*! This file is auto-generated */
35!function(s,n){var o,i,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),a=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===a[t]})}function u(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);for(var n=e.getImageData(16,16,1,1),a=0;a<n.data.length;a++)if(0!==n.data[a])return!1;return!0}function f(e,t,n,a){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!a(e,"\ud83e\udedf")}return!1}function g(e,t,n,a){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):s.createElement("canvas"),o=r.getContext("2d",{willReadFrequently:!0}),i=(o.textBaseline="top",o.font="600 32px Arial",{});return e.forEach(function(e){i[e]=t(o,e,n,a)}),i}function t(e){var t=s.createElement("script");t.src=e,t.defer=!0,s.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",i=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){s.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+g.toString()+"("+[JSON.stringify(i),f.toString(),p.toString(),u.toString()].join(",")+"));",a=new Blob([e],{type:"text/javascript"}),r=new Worker(URL.createObjectURL(a),{name:"wpTestEmojiSupports"});return void(r.onmessage=function(e){c(n=e.data),r.terminate(),t(n)})}catch(e){}c(n=g(i,f,p,u))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings);/*]]>*/</script>
35 <link
36rel=stylesheet href=https://www.coding-dude.com/wp/wp-content/cache/minify/85894.css media=all><style id=wp-emoji-styles-inline-css>img.wp-smiley,img.emoji{display:inline !important;border:none !important;box-shadow:none !important;height:1em !important;width:1em !important;margin:0
370.07em !important;vertical-align:-0.1em !important;background:none !important;padding:0
38!important}</style><link
39rel=stylesheet href=https://www.coding-dude.com/wp/wp-content/cache/minify/c2791.css media=all><style id=classic-theme-styles-inline-css>/*! This file is auto-generated */
40.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}</style><link
41rel=stylesheet href=https://www.coding-dude.com/wp/wp-content/cache/minify/3f4d5.css media=all><style id=global-styles-inline-css>/*<![CDATA[*/:root{--wp--preset--aspect-ratio--square:1;--wp--preset--aspect-ratio--4-3:4/3;--wp--preset--aspect-ratio--3-4:3/4;--wp--preset--aspect-ratio--3-2:3/2;--wp--preset--aspect-ratio--2-3:2/3;--wp--preset--aspect-ratio--16-9:16/9;--wp--preset--aspect-ratio--9-16:9/16;--wp--preset--color--black:#000;--wp--preset--color--cyan-bluish-gray:#abb8c3;--wp--preset--color--white:#fff;--wp--preset--color--pale-pink:#f78da7;--wp--preset--color--vivid-red:#cf2e2e;--wp--preset--color--luminous-vivid-orange:#ff6900;--wp--preset--color--luminous-vivid-amber:#fcb900;--wp--preset--color--light-green-cyan:#7bdcb5;--wp--preset--color--vivid-green-cyan:#00d084;--wp--preset--color--pale-cyan-blue:#8ed1fc;
41--wp--preset--color--vivid-cyan-blue:#0693e3;--wp--preset--color--vivid-purple:#9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple:linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan:linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange:linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red:linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray:linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum:linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple:linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux:linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk:linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean:linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass:linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight:linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small:13px;--wp--preset--font-size--medium:20px;--wp--preset--font-size--large:36px;--wp--preset--font-size--x-large:42px;--wp--preset--spacing--20:0.44rem;--wp--preset--spacing--30:0.67rem;--wp--preset--spacing--40:1rem;--wp--preset--spacing--50:1.5rem;--wp--preset--spacing--60:2.25rem;--wp--preset--spacing--70:3.38rem;--wp--preset--spacing--80:5.06rem;--wp--preset--shadow--natural:6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep:12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp:6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined:6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp:6px 6px 0px rgba(0, 0, 0, 1)}:where(.is-layout-flex){gap:0.5em}:where(.is-layout-grid){gap:0.5em}body .is-layout-flex{display:flex}.is-layout-flex{flex-wrap:wrap;align-items:center}.is-layout-flex>:is(*,div){margin:0}body .is-layout-grid{display:grid}.is-layout-grid>:is(*,div){margin:0}:where(.wp-block-columns.is-layout-flex){gap:2em}:where(.wp-block-columns.is-layout-grid){gap:2em}:where(.wp-block-post-template.is-layout-flex){gap:1.25em}:where(.wp-block-post-template.is-layout-grid){gap:1.25em}.has-black-color{color:var(--wp--preset--color--black) !important}.has-cyan-bluish-gray-color{color:var(--wp--preset--color--cyan-bluish-gray) !important}.has-white-color{color:var(--wp--preset--color--white) !important}.has-pale-pink-color{color:var(--wp--preset--color--pale-pink) !important}.has-vivid-red-color{color:var(--wp--preset--color--vivid-red) !important}.has-luminous-vivid-orange-color{color:var(--wp--preset--color--luminous-vivid-orange) !important}.has-luminous-vivid-amber-color{color:var(--wp--preset--color--luminous-vivid-amber) !important}.has-light-green-cyan-color{color:var(--wp--preset--color--light-green-cyan) !important}.has-vivid-green-cyan-color{color:var(--wp--preset--color--vivid-green-cyan) !important}.has-pale-cyan-blue-color{color:var(--wp--preset--color--pale-cyan-blue) !important}.has-vivid-cyan-blue-color{color:var(--wp--preset--color--vivid-cyan-blue) !important}.has-vivid-purple-color{color:var(--wp--preset--color--vivid-purple) !important}.has-black-background-color{background-color:var(--wp--preset--color--black) !important}.has-cyan-bluish-gray-background-color{background-color:var(--wp--preset--color--cyan-bluish-gray) !important}.has-white-background-color{background-color:var(--wp--preset--color--white) !important}.has-pale-pink-background-color{background-color:var(--wp--preset--color--pale-pink) !important}.has-vivid-red-background-color{background-color:var(--wp--preset--color--vivid-red) !important}.has-luminous-vivid-orange-background-color{background-color:var(--wp--preset--color--luminous-vivid-orange) !important}.has-luminous-vivid-amber-background-color{background-color:var(--wp--preset--color--luminous-vivid-amber) !important}.has-light-green-cyan-background-color{background-color:var(--wp--preset--color--light-green-cyan) !important}.has-vivid-green-cyan-background-color{background-color:var(--wp--preset--color--vivid-green-cyan) !important}.has-pale-cyan-blue-background-color{background-color:var(--wp--preset--color--pale-cyan-blue) !important}.has-vivid-cyan-blue-background-color{background-color:var(--wp--preset--color--vivid-cyan-blue) !important}.has-vivid-purple-background-color{background-color:var(--wp--preset--color--vivid-purple) !important}.has-black-border-color{border-color:var(--wp--preset--color--black) !important}.has-cyan-bluish-gray-border-color{border-color:var(--wp--preset--color--cyan-bluish-gray) !important}.has-white-border-color{border-color:var(--wp--preset--color--white) !important}.has-pale-pink-border-color{border-color:var(--wp--preset--color--pale-pink) !important}.has-vivid-red-border-color{border-color:var(--wp--preset--color--vivid-red) !important}.has-luminous-vivid-orange-border-color{border-color:var(--wp--preset--color--luminous-vivid-orange) !important}.has-luminous-vivid-amber-border-color{border-color:var(--wp--preset--color--luminous-vivid-amber) !important}.has-light-green-cyan-border-color{border-color:var(--wp--preset--color--light-green-cyan) !important}.has-vivid-green-cyan-border-color{border-color:var(--wp--preset--color--vivid-green-cyan) !important}.has-pale-cyan-blue-border-color{border-color:var(--wp--preset--color--pale-cyan-blue) !important}.has-vivid-cyan-blue-border-color{border-color:var(--wp--preset--color--vivid-cyan-blue) !important}.has-vivid-purple-border-color{border-color:var(--wp--preset--color--vivid-purple) !important}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background:var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background:var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background:var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background:var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important}
41.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background:var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important}.has-cool-to-warm-spectrum-gradient-background{background:var(--wp--preset--gradient--cool-to-warm-spectrum) !important}.has-blush-light-purple-gradient-background{background:var(--wp--preset--gradient--blush-light-purple) !important}.has-blush-bordeaux-gradient-background{background:var(--wp--preset--gradient--blush-bordeaux) !important}.has-luminous-dusk-gradient-background{background:var(--wp--preset--gradient--luminous-dusk) !important}.has-pale-ocean-gradient-background{background:var(--wp--preset--gradient--pale-ocean) !important}.has-electric-grass-gradient-background{background:var(--wp--preset--gradient--electric-grass) !important}.has-midnight-gradient-background{background:var(--wp--preset--gradient--midnight) !important}.has-small-font-size{font-size:var(--wp--preset--font-size--small) !important}.has-medium-font-size{font-size:var(--wp--preset--font-size--medium) !important}.has-large-font-size{font-size:var(--wp--preset--font-size--large) !important}.has-x-large-font-size{font-size:var(--wp--preset--font-size--x-large) !important}:where(.wp-block-post-template.is-layout-flex){gap:1.25em}:where(.wp-block-post-template.is-layout-grid){gap:1.25em}:where(.wp-block-columns.is-layout-flex){gap:2em}:where(.wp-block-columns.is-layout-grid){gap:2em}:root :where(.wp-block-pullquote){font-size:1.5em;line-height:1.6}/*]]>*/</style><link
42rel=stylesheet href=https://www.coding-dude.com/wp/wp-content/cache/minify/e7ff1.css media=all><link
43crossorigin=anonymous rel=stylesheet id=siteorigin-google-web-fonts-css href='https://fonts.googleapis.com/css?family=Montserrat%3A600%2C500%2C700%7COpen+Sans%3A400%2C300%2C500%2C600&#038;ver=6.8.10#038;subset&#038;display=block' type=text/css media=all><link
44rel=stylesheet href=https://www.coding-dude.com/wp/wp-content/cache/minify/7cb52.css media=all><style id=addtoany-inline-css>@media screen and (min-width:981px){.a2a_floating_style.a2a_default_style{display:none}}</style> 
44<script id=addtoany-core-js-before>window.a2a_config=window.a2a_config||{};a2a_config.callbacks=[];a2a_config.overlays=[];a2a_config.templates={};</script>
44 
44<script defer src=https://static.addtoany.com/menu/page.js id=addtoany-core-js></script>
44 
44<script src=https://www.coding-dude.com/wp/wp-content/cache/minify/16159.js defer></script>
44 
44<script id=jquery-js-after>jQuery(document).ready(function(){jQuery(".9db0862b9cf2e44f8d962262c5a80491").click(function(){jQuery.post("https://www.coding-dude.com/wp/wp-admin/admin-ajax.php",{"action":"quick_adsense_onpost_ad_click","quick_adsense_onpost_ad_index":jQuery(this).attr("data-index"),"quick_adsense_nonce":"b5d6aa66d2",},function(response){});});});</script>
44 
44<script src=https://www.coding-dude.com/wp/wp-content/cache/minify/3a11c.js defer></script>
44 
44<script id=sdm-scripts-js-extra>var sdm_ajax_script={"ajaxurl":"https:\/\/www.coding-dude.com\/wp\/wp-admin\/admin-ajax.php"};</script>
44 
44<script src=https://www.coding-dude.com/wp/wp-content/cache/minify/aff11.js defer></script>
44 <link
45rel=https://api.w.org/ href=https://www.coding-dude.com/wp/wp-json/ ><link
46rel=alternate title=JSON type=application/json href=https://www.coding-dude.com/wp/wp-json/wp/v2/posts/4928><link
47rel=EditURI type=application/rsd+xml title=RSD href=https://www.coding-dude.com/wp/xmlrpc.php?rsd><meta
48name="generator" content="WordPress 6.8.10"><link
49rel=shortlink href='https://www.coding-dude.com/wp/?p=4928'><link
50rel=alternate title="oEmbed (JSON)" type=application/json+oembed href="https://www.coding-dude.com/wp/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.coding-dude.com%2Fwp%2Fnodejs%2Fnodejs-production-apps-from-localhost-to-cloud-scaling%2F"><link
51rel=alternate title="oEmbed (XML)" type=text/xml+oembed href="https://www.coding-dude.com/wp/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.coding-dude.com%2Fwp%2Fnodejs%2Fnodejs-production-apps-from-localhost-to-cloud-scaling%2F&#038;format=xml"><style>.ae_data .elementor-editor-element-setting{display:none !important}</style>
51<script src=https://analytics.ahrefs.com/analytics.js data-key=Pl7+fMpBrYdlf2kzCt2T7Q async></script>
51<script>var lightbox_transition='elastic';var lightbox_speed=800;var lightbox_fadeOut=300;var lightbox_title=false;var lightbox_scalePhotos=true;var lightbox_scrolling=false;var lightbox_opacity=0.201;var lightbox_open=false;var lightbox_returnFocus=true;var lightbox_trapFocus=true;var lightbox_fastIframe=true;var lightbox_preloading=true;var lightbox_overlayClose=true;var lightbox_escKey=false;var lightbox_arrowKey=false;var lightbox_loop=true;var lightbox_closeButton=true;var lightbox_previous="previous";var lightbox_next="next";var lightbox_close="close";var lightbox_html=false;var lightbox_photo=false;var lightbox_width='';var lightbox_height='';var lightbox_innerWidth='false';var lightbox_innerHeight='false';var lightbox_initialWidth='300';var lightbox_initialHeight='100';var maxwidth=jQuery(window).width();if(maxwidth>768){maxwidth=768;}
52var lightbox_maxWidth=maxwidth;var lightbox_maxHeight=500;var lightbox_slideshow=false;var lightbox_slideshowSpeed=2500;var lightbox_slideshowAuto=true;var lightbox_slideshowStart="start slideshow";var lightbox_slideshowStop="stop slideshow";var lightbox_fixed=true;var lightbox_top=false;var lightbox_bottom=false;var lightbox_left=false;var lightbox_right=false;var lightbox_reposition=false;var lightbox_retinaImage=true;var lightbox_retinaUrl=false;var lightbox_retinaSuffix="@2x.$1";jQuery(window).load(function(){var title;jQuery('a.cboxElement').click(function(){if(jQuery(this).find('img').attr('alt'))
53title=jQuery(this).find('img').attr('alt');else
54title='';setTimeout(function(){jQuery('#cboxContent #cboxTitle').text(title);},1000);});jQuery('#cboxNext,#cboxPrevious').click(function(){setTimeout(function(){var src=jQuery('img.cboxPhoto').attr('src');jQuery('a.cboxElement').each(function(){if(src==jQuery(this).attr('href')){title=jQuery(this).find('img').attr('alt');jQuery('#cboxContent #cboxTitle').text(title);}});},1000);});jQuery('body').on('click','#cboxLoadedContent img',function(){setTimeout(function(){var src=jQuery('img.cboxPhoto').attr('src');jQuery('a.cboxElement').each(function(){if(src==jQuery(this).attr('href')){title=jQuery(this).find('img').attr('alt');jQuery('#cboxContent #cboxTitle').text(title);}});},1000);});});</script>
54 <style>ul.scfw_16px li, ul.scfw_24px li, ul.scfw_32px li, ul.scfw_16px li a, ul.scfw_24px li a, ul.scfw_32px li
55a{display:inline !important;float:none !important;border:0
56!important;background:transparent none !important;margin:0
57!important;padding:0
58!important}ul.scfw_16px
59li{margin:0
602px 0 0 !important}ul.scfw_24px
61li{margin:0
623px 0 0 !important}ul.scfw_32px
63li{margin:0
645px 0 0 !important}ul.scfw_text_img li:before, ul.scfw_16px li:before, ul.scfw_24px li:before, ul.scfw_32px li:before{content:none !important}.scfw
65img{float:none !important}</style><style>.wp-post-navigation
66a{text-decoration:none;font:bold 16px sans-serif, arial;color:#666}</style><meta
67name="viewport" content="width=device-width, initial-scale=1"><link
68rel=pingback href=https://www.coding-dude.com/wp/xmlrpc.php><meta
69name="generator" content="Elementor 4.2.4; features: additional_custom_breakpoints; settings: css_print_method-external, google_font-enabled, font_display-auto"><style>.e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload),
70.e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload) *{background-image:none !important}@media screen and (max-height: 1024px){.e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload),
71.e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload) *{background-image:none !important}}@media screen and (max-height: 640px){.e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload),
72.e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload) *{background-image:none !important}}</style><link
73rel=amphtml href="https://www.coding-dude.com/wp/nodejs/nodejs-production-apps-from-localhost-to-cloud-scaling/?amp=1"><style id=siteorigin-corp-settings-custom data-siteorigin-settings=true>@media (max-width: 768px){#masthead .search-toggle{margin:0
7420px 0 0}.site-header .shopping-cart{margin:0
7537px 0 0}#masthead #mobile-menu-button{display:inline-block}#masthead .main-navigation:not(.mega-menu) ul:not(.shopping-cart){display:none}#masthead .main-navigation .search-icon{display:none}.site-header.centered .site-branding{margin:0;padding-right:20px;text-align:left}.centered.site-header .site-header-inner{flex-direction:row}.site-header.centered .main-navigation{text-align:left}}@media (min-width: 769px){#masthead #mobile-navigation{display:none}}</style><link
76rel=icon href=https://www.coding-dude.com/wp/wp-content/uploads/2018/05/cropped-codingdude-logo-big-32x32.jpg sizes=32x32><link
77rel=icon href=https://www.coding-dude.com/wp/wp-content/uploads/2018/05/cropped-codingdude-logo-big-192x192.jpg sizes=192x192><link
78rel=apple-touch-icon href=https://www.coding-dude.com/wp/wp-content/uploads/2018/05/cropped-codingdude-logo-big-180x180.jpg><meta
79name="msapplication-TileImage" content="https://www.coding-dude.com/wp/wp-content/uploads/2018/05/cropped-codingdude-logo-big-270x270.jpg"><style id=wp-custom-css>a{word-break:break-word}.addtoany_list{display:flex;flex-direction:column}.addtoany_list.a2a_kit_size_32 a:not(.addtoany_special_service)>span{width:48px;height:48px}h1 strong,h2
80strong{font-size:0.5em;text-transform:uppercase;display:block;letter-spacing:0.05em}.newsletter.newsletter-subscription{background:#fafafa}pre bold, pre
81strong{color:black;text-shadow:0px 0px 0px black}code{overflow-wrap:break-word}//homepage
82.page-id-4126
83#masthead{display:none}</style></head><body
84data-rsssl=1 class="wp-singular post-template-default single single-post postid-4928 single-format-standard wp-custom-logo wp-theme-siteorigin-corp metaslider-plugin css3-animations no-js page-layout-default sidebar no-topbar elementor-default elementor-kit-3358"><div
85id=page class=site>
86<a
87class="skip-link screen-reader-text" href=#content>Skip to content</a><header
88id=masthead class="site-header mobile-menu"  ><div
89class=corp-container><div
90class=site-header-inner><div
91class=site-branding>
92<a
93href=https://www.coding-dude.com/wp/ class=custom-logo-link rel=home><img
94width=226 height=60 src=https://www.coding-dude.com/wp/wp-content/uploads/2018/05/codingdude-logo-wide.jpg class=custom-logo alt="Coding Dude" decoding=async srcset="https://www.coding-dude.com/wp/wp-content/uploads/2018/05/codingdude-logo.jpg 2x" loading=eager></a></div><nav
95id=site-navigation class="main-navigation link-underline "><div
96class=menu-main-menu-container><ul
97id=primary-menu class=menu><li
98id=menu-item-41 class="menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-41"><a
99href=https://www.coding-dude.com/wp/ >Home</a></li>
100<li
101id=menu-item-4866 class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-4866"><a
102href=#>Tools</a><ul
103class=sub-menu>
104<li
105id=menu-item-4865 class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4865"><a
106href=https://www.coding-dude.com/wp/spiral/ >Spiral</a></li></ul>
107</li>
108<li
109id=menu-item-425 class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-425"><a
110href=https://www.coding-dude.com/wp/projects/ >Projects</a><ul
111class=sub-menu>
112<li
113id=menu-item-3428 class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3428"><a
114href=https://www.coding-dude.com/wp/wavy-text-generator/ >Wavy Text Generator</a></li>
115<li
116id=menu-item-426 class="menu-item menu-item-type-post_type menu-item-object-page menu-item-426"><a
117href=https://www.coding-dude.com/wp/projects/infographic-charts-graphics-html-tags-library/ >Infographic Charts and Graphics</a></li>
118<li
119id=menu-item-1179 class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1179"><a
120href=https://www.coding-dude.com/wp/projects/charts-and-graphs-wordpress-visual-designer/ >Charts and graphs WordPress Visual Designer</a></li>
121<li
122id=menu-item-627 class="menu-item menu-item-type-post_type menu-item-object-page menu-item-627"><a
123href=https://www.coding-dude.com/wp/projects/infographic-charts-graphics-html-tags-library/infographic-shortcodes-wordpress-plugin/ >WordPress plugin</a></li>
124<li
125id=menu-item-796 class="menu-item menu-item-type-post_type menu-item-object-page menu-item-796"><a
126href=https://www.coding-dude.com/wp/projects/brainspeed-online-brain-training-game/ >BrainSpeed – online brain training game</a></li>
127<li
128id=menu-item-624 class="menu-item menu-item-type-post_type menu-item-object-page menu-item-624"><a
129href=https://www.coding-dude.com/wp/projects/infographic-charts-graphics-html-tags-library/documentation/ >Docs</a></li></ul>
130</li>
131<li
132id=menu-item-4796 class="menu-item menu-item-type-custom menu-item-object-custom menu-item-4796"><a
133href=/wp/open-source-ai/ >AI Models</a></li>
134<li
135id=menu-item-761 class="menu-item menu-item-type-post_type menu-item-object-page current_page_parent menu-item-has-children menu-item-761"><a
136href=https://www.coding-dude.com/wp/blog/ >Blog</a><ul
137class=sub-menu>
138<li
139id=menu-item-2781 class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-2781"><a
140href=https://www.coding-dude.com/wp/category/css/ >CSS</a></li>
141<li
142id=menu-item-2782 class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-2782"><a
143href=https://www.coding-dude.com/wp/category/html5/ >HTML5</a></li>
144<li
145id=menu-item-2790 class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-2790"><a
146href=https://www.coding-dude.com/wp/category/java/ >Java</a></li>
147<li
148id=menu-item-2784 class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-2784"><a
149href=https://www.coding-dude.com/wp/category/javascript/ >Javascript</a></li>
150<li
151id=menu-item-2785 class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-2785"><a
152href=https://www.coding-dude.com/wp/category/jquery/ >jQuery</a></li>
153<li
154id=menu-item-2787 class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-2787"><a
155href=https://www.coding-dude.com/wp/category/php/ >PHP</a></li>
156<li
157id=menu-item-2791 class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-2791"><a
158href=https://www.coding-dude.com/wp/category/seo/ >SEO</a></li>
159<li
160id=menu-item-2792 class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-2792"><a
161href=https://www.coding-dude.com/wp/category/wordpress/ >WordPress</a></li>
162<li
163id=menu-item-2786 class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-2786"><a
164href=https://www.coding-dude.com/wp/category/other/ >Other</a></li></ul>
165</li>
166<li
167id=menu-item-43 class="menu-item menu-item-type-post_type menu-item-object-page menu-item-43"><a
168href=https://www.coding-dude.com/wp/about/ title="About coding-dude.com">About Us</a></li></ul></div>
169<button
170id=search-button class=search-toggle aria-label="Open Search">
171<span
172class=open>		<svg
173version=1.1 xmlns=http://www.w3.org/2000/svg width=26 height=28 viewB
173ox="0 0 26 28">
174<path
175d="M18 13c0-3.859-3.141-7-7-7s-7 3.141-7 7 3.141 7 7 7 7-3.141 7-7zM26 26c0 1.094-0.906 2-2 2-0.531 0-1.047-0.219-1.406-0.594l-5.359-5.344c-1.828 1.266-4.016 1.937-6.234 1.937-6.078 0-11-4.922-11-11s4.922-11 11-11 11 4.922 11 11c0 2.219-0.672 4.406-1.937 6.234l5.359 5.359c0.359 0.359 0.578 0.875 0.578 1.406z"></path>
176</svg>
177</span>
178</button>
179<a
180href=#menu id=mobile-menu-button>
181<svg
182version=1.1 xmlns=http://www.w3.org/2000/svg xmlns:xlink=http://www.w3.org/1999/xlink width=27 height=32 viewBox="0 0 27 32">
183<path
184d="M27.429 24v2.286q0 0.464-0.339 0.804t-0.804 0.339h-25.143q-0.464 0-0.804-0.339t-0.339-0.804v-2.286q0-0.464 0.339-0.804t0.804-0.339h25.143q0.464 0 0.804 0.339t0.339 0.804zM27.429 14.857v2.286q0 0.464-0.339 0.804t-0.804 0.339h-25.143q-0.464 0-0.804-0.339t-0.339-0.804v-2.286q0-0.464 0.339-0.804t0.804-0.339h25.143q0.464 0 0.804 0.339t0.339 0.804zM27.429 5.714v2.286q0 0.464-0.339 0.804t-0.804 0.339h-25.143q-0.464 0-0.804-0.339t-0.339-0.804v-2.286q0-0.464 0.339-0.804t0.804-0.339h25.143q0.464 0 0.804 0.339t0.339 0.804z"></path>
185</svg>
186<span
187class=screen-reader-text>Menu</span>
188</a></nav><div
189id=fullscreen-search><div
190class=corp-container>
191<span>Type and press enter to search</span><form
192id=fullscreen-search-form method=get action=https://www.coding-dude.com/wp>
193<input
194type=search name=s placeholder aria-label="Search for" value>
195<button
196type=submit aria-label=Search>
197<svg
198version=1.1 xmlns=http://www.w3.org/2000/svg width=26 height=28 viewB
198ox="0 0 26 28">
199<path
200d="M18 13c0-3.859-3.141-7-7-7s-7 3.141-7 7 3.141 7 7 7 7-3.141 7-7zM26 26c0 1.094-0.906 2-2 2-0.531 0-1.047-0.219-1.406-0.594l-5.359-5.344c-1.828 1.266-4.016 1.937-6.234 1.937-6.078 0-11-4.922-11-11s4.922-11 11-11 11 4.922 11 11c0 2.219-0.672 4.406-1.937 6.234l5.359 5.359c0.359 0.359 0.578 0.875 0.578 1.406z"></path>
201</svg>
202</button></form></div>
203<button
204id=search-close-button class=search-close-button aria-label="Close search">
205<span
206class=close>		<svg
207version=1.1 xmlns=http://www.w3.org/2000/svg xmlns:xlink=http://www.w3.org/1999/xlink width=24 height=24 viewBox="0 0 24 24">
208<path
209d="M18.984 6.422l-5.578 5.578 5.578 5.578-1.406 1.406-5.578-5.578-5.578 5.578-1.406-1.406 5.578-5.578-5.578-5.578 1.406-1.406 5.578 5.578 5.578-5.578z"></path>
210</svg>
211</span>
212</button></div></div></div></header><div
213id=content class=site-content><div
214class=corp-container><div
215id=primary class=content-area><main
216id=main class=site-main><article
217id=post-4928 class="post-4928 post type-post status-publish format-standard has-post-thumbnail hentry category-nodejs"><div
218class=entry-thumbnail>
219<img
220fetchpriority=high width=1124 height=502 src=https://www.coding-dude.com/wp/wp-content/uploads/2026/07/localhost-to-cloud.png class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="Localhost to cloud" decoding=async srcset="https://www.coding-dude.com/wp/wp-content/uploads/2026/07/localhost-to-cloud.png 1124w, https://www.coding-dude.com/wp/wp-content/uploads/2026/07/localhost-to-cloud-300x134.png 300w, https://www.coding-dude.com/wp/wp-content/uploads/2026/07/localhost-to-cloud-1024x457.png 1024w, https://www.coding-dude.com/wp/wp-content/uploads/2026/07/localhost-to-cloud-768x343.png 768w" sizes="(max-width: 1124px) 100vw, 1124px"></div><div
221class=corp-content-wrapper><header
222class=entry-header><h1 class="entry-title">Node.js Production Apps: From Localhost to Cloud Scaling</h1><div
223class=entry-meta>
224<span
225class=entry-date><time
226class=published datetime=2026-07-21T19:21:47+03:00>July 21, 2026</time><time
227class=updated datetime=2026-09-17T07:40:33+03:00>September 17, 2026</time></span><span
228class=entry-category><a
229href=https://www.coding-dude.com/wp/category/nodejs/ rel="category tag">NodeJS</a></span><span
230class=comments-link><a
231href=https://www.coding-dude.com/wp/nodejs/nodejs-production-apps-from-localhost-to-cloud-scaling/#respond>Leave a comment</a></span></div></header><div
232class=entry-content><div
233class=9db0862b9cf2e44f8d962262c5a80491 data-index=1 style="float: none; margin:10px 0 10px 0; text-align:center;"> 
233<script><!--
234google_ad_client = "ca-pub-3421619882899259";
235/* Coding Dude Medium Banner */
236google_ad_slot = "2969896483";
237google_ad_width = 468;
238google_ad_height = 60;
239//--></script>
239 
239<script
240src=//pagead2.googlesyndication.com/pagead/show_ads.js></script>
240 </div><p><img
241decoding=async class="aligncenter size-full wp-image-4930" src=https://www.coding-dude.com/wp/wp-content/uploads/2026/07/localhost-to-cloud.png alt="Localhost to cloud" width=1124 height=502 srcset="https://www.coding-dude.com/wp/wp-content/uploads/2026/07/localhost-to-cloud.png 1124w, https://www.coding-dude.com/wp/wp-content/uploads/2026/07/localhost-to-cloud-300x134.png 300w, https://www.coding-dude.com/wp/wp-content/uploads/2026/07/localhost-to-cloud-1024x457.png 1024w, https://www.coding-dude.com/wp/wp-content/uploads/2026/07/localhost-to-cloud-768x343.png 768w" sizes="(max-width: 1124px) 100vw, 1124px"></p><p
242class=ng-star-inserted><span
243class=ng-star-inserted>You run </span><span
244class="inline-code ng-star-inserted">npm run dev</span><span
245class=ng-star-inserted>, open </span><span
246class="inline-code ng-star-inserted">localhost:3000</span><span
247class=ng-star-inserted>, and everything works. Queries return in single-digit milliseconds, uploaded avatars save straight to </span><span
248class="inline-code ng-star-inserted">/tmp</span><span
249class=ng-star-inserted>, and in-memory session auth never drops.</span></p><p
250class=ng-star-inserted><span
251class=ng-star-inserted>Then you ship it to production.</span></p><p
252class=ng-star-inserted><span
253class=ng-star-inserted>Local environments hide the failure modes of distributed systems. There’s no network latency between your app and the database, no ephemeral disk wiping uploads on pod restarts, and no second server instance to break stateful sessions. Making a Node.js app survive real traffic means designing around those constraints before you deploy, not after.</span></p><h2 class="ng-star-inserted"><span
254class=ng-star-inserted>1. Externalize Configuration and Secrets</span></h2><p><img
255decoding=async class="aligncenter size-full wp-image-4936" src=https://www.coding-dude.com/wp/wp-content/uploads/2026/07/nodejs-application-keys-1.png alt="Externalize NodeJS Application Secret Keys" width=1408 height=768 srcset="https://www.coding-dude.com/wp/wp-content/uploads/2026/07/nodejs-application-keys-1.png 1408w, https://www.coding-dude.com/wp/wp-content/uploads/2026/07/nodejs-application-keys-1-300x164.png 300w, https://www.coding-dude.com/wp/wp-content/uploads/2026/07/nodejs-application-keys-1-1024x559.png 1024w, https://www.coding-dude.com/wp/wp-content/uploads/2026/07/nodejs-application-keys-1-768x419.png 768w" sizes="(max-width: 1408px) 100vw, 1408px"></p><p>&nbsp;</p><p
256class=ng-star-inserted><span
257class=ng-star-inserted>Hardcoding database credentials, API tokens, or port numbers in your source code guarantees two problems: you’ll eventually commit secrets to git, and you won’t be able to run different values between staging and production without changing code.</span></p><p
258class=ng-star-inserted><span
259class=ng-star-inserted>Read configuration from </span><span
260class="inline-code ng-star-inserted">process.env</span><span
261class=ng-star-inserted> instead. For local development, keep values in a </span><span
262class="inline-code ng-star-inserted">.env</span><span
263class=ng-star-inserted> file. You can load it using the </span><span
264class="inline-code ng-star-inserted">dotenv</span><span
265class=ng-star-inserted> package or Node’s native </span><span
266class="inline-code ng-star-inserted">&#8211;env-file=.env</span><span
267class=ng-star-inserted> flag (available in Node 20.6+). Always verify </span><span
268class="inline-code ng-star-inserted">.env</span><span
269class=ng-star-inserted> is listed in your </span><span
270class="inline-code ng-star-inserted">.gitignore</span><span
271class=ng-star-inserted>.</span></p><p
272class=ng-star-inserted><span
273class=ng-star-inserted>When deploying, pass these variables through your platform&#8217;s environment settings (such as Railway, Render, or AWS ECS task definitions) or pull them from a secrets store like AWS Secrets Manager or Vault. The application code should not care where it runs; it should only expect the required keys to be set at boot.</span></p><p>Where you store secrets depends on where the code runs. Serverless hosts like <a
274href=https://vercel.com/docs/environment-variables>Vercel</a> and <a
275href=hhttps://developers.cloudflare.com/workers/configuration/environment-variables/ >Cloudflare</a> Workers inject encrypted environment variables into the runtime at deploy time. In managed backends like <a
276href=https://supabase.com/docs/guides/functions/secrets>Supabase</a>, you scope credentials directly to specific Edge Functions. For CI/CD (such as GitHub Actions or <a
277href=https://docs.gitlab.com/ci/variables/ >GitLab</a>), use masked repository secrets so deployment tokens never leak into build logs.</p><h2 class="ng-star-inserted"><span
278class=ng-star-inserted>2. Keep Your Application Stateless</span></h2><p><img
279loading=lazy decoding=async class="aligncenter size-full wp-image-4937" src=https://www.coding-dude.com/wp/wp-content/uploads/2026/07/nodejs-stateless-app.png alt="NodeJS Stateless Apps" width=1408 height=768 srcset="https://www.coding-dude.com/wp/wp-content/uploads/2026/07/nodejs-stateless-app.png 1408w, https://www.coding-dude.com/wp/wp-content/uploads/2026/07/nodejs-stateless-app-300x164.png 300w, https://www.coding-dude.com/wp/wp-content/uploads/2026/07/nodejs-stateless-app-1024x559.png 1024w, https://www.coding-dude.com/wp/wp-content/uploads/2026/07/nodejs-stateless-app-768x419.png 768w" sizes="(max-width: 1408px) 100vw, 1408px"></p><p>On your laptop, your server instance is a permanent fixture. In the cloud, server instances are transient; they automatically scale up, spin down, restart, or relocate based on user demand and hardware health. If your application relies on local server memory to retain state, it will fail under production conditions.</p><p
280class=ng-star-inserted><span
281class=ng-star-inserted>In-memory sessions break the moment you run more than one process. If a user authenticates on instance A and the load balancer sends their next request to instance B, they get booted straight back to the login screen. Move session state out of application memory and into a shared store like Redis so every instance reads from the same source.</span></p><p
282class=ng-star-inserted><span
283class=ng-star-inserted>Local file uploads fail for the same reason. Writing files to </span><span
284class="inline-code ng-star-inserted">/uploads</span><span
285class=ng-star-inserted>
285 works on your laptop, but containers are ephemeral: when a pod restarts, deploys, or scales down, everything on its local filesystem is wiped. Stream uploads directly to an object store like AWS S3 or Cloudflare R2 instead of letting files touch the local disk.</span></p><h2 class="ng-star-inserted"><span
286class=ng-star-inserted>3. Tune Database Connections for Distributed Networks</span></h2><p><img
287loading=lazy decoding=async class="aligncenter size-full wp-image-4931" src=https://www.coding-dude.com/wp/wp-content/uploads/2026/07/nodejs-database-connection-tuning.png alt="NodeJS Database Tuning" width=913 height=605 srcset="https://www.coding-dude.com/wp/wp-content/uploads/2026/07/nodejs-database-connection-tuning.png 913w, https://www.coding-dude.com/wp/wp-content/uploads/2026/07/nodejs-database-connection-tuning-300x199.png 300w, https://www.coding-dude.com/wp/wp-content/uploads/2026/07/nodejs-database-connection-tuning-768x509.png 768w" sizes="(max-width: 913px) 100vw, 913px"></p><p
288class=ng-star-inserted><span
289class=ng-star-inserted>When your database lives on a separate managed cloud network rather than <code>localhost</code>, network latency becomes a factor you must actively manage. Because Node.js operates on a single-threaded event loop, unoptimized data layers can quickly degrade your application&#8217;s responsiveness.</span></p><p
290class=ng-star-inserted><span
291class=ng-star-inserted>Instead of opening and closing a new database connection for every incoming HTTP request, configure connection pooling using ORMs like Prisma, Sequelize, or Mongoose (these work similar to <a
292href=https://www.coding-dude.com/wp/category/hibernate/ >Hibernate</a> in case you&#8217;re more familiar with Java apps). Connection pools maintain a warm cache of open database connections that can be reused instantly, preventing your database from dropping requests during traffic spikes. You should also implement automatic retry logic so brief, temporary network hiccups do not crash your entire backend process.</span></p><p>These are all important things to keep in mind for the database layer of your stack as well as applying various performance techniques (like for example <a
293href=https://www.coding-dude.com/wp/databases/creating-mysql-materialized-views/ >materialized views</a>) to get the best performance out of your database.</p><h2 class="ng-star-inserted"><span
294class=ng-star-inserted>4. Upgrade Your Logging Infrastructure</span></h2><p
295class=ng-star-inserted><span
296class=ng-star-inserted>Relying on </span><code><span
297class="inline-code ng-star-inserted">console.log()</span></code><span
298class=ng-star-inserted> is perfectly fine for tracking down bugs on your local machine, but it is completely useless in a live distributed environment. Local console outputs are ephemeral and disappear the moment a cloud container resets.</span></p><p
299class=ng-star-inserted><span
300class=ng-star-inserted>Switch to a structured logging framework like <a
301href=https://github.com/winstonjs/winston>Winston</a> or <a
302href=https://github.com/trentm/node-bunyan>Bunyan</a>. These libraries format your logs into standard JSON objects, making them highly machine-readable and easy to parse. From there, you can pipe your logs to centralized monitoring services like <strong>Datadog</strong>, <strong>Loggly</strong>, or cloud-native aggregators. This approach gives you deep visibility into system health, allowing you to troubleshoot errors without manually hunting through raw text files across multiple virtual servers.</span></p><h2 class="ng-star-inserted"><span
303class=ng-star-inserted>5. Standardize Your Deployment Pipeline</span></h2><p
304class=ng-star-inserted><span
305class=ng-star-inserted>To minimize the structural gap between your development machine and your production environment, consider containerizing your application with Docker. A Dockerfile packages your exact Node.js runtime version, system dependencies, and application code into an unchangeable image, ensuring your app runs identically no matter where it is hosted.</span></p><div
306class=9db0862b9cf2e44f8d962262c5a80491 data-index=2 style="float: none; margin:10px 0 10px 0; text-align:center;"> 
306<script async src=//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js></script>
306 
307<ins
308class=adsbygoogle
309style=display:block
310data-ad-client=ca-pub-3421619882899259
311data-ad-slot=9789071689
312data-ad-format=auto></ins> 
312<script>(adsbygoogle=window.adsbygoogle||[]).push({});</script>
312 </div><p
313class=ng-star-inserted><span
314class=ng-star-inserted>When selecting a cloud architecture, match the tooling to the actual scale of your project. For smaller personal projects, pushing to platforms like Vercel or Heroku is easy. However, if you are moving an enterprise-level legacy application, it is often best to rely on professional <a
315href=https://www.emergentsoftware.net/resources/insights/cloud-migration-techniques-what-is-lift-and-shift/ >cloud migration services</a> to ensure secure data transfer and zero downtime.</span></p><blockquote><h2 class="ng-star-inserted"><span
316class=ng-star-inserted>Conclusion</span></h2><p
317class=ng-star-inserted><span
318class=ng-star-inserted>Decoupling your Node.js application from local resources takes upfront planning, but it makes scaling manageable. By externalizing configurations, moving to a stateless model, pooling database connections, and standardizing logs, you build a foundation that can scale smoothly. Run through these five steps to ensure your codebase is production-ready.</span></p></blockquote><p><em>Credits: All images made with <a
319href=https://www.mockofun.com/ >MockoFun</a></em></p><h3 class="ng-star-inserted"><span
320class=ng-star-inserted>Frequently Asked Questions</span></h3><p
321class=ng-star-inserted><strong><span
322class=ng-star-inserted>Q: Why can&#8217;t I deploy my localhost Node.js setup directly to the cloud?</span></strong></p><p
323class=ng-star-inserted><span
324class=ng-star-inserted>Localhost is a single, predictable machine with zero latency and permanent memory. The cloud is a distributed network of transient servers that spin up, shut down, and restart automatically. Code written for localhost assumes permanent local resources; cloud code must expect network latency and server restarts.</span></p><p
325class=ng-star-inserted><strong
326class=ng-star-inserted><span
327class=ng-star-inserted>Q: How should I manage API keys and database credentials in production?</span></strong><br
328class=ng-star-inserted><span
329class=ng-star-inserted>Never commit credentials to git. Use a </span><span
330class="inline-code ng-star-inserted">.env</span><span
331class=ng-star-inserted> file for local development (and add </span><span
332class="inline-code ng-star-inserted">.env</span><span
333class=ng-star-inserted> to </span><span
334class="inline-code ng-star-inserted">.gitignore</span><span
335class=ng-star-inserted>). In production, inject secrets through your platform&#8217;s dashboard, CI/CD environment variables, or a dedicated manager like AWS Secrets Manager or HashiCorp Vault.</span></p><p
336class=ng-star-inserted><strong
337class=ng-star-inserted><span
338class=ng-star-inserted>Q: What does it mean to make a Node.js app &#8220;stateless&#8221;?</span></strong><br
339class=ng-star-inserted><span
340class=ng-star-inserted>It means no single server instance holds unique state required to handle the next request. If an instance restarts or an autoscaler kills it, no user data is lost. Put session state in Redis and user file uploads into S3 or equivalent object storage.</span></p><p
341class=ng-star-inserted><strong
342class=ng-star-inserted><span
343class=ng-star-inserted>Q: How do I handle database network latency in the cloud?</span></strong><br
344class=ng-star-inserted><span
345class=ng-star-inserted>Colocate your database in the same cloud region and VPC as your application servers. To eliminate the overhead of opening a new TCP handshake on every request, use connection pooling (built into drivers like </span><span
346class="inline-code ng-star-inserted">pg</span><span
347class=ng-star-inserted> and ORMs like Prisma) to reuse open sockets across queries.</span></p><p
348class=ng-star-inserted><strong
349class=ng-star-inserted><span
350class=ng-star-inserted>Q: Why should I stop using </span><span
351class="inline-code ng-star-inserted">console.log()</span><span
352class=ng-star-inserted> in production?</span></strong><br
353class=ng-star-inserted><span
354class="inline-code ng-star-inserted">console.log()</span><span
355class=ng-star-inserted> prints plain text to </span><span
356class="inline-code ng-star-inserted">stdout</span><span
357class=ng-star-inserted> with no log levels, no timestamps, and no metadata. When you are processing thousands of requests across multiple instances, searching through flat strings is nearly impossible. Use a fast structured logger like Pino. It outputs single-line JSON with timestamps and log levels, making your logs filterable in tools like Datadog, Grafana Loki, or CloudWatch.</span></p><p
358class=ng-star-inserted><strong
359class=ng-star-inserted><span
360class=ng-star-inserted>Q: Do I need Docker to run Node.js in the cloud?</span></strong><br
361class=ng-star-inserted><span
362class=ng-star-inserted>
362Not if you deploy to a managed platform like Vercel, Railway, or AWS Lambda, which package your runtime automatically. But if you run on virtual machines, ECS, or Kubernetes, Docker is the safest choice. It bundles your specific Node.js version, system dependencies, and build artifacts so your staging and production environments run the exact same binary image.</span></p><p>
362<script type=application/ld+json>{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"Why can't I deploy my localhost Node.js setup directly to the cloud?","acceptedAnswer":{"@type":"Answer","text":"Localhost is a single, predictable machine with zero latency and permanent memory. The cloud is a distributed network of transient servers that spin up, shut down, and restart automatically. Code written for localhost assumes permanent local resources; cloud code must expect network latency and server restarts."}},{"@type":"Question","name":"How should I manage API keys and database credentials in production?","acceptedAnswer":{"@type":"Answer","text":"Never commit credentials to git. Use a .env file for local development (and add .env to .gitignore). In production, inject secrets through your platform's dashboard, CI/CD environment variables, or a dedicated manager like AWS Secrets Manager or HashiCorp Vault."}},{"@type":"Question","name":"What does it mean to make a Node.js app \"stateless\"?","acceptedA
362nswer":{"@type":"Answer","text":"It means no single server instance holds unique state required to handle the next request. If an instance restarts or an autoscaler kills it, no user data is lost. Put session state in Redis and user file uploads into S3 or equivalent object storage."}},{"@type":"Question","name":"How do I handle database network latency in the cloud?","acceptedAnswer":{"@type":"Answer","text":"Colocate your database in the same cloud region and VPC as your application servers. To eliminate the overhead of opening a new TCP handshake on every request, use connection pooling (built into drivers like pg and ORMs like Prisma) to reuse open sockets across queries."}},{"@type":"Question","name":"Why should I stop using console.log() in production?","acceptedAnswer":{"@type":"Answer","text":"console.log() prints plain text to stdout with no log levels, no timestamps, and no metadata. When you are processing thousands of requests across multiple instances, searching through flat strings is nearly impossible. Use a fast structured logger like Pino. It outputs single-line JSON with timestamps and log levels, making your logs filterable in tools like Datadog, Grafana Loki, or CloudWatch."}},{"@type":"Question","name":"Do I need Docker to run Node.js in the cloud?","acceptedA
362nswer":{"@type":"Answer","text":"Not if you deploy to a managed platform like Vercel, Railway, or AWS Lambda, which package your runtime automatically. But if you run on virtual machines, ECS, or Kubernetes, Docker is the safest choice. It bundles your specific Node.js version, system dependencies, and build artifacts so your staging and production environments run the exact same binary image."}}]}</script>
362</p><div
363style="font-size: 0px; height: 0px; line-height: 0px; margin: 0; padding: 0; clear: both;"></div><div
364class=social-likes data-title="Node.js Production Apps: From Localhost to Cloud Scaling" data-url=https://www.coding-dude.com/wp/nodejs/nodejs-production-apps-from-localhost-to-cloud-scaling/ data-counters=yes data-zeroes=yes><div
365class=facebook title="Share link on Facebook">Facebook</div><div
366class=twitter data-via=codingdudecom title="Share link on Twitter">Twitter</div><div
367class=linkedin title="Share link on LinkedIn">LinkedIn</div></div><form
368style="display: none;" class=sociallikes-livejournal-form></form></div></div></article><nav
369class="navigation post-navigation"><h2 class="screen-reader-text">Post navigation</h2><div
370class=nav-links><div
371class=nav-previous>
372<a
373href=https://www.coding-dude.com/wp/web-design/flutter-companies/ rel=prev> <img
374width=150 height=150 src=https://www.coding-dude.com/wp/wp-content/uploads/2026/07/design-problems-150x150.jpg class="attachment-thumbnail size-thumbnail wp-post-image" alt decoding=async srcset="https://www.coding-dude.com/wp/wp-content/uploads/2026/07/design-problems-150x150.jpg 150w, https://www.coding-dude.com/wp/wp-content/uploads/2026/07/design-problems-500x500.jpg 500w" sizes="(max-width: 150px) 100vw, 150px"><div
375class=nav-innner><span>Previous Post</span><div>Flutter Companies</div></div></a></div><div
376class=nav-next>
377<a
378href=https://www.coding-dude.com/wp/javascript/mouse-trail-effect/ rel=next><div
379class=nav-innner><span>Next Post</span><div>Emoji Mouse Trail Effect</div></div><img
380width=150 height=150 src=https://www.coding-dude.com/wp/wp-content/uploads/2026/08/emoji-mouse-trail-effect-javascript-light-150x150.webp class="attachment-thumbnail size-thumbnail wp-post-image" alt="Clean schematic illustration showing a computer mouse cursor leaving a glowing trail of emojis that changes from slow turtles to fast rockets and fire." decoding=async srcset="https://www.coding-dude.com/wp/wp-content/uploads/2026/08/emoji-mouse-trail-effect-javascript-light-150x150.webp 150w, https://www.coding-dude.com/wp/wp-content/uploads/2026/08/emoji-mouse-trail-effect-javascript-light-500x500.webp 500w" sizes="(max-width: 150px) 100vw, 150px"> </a></div></div></nav><div
381class=author-box><div
382class=author-avatar>
383<a
384href=https://www.coding-dude.com/wp/author/inegoita/ >
385<img
386alt src='https://secure.gravatar.com/avatar/d51d5d54d4c51f0a7bfe39333bd98cfc5245ab49433be692fce26b741c08181e?s=200&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/d51d5d54d4c51f0a7bfe39333bd98cfc5245ab49433be692fce26b741c08181e?s=400&#038;d=mm&#038;r=g 2x' class='avatar avatar-200 photo' height=200 width=200 decoding=async>		</a></div><div
387class=author-description><h3>John Negoita</h3>
388<span
389class=author-posts>
390<a
391href=https://www.coding-dude.com/wp/author/inegoita/ >
392View posts by John Negoita	</a>
393</span><div>I'm a Java programmer, been into programming since 1999 and having tons of fun with it.</div></div></div><div
394class=related-posts-section><h3 class="related-posts">Related Posts</h3><ol>
395<li>
396<a
397href=https://www.coding-dude.com/wp/nodejs/nodejs-frameworks-2018-sailsjs-meteor-nestjs-krakenjs/ rel=bookmark title="Quick Look At NodeJS Frameworks Available In 2018: SailsJS, Meteor, NestJS, KrakenJS And More">
398<img
399width=640 height=315 src=https://www.coding-dude.com/wp/wp-content/uploads/2018/03/nodejs-frameworks.png class="attachment-siteorigin-corp-720x480-crop size-siteorigin-corp-720x480-crop wp-post-image" alt="nodejs frameworks" decoding=async srcset="https://www.coding-dude.com/wp/wp-content/uploads/2018/03/nodejs-frameworks.png 640w, https://www.coding-dude.com/wp/wp-content/uploads/2018/03/nodejs-frameworks-300x148.png 300w" sizes="(max-width: 640px) 100vw, 640px"><div
400class=corp-content-wrapper><h3 class="related-post-title">Quick Look At NodeJS Frameworks Available In 2018: SailsJS, Meteor, NestJS, KrakenJS And More</h3><p
401class=related-post-date>March 2, 2018</p></div>
402</a>
403</li>
404<li>
405<a
406href=https://www.coding-dude.com/wp/nodejs/preparing-your-sails-js-application-for-production/ rel=bookmark title="Preparing your Sails JS application for production">
407<img
408width=400 height=400 src=https://www.coding-dude.com/wp/wp-content/uploads/2017/02/sails-js-production-mode.png class="attachment-siteorigin-corp-720x480-crop size-siteorigin-corp-720x480-crop wp-post-image" alt="sails js production mode" decoding=async srcset="https://www.coding-dude.com/wp/wp-content/uploads/2017/02/sails-js-production-mode.png 400w, https://www.coding-dude.com/wp/wp-content/uploads/2017/02/sails-js-production-mode-150x150.png 150w, https://www.coding-dude.com/wp/wp-content/uploads/2017/02/sails-js-production-mode-300x300.png 300w" sizes="(max-width: 400px) 100v
408w, 400px"><div
409class=corp-content-wrapper><h3 class="related-post-title">Preparing your Sails JS application for production</h3><p
410class=related-post-date>February 15, 2017</p></div>
411</a>
412</li></ol></div><div
413id=comments class=comments-area><div
414id=respond class=comment-respond><h3 id="reply-title" class="comment-reply-title">Leave a Reply <small><a
415rel=nofollow id=cancel-comment-reply-link href=/wp/nodejs/nodejs-production-apps-from-localhost-to-cloud-scaling/#respond style=display:none;>Cancel reply</a></small></h3><form
416action=https://www.coding-dude.com/wp/wp-comments-post.php method=post id=commentform class=comment-form><p
417class=comment-notes><span
418id=email-notes>Your email address will not be published.</span> <span
419class=required-field-message>Required fields are marked <span
420class=required>*</span></span></p><p
421class=comment-form-comment><label
422for=comment>Comment <span
423class=required>*</span></label><textarea id=comment name=comment cols=45 rows=8 maxlength=65525 required></textarea></p><p
424class=comment-form-author><label
425for=author>Name <span
426class=required>*</span></label> <input
427id=author name=author type=text value size=30 maxlength=245 autocomplete=name required></p><p
428class=comment-form-email><label
429for=email>Email <span
430class=required>*</span></label> <input
431id=email name=email type=email value size=30 maxlength=100 aria-describedby=email-notes autocomplete=email required></p><p
432class=comment-form-url><label
433for=url>Website</label> <input
434id=url name=url type=url value size=30 maxlength=200 autocomplete=url></p><p
435class=comment-form-cookies-consent><input
436id=wp-comment-cookies-consent name=wp-comment-cookies-consent type=checkbox value=yes> <label
437for=wp-comment-cookies-consent>Save my name, email, and website in this browser for the next time I comment.</label></p><p
438class=form-submit><input
439name=submit type=submit id=submit class=submit value="Post Comment"> <input
440type=hidden name=comment_post_ID value=4928 id=comment_post_ID>
441<input
442type=hidden name=comment_parent id=comment_parent value=0></p><p
443style="display: none;"><input
444type=hidden id=akismet_comment_nonce name=akismet_comment_nonce value=f9e016cabd></p><p
445style="display: none !important;" class=akismet-fields-container data-prefix=ak_><label>&#916;<textarea name=ak_hp_textarea cols=45 rows=8 maxlength=100></textarea></label><input
446type=hidden id=ak_js_1 name=ak_js value=147>
446<script>document.getElementById("ak_js_1").setAttribute("value",(new Date()).getTime());</script>
446 </p></form></div></div></main></div><aside
447id=secondary class=widget-area><aside
448id=scfw-3 class="widget scfw"><h2 class="widget-title">Let&#039;s stay in touch</h2><ul
449class=scfw_32px style=list-style:none;margin:0;padding:0;><li><a
450href=https://twitter.com/codingdudecom title="Follow codingdudecom on Twitter" target=_blank><img
451src=https://www.coding-dude.com/wp/wp-content/plugins/subscribe-connect-follow-widget/images/32px/twitter.png alt=Twitter height=32px width=32px></a></li><li><a
452href=https://github.com/codingdudecom title="codingdudecom on GitHub" target=_blank><img
453src=https://www.coding-dude.com/wp/wp-content/plugins/subscribe-connect-follow-widget/images/32px/github.png alt=GitHub height=32px width=32px></a></li><li><a
454href=https://www.coding-dude.com/wp/feed/ title="Subscribe to RSS Feed" target=_blank><img
455src=https://www.coding-dude.com/wp/wp-content/plugins/subscribe-connect-follow-widget/images/32px/rss.png alt="RSS Feed" height=32px width=32px></a></li><li><a
456href=https://www.facebook.com/codingdude title="Connect on Facebook" target=_blank><img
457src=https://www.coding-dude.com/wp/wp-content/plugins/subscribe-connect-follow-widget/images/32px/facebook.png alt=Facebook height=32px width=32px></a></li></ul></aside><aside
458id=search-4 class="widget widget_search"><form
459method=get class=search-form action=https://www.coding-dude.com/wp/ >
460<input
461type=search name=s aria-label="Search for" placeholder=Search value>
462<button
463type=submit aria-label=Search>
464<svg
465version=1.1 xmlns=http://www.w3.org/2000/svg width=26 height=28 viewB
465ox="0 0 26 28">
466<path
467d="M18 13c0-3.859-3.141-7-7-7s-7 3.141-7 7 3.141 7 7 7 7-3.141 7-7zM26 26c0 1.094-0.906 2-2 2-0.531 0-1.047-0.219-1.406-0.594l-5.359-5.344c-1.828 1.266-4.016 1.937-6.234 1.937-6.078 0-11-4.922-11-11s4.922-11 11-11 11 4.922 11 11c0 2.219-0.672 4.406-1.937 6.234l5.359 5.359c0.359 0.359 0.578 0.875 0.578 1.406z"></path>
468</svg>
469</button></form></aside><aside
470id=custom_html-2 class="widget_text widget widget_custom_html"><h2 class="widget-title">Useful Links</h2><div
471class="textwidget custom-html-widget"><ul>
472<li><a
473href=https://www.psd-dude.com>Photoshop Tutorials</a></li>
474<li><a
475href=https://www.photoshopsupply.com>Free Photoshop Resources</a></li>
476<li><a
477href=https://www.textures4photoshop.com>Free Textures</a></li>
478<li><a
479href=https://github.com/codingdudecom>My GitHub</a></li></ul><h2>Cool Articles</h2>
480<a
481href=https://www.psd-dude.com/tutorials/pop-art-photoshop.aspx><img
482src=https://www.coding-dude.com/wp/wp-content/uploads/2020/08/pop-art-photoshop-tutorial-300x169.jpg alt="Pop Art Photoshop"></a><br>
483<strong><u><a
484href=https://www.psd-dude.com/tutorials/pop-art-photoshop.aspx>Pop Art Photoshop Tutorial</a></u></strong></div></aside><aside
485id=text-5 class="widget widget_text"><div
486class=textwidget><p>
486<script async src=//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js></script>
486<br>
487<br>
488<ins
489class=adsbygoogle
490style=display:inline-block;width:300px;height:600px
491data-ad-client=ca-pub-3421619882899259
492data-ad-slot=8157515874></ins><br> 
492<script>(adsbygoogle=window.adsbygoogle||[]).push({});</script>
492</p></div></aside></aside></div></div><footer
493id=colophon class=site-footer><div
494class=corp-container><div
495class="widgets widgets-3" aria-label="Footer Widgets"><aside
496id=text-4 class="widget widget_text"><div
497class=textwidget><div
498class="newsletter newsletter-subscription"><table
499cellspacing=0 cellpadding=3 border=0 width=100% style="margin-bottom:48px;display: block;"><tbody><tr><td
500style=text-align:center><h3>Newsletter subscription</h3><p
501style="    margin: 12px 48px;font-size: 18px;line-height: 1.5em;color: #777;text-align: center;">Updates on web development, web design, mobile app development and tech news. You will get an email when new content is published and you can unsubscribe at any time.</p><p
502style=text-align:center;><div
503class="tnp tnp-subscription "><form
504method=post action="https://www.coding-dude.com/wp/wp-admin/admin-ajax.php?action=tnp&amp;na=s">
505<input
506type=hidden name=nlang value></p><div
507class="tnp-field tnp-field-email"><label
508for=tnp-1>Email</label><br>
509<input
510class=tnp-email type=email name=ne id=tnp-1 value placeholder required></div><div
511class="tnp-field tnp-field-button" style="text-align: left"><input
512class=tnp-submit type=submit value=Subscribe style></div></form></div></td></tr></tbody></table></div><style>.newsletter.newsletter-subscription
513form{display:flex}.newsletter.newsletter-subscription .tnp-field-email{flex:1}.newsletter.newsletter-subscription .tnp-email{font-size:18px;font-weight:bold;padding:12px;border-color:#B5CDCC;color:#959595}.newsletter.newsletter-subscription .tnp-field
514label{text-align:left;position:absolute;margin-top:-2em}.newsletter.newsletter-subscription .tnp-submit{font-size:18px;padding:12px;background-image:none;background-color:#61CF81!important;font-weight:bold;margin-left:4px;border:1px
515solid #61CF81;color:#eee}</style></div></aside><aside
516id=custom_html-3 class="widget_text widget widget_custom_html"><div
517class="textwidget custom-html-widget"></div></aside><aside
518id=tag_cloud-3 class="widget widget_tag_cloud"><h2 class="widget-title">Tags</h2><div
519class=tagcloud><a
520href=https://www.coding-dude.com/wp/tag/6-0-x/ class="tag-cloud-link tag-link-293 tag-link-position-1" style="font-size: 12px;">6.0.x</a>
521<a
522href=https://www.coding-dude.com/wp/tag/advanced/ class="tag-cloud-link tag-link-22 tag-link-position-2" style="font-size: 12px;">advanced</a>
523<a
524href=https://www.coding-dude.com/wp/tag/android-en/ class="tag-cloud-link tag-link-171 tag-link-position-3" style="font-size: 12px;">android</a>
525<a
526href=https://www.coding-dude.com/wp/tag/canvas/ class="tag-cloud-link tag-link-75 tag-link-position-4" style="font-size: 12px;">canvas</a>
527<a
528href=https://www.coding-dude.com/wp/tag/charts/ class="tag-cloud-link tag-link-50 tag-link-position-5" style="font-size: 12px;">charts</a>
529<a
530href=https://www.coding-dude.com/wp/tag/css/ class="tag-cloud-link tag-link-151 tag-link-position-6" style="font-size: 12px;">css</a>
531<a
532href=https://www.coding-dude.com/wp/tag/custom-html-tags/ class="tag-cloud-link tag-link-23 tag-link-position-7" style="font-size: 12px;">custom HTML tags</a>
533<a
534href=https://www.coding-dude.com/wp/tag/database/ class="tag-cloud-link tag-link-95 tag-link-position-8" style="font-size: 12px;">database</a>
535<a
536href=https://www.coding-dude.com/wp/tag/date/ class="tag-cloud-link tag-link-94 tag-link-position-9" style="font-size: 12px;">date</a>
537<a
538href=https://www.coding-dude.com/wp/tag/email/ class="tag-cloud-link tag-link-364 tag-link-position-10" style="font-size: 12px;">email</a>
539<a
540href=https://www.coding-dude.com/wp/tag/fonts/ class="tag-cloud-link tag-link-342 tag-link-position-11" style="font-size: 12px;">fonts</a>
541<a
542href=https://www.coding-dude.com/wp/tag/google-en/ class="tag-cloud-link tag-link-121 tag-link-position-12" style="font-size: 12px;">google</a>
543<a
544href=https://www.coding-dude.com/wp/tag/gradient/ class="tag-cloud-link tag-link-353 tag-link-position-13" style="font-size: 12px;">gradient</a>
545<a
546href=https://www.coding-dude.com/wp/tag/hql/ class="tag-cloud-link tag-link-38 tag-link-position-14" style="font-size: 12px;">hql</a>
547<a
548href=https://www.coding-dude.com/wp/tag/hql-current-time/ class="tag-cloud-link tag-link-107 tag-link-position-15" style="font-size: 12px;">hql current time</a>
549<a
550href=https://www.coding-dude.com/wp/tag/html5/ class="tag-cloud-link tag-link-74 tag-link-position-16" style="font-size: 12px;">html5</a>
551<a
552href=https://www.coding-dude.com/wp/tag/image-effects/ class="tag-cloud-link tag-link-347 tag-link-position-17" style="font-size: 12px;">image effects</a>
553<a
554href=https://www.coding-dude.com/wp/tag/ionic-en/ class="tag-cloud-link tag-link-127 tag-link-position-18" style="font-size: 12px;">ionic</a>
555<a
556href=https://www.coding-dude.com/wp/tag/ios-en/ class="tag-cloud-link tag-link-173 tag-link-position-19" style="font-size: 12px;">ios</a>
557<a
558href=https://www.coding-dude.com/wp/tag/iphone-en/ class="tag-cloud-link tag-link-243 tag-link-position-20" style="font-size: 12px;">iphone</a>
559<a
560href=https://www.coding-dude.com/wp/tag/java-2/ class="tag-cloud-link tag-link-40 tag-link-position-21" style="font-size: 12px;">java</a>
561<a
562href=https://www.coding-dude.com/wp/tag/java-en/ class="tag-cloud-link tag-link-129 tag-link-position-22" style="font-size: 12px;">java</a>
563<a
564href=https://www.coding-dude.com/wp/tag/javascript-2/ class="tag-cloud-link tag-link-21 tag-link-position-23" style="font-size: 12px;">javascript</a>
565<a
566href=https://www.coding-dude.com/wp/tag/jquery/ class="tag-cloud-link tag-link-73 tag-link-position-24" style="font-size: 12px;">jquery</a>
567<a
568href=https://www.coding-dude.com/wp/tag/js/ class="tag-cloud-link tag-link-77 tag-link-position-25" style="font-size: 12px;">js</a>
569<a
570href=https://www.coding-dude.com/wp/tag/liferay-en/ class="tag-cloud-link tag-link-255 tag-link-position-26" style="font-size: 12px;">liferay</a>
571<a
572href=https://www.coding-dude.com/wp/tag/liferay-2/ class="tag-cloud-link tag-link-11 tag-link-position-27" style="font-size: 12px;">liferay</a>
573<a
574href=https://www.coding-dude.com/wp/tag/long-shadow-jquery-plugin/ class="tag-cloud-link tag-link-20 tag-link-position-28" style="font-size: 12px;">long shadow jquery plugin</a>
575<a
576href=https://www.coding-dude.com/wp/tag/microsoft-en/ class="tag-cloud-link tag-link-225 tag-link-position-29" style="font-size: 12px;">microsoft</a>
577<a
578href=https://www.coding-dude.com/wp/tag/mobile/ class="tag-cloud-link tag-link-44 tag-link-position-30" style="font-size: 12px;">mobile</a>
579<a
580href=https://www.coding-dude.com/wp/tag/mobile-en/ class="tag-cloud-link tag-link-131 tag-link-position-31" style="font-size: 12px;">mobile</a>
581<a
582href=https://www.coding-dude.com/wp/tag/mysql/ class="tag-cloud-link tag-link-17 tag-link-position-32" style="font-size: 12px;">
582mysql</a>
583<a
584href=https://www.coding-dude.com/wp/tag/performance/ class="tag-cloud-link tag-link-99 tag-link-position-33" style="font-size: 12px;">performance</a>
585<a
586href=https://www.coding-dude.com/wp/tag/programming/ class="tag-cloud-link tag-link-372 tag-link-position-34" style="font-size: 12px;">programming</a>
587<a
588href=https://www.coding-dude.com/wp/tag/sailsjs-en/ class="tag-cloud-link tag-link-165 tag-link-position-35" style="font-size: 12px;">sailsjs</a>
589<a
590href=https://www.coding-dude.com/wp/tag/seo/ class="tag-cloud-link tag-link-69 tag-link-position-36" style="font-size: 12px;">seo</a>
591<a
592href=https://www.coding-dude.com/wp/tag/seo-google-ranking/ class="tag-cloud-link tag-link-105 tag-link-position-37" style="font-size: 12px;">seo google ranking</a>
593<a
594href=https://www.coding-dude.com/wp/tag/svg/ class="tag-cloud-link tag-link-348 tag-link-position-38" style="font-size: 12px;">svg</a>
595<a
596href=https://www.coding-dude.com/wp/tag/svg-filters/ class="tag-cloud-link tag-link-349 tag-link-position-39" style="font-size: 12px;">svg filters</a>
597<a
598href=https://www.coding-dude.com/wp/tag/text/ class="tag-cloud-link tag-link-354 tag-link-position-40" style="font-size: 12px;">text</a>
599<a
600href=https://www.coding-dude.com/wp/tag/tips-en/ class="tag-cloud-link tag-link-137 tag-link-position-41" style="font-size: 12px;">tips</a>
601<a
602href=https://www.coding-dude.com/wp/tag/tools-for-webmasters-en/ class="tag-cloud-link tag-link-269 tag-link-position-42" style="font-size: 12px;">tools for webmasters</a>
603<a
604href=https://www.coding-dude.com/wp/tag/triangle/ class="tag-cloud-link tag-link-351 tag-link-position-43" style="font-size: 12px;">triangle</a>
605<a
606href=https://www.coding-dude.com/wp/tag/web-design/ class="tag-cloud-link tag-link-332 tag-link-position-44" style="font-size: 12px;">web design</a>
607<a
608href=https://www.coding-dude.com/wp/tag/wordpress-2/ class="tag-cloud-link tag-link-35 tag-link-position-45" style="font-size: 12px;">wordpress</a></div></aside></div></div><div
609class=bottom-bar><div
610class=corp-container><div
611class=site-info>
612<span>2026 &copy; Coding Dude</span><span>Theme by <a
613href=https://siteorigin.com/ >SiteOrigin</a></span></div></div></div></footer></div><div
614id=scroll-to-top>
615<span
616class=screen-reader-text>Scroll to top</span>
617<svg
618version=1.1 xmlns=http://www.w3.org/2000/svg xmlns:xlink=http://www.w3.org/1999/xlink x=0px y=0px viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space=preserve>
619<path
620class=st0 d="M12,2c0.3,0,0.5,0.1,0.7,0.3l7,7C19.9,9.5,20,9.7,20,10c0,0.3-0.1,0.5-0.3,0.7S19.3,11,19,11
621c-0.3,0-0.5-0.1-0.7-0.3L13,5.4V21c0,0.3-0.1,0.5-0.3,0.7S12.3,22,12,22s-0.5-0.1-0.7-0.3S11,21.3,11,21V5.4l-5.3,5.3
622C5.5,10.9,5.3,11,5,11c-0.3,0-0.5-0.1-0.7-0.3C4.1,10.5,4,10.3,4,10c0-0.3,0.1-0.5,0.3-0.7l7-7C11.5,2.1,11.7,2,12,2z"/>
623</svg></div> 
623<script type=speculationrules>{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"\/wp\/*"},{"not":{"href_matches":["\/wp\/wp-*.php","\/wp\/wp-admin\/*","\/wp\/wp-content\/uploads\/*","\/wp\/wp-content\/*","\/wp\/wp-content\/plugins\/*","\/wp\/wp-content\/themes\/siteorigin-corp\/*","\/wp\/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}</script>
623 <div
624class="a2a_kit a2a_kit_size_32 a2a_floating_style a2a_default_style" style=bottom:0px;left:50%;transform:translateX(-50%);background-color:#ffffff><a
625class=a2a_button_facebook href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fwww.coding-dude.com%2Fwp%2Fwp%2Fnodejs%2Fnodejs-production-apps-from-localhost-to-cloud-scaling%2F&amp;linkname=Node.js%20Production%20Apps%3A%20From%20Localhost%20to%20Cloud%20Scaling%20-%20Coding%20Dude" title=Facebook rel="nofollow noopener" target=_blank></a><a
626class=a2a_button_reddit href="https://www.addtoany.com/add_to/reddit?linkurl=https%3A%2F%2Fwww.coding-dude.com%2Fwp%2Fwp%2Fnodejs%2Fnodejs-production-apps-from-localhost-to-cloud-scaling%2F&amp;linkname=Node.js%20Production%20Apps%3A%20From%20Localhost%20to%20Cloud%20Scaling%20-%20Coding%20Dude" title=Reddit rel="nofollow noopener" target=_blank></a><a
627class=a2a_button_tumblr href="https://www.addtoany.com/add_to/tumblr?linkurl=https%3A%2F%2Fwww.coding-dude.com%2Fwp%2Fwp%2Fnodejs%2Fnodejs-production-apps-from-localhost-to-cloud-scaling%2F&amp;linkname=Node.js%20Production%20Apps%3A%20From%20Localhost%20to%20Cloud%20Scaling%20-%20Coding%20Dude" title=Tumblr rel="nofollow noopener" target=_blank></a><a
628class=a2a_button_twitter href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fwww.co
628ding-dude.com%2Fwp%2Fwp%2Fnodejs%2Fnodejs-production-apps-from-localhost-to-cloud-scaling%2F&amp;linkname=Node.js%20Production%20Apps%3A%20From%20Localhost%20to%20Cloud%20Scaling%20-%20Coding%20Dude" title=Twitter rel="nofollow noopener" target=_blank></a><a
629class=a2a_button_email href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Fwww.coding-dude.com%2Fwp%2Fwp%2Fnodejs%2Fnodejs-production-apps-from-localhost-to-cloud-scaling%2F&amp;linkname=Node.js%20Production%20Apps%3A%20From%20Localhost%20to%20Cloud%20Scaling%20-%20Coding%20Dude" title=Email rel="nofollow noopener" target=_blank></a><a
630class="a2a_dd a2a_counter addtoany_share_save addtoany_share" href=https://www.addtoany.com/share></a></div>
vendor: 64 bytes, line 630
630 <script async src="https://www.googletagmanager.com/gtag/js?id=
630UA-42018846-1
vendor: 12 bytes, line 630
630"></script> 
630<script>
vendor: 119 bytes, lines 630-631
630window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}
631gtag('js',new Date());gtag('config','
631UA-42018846-1
vendor: 3 bytes, line 631
631');
631</script>
631 
631<script>(()=>{const lazyloadRunObserver=()=>{const lazyloadBackgrounds=document.querySelectorAll(`.e-con.e-parent:not(.e-lazyloaded)`);const lazyloadBackgroundObserver=new IntersectionObserver((entries)=>{entries.forEach((entry)=>{if(entry.isIntersecting){let lazyloadBackground=entry.target;if(lazyloadBackground){lazyloadBackground.classList.add('e-lazyloaded');}
632lazyloadBackgroundObserver.unobserve(entry.target);}});},{rootMargin:'200px 0px 200px 0px'});lazyloadBackgrounds.forEach((lazyloadBackground)=>{lazyloadBackgroundObserver.observe(lazyloadBackground);});};const events=['DOMContentLoaded','elementor/lazyload/observe',];events.forEach((event)=>{document.addEventListener(event,lazyloadRunObserver);});})();</script>
632 <link
633rel=stylesheet href=https://www.coding-dude.com/wp/wp-content/cache/minify/dd499.css media=all> 
633<script src="https://cpwebassets.codepen.io/assets/embed/ei.js?ver=1.0.1" id=codepen-embed-script-js></script>
633 
633<script src=https://www.coding-dude.com/wp/wp-content/cache/minify/75fdb.js defer></script>
633 
633<script id=mystickysidebar-js-extra>var mystickyside_name={"mystickyside_string":"#secondary","mystickyside_content_string":"","mystickyside_margin_top_string":null,"mystickyside_margin_bot_string":"0","mystickyside_update_sidebar_height_string":"","mystickyside_min_width_string":"0"};</script>
633 
633<script src=https://www.coding-dude.com/wp/wp-content/cache/minify/10ad5.js defer></script>
633 
633<script id=siteorigin-corp-script-js-extra>var siteoriginCorp={"collapse":"768","logoScale":"0.755","stickyOffset":"0"};</script>
633 
633<script src=https://www.coding-dude.com/wp/wp-content/cache/minify/193f9.js defer></script>
633 
633<script src=https://www.coding-dude.com/wp/wp-content/cache/minify/6c768.js async></script>
633 
633<script id=newsletter-js-extra>var newsletter_data={"action_url":"https:\/\/www.coding-dude.com\/wp\/wp-admin\/admin-ajax.php"};</script>
633 
633<script src=https://www.coding-dude.com/wp/wp-content/cache/minify/b4a36.js defer></script>
633 
633<script src=https://www.coding-dude.com/wp/wp-content/cache/minify/7db4b.js defer></script>
633 
633<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"d25d7daf09e14698940fd736adde0799","r":1,"spa":2}' crossorigin="anonymous"></script>
633
634</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.