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 » Feed" href=https://www.coding-dude.com/wp/feed/ ><link 32rel=alternate type=application/rss+xml title="Coding Dude » Comments Feed" href=https://www.coding-dude.com/wp/comments/feed/ ><link 33rel=alternate type=application/rss+xml title="Coding Dude » 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&ver=6.8.10#038;subset&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&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> </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">–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’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’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’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’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’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 “stateless”?</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&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/d51d5d54d4c51f0a7bfe39333bd98cfc5245ab49433be692fce26b741c08181e?s=400&d=mm&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>Δ<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'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&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 © 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&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&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&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&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&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.