{"componentChunkName":"component---src-templates-posts-js","path":"/videos","result":{"data":{"allContentfulPost":{"edges":[{"node":{"slug":"how-to-deploy-a-resilient-node-js-application-on-kubernetes-from-scratch","title":"How To Deploy a Resilient Node.js Application on Kubernetes From Scratch","image":{"file":{"url":"//images.ctfassets.net/xmu5vdhtphau/44TWUox1PIcIbFcVRUqVgv/18202864f4be6db2a4352e498e6629ca/maxresdefault__1_.jpg","fileName":"maxresdefault (1).jpg"}},"bodyContent":{"childMarkdownRemark":{"html":"<p>This post was first published in <a href=\"https://www.digitalocean.com/community/tech_talks/how-to-deploy-a-resilient-node-js-application-on-kubernetes-from-scratch\">Digital Ocean blog post</a>.</p>\n<hr>\n<p>You may have heard the buzz around Kubernetes and noticed that many companies have been rapidly adopting it. Due to its many components and vast ecosystem it can be quite confusing to find where the path starts to learn it.</p>\n<p>In this session, you will learn the basics of containers and Kubernetes. Step by step, we will go through the entire process of packaging a Node.js application into a Docker container image and then deploying it on Kubernetes. We will demonstrate scaling to multiple replicas for better performance. The end result will be a resilient and scalable Node.js deployment.</p>\n<p>You will leave this session with sufficient knowledge of containerization, Kubernetes basics, and the ability to deploy highly available, performant, and scalable Node.js applications on Kubernetes.</p>\n<h3>Resources</h3>\n<p>View the slides <a href=\"https://drive.google.com/file/d/1CatfIB5NIKSmXTkg2qW5KwGKToJVfwgd/view\">for this talk</a></p>\n<h2>Transcript of The Commands and Manifests Used</h2>\n<p>Be sure to follow along with the recording for an explanation and replace <code>kamaln7</code> with your own <a href=\"https://hub.docker.com/\">DockerHub</a> username.</p>\n<h2>Node App</h2>\n<ol>\n<li>Create an empty node package: npm init -y</li>\n<li>Install express as a dependency: npm install express</li>\n<li>index.js</li>\n</ol>\n<pre><code>const express = require('express')\nconst os = require('os')\n\nconst app = express()\napp.get('/', (req, res) => {\n        res.send(`Hi from ${os.hostname()}!`)\n})\n\nconst port = 3000\napp.listen(port, () => console.log(`listening on port ${port}`))\n</code></pre>\n<h2>Docker</h2>\n<ol>\n<li>Dockerfile</li>\n</ol>\n<pre><code>FROM node:13-alpine\n\nWORKDIR /app\n\nCOPY package.json package-lock.json ./\n\nRUN npm install --production\n\nCOPY . .\n\nEXPOSE 3000\n\nCMD node index.js\n</code></pre>\n<ol start=\"2\">\n<li>Build the image: <code>docker build -t kamaln7/node-hello-app .</code></li>\n<li>Edit <code>index.js</code> and replace the word <code>Hi</code> with <code>Hello</code>.</li>\n<li>Re-build the image and notice Docker re-using previous layers: <code>docker build -t kamaln7/node-hello-app .</code></li>\n<li>Run a container to test it: <code>docker run --rm -d -p 3000:3000 kamaln7/node-hello-app</code></li>\n<li>Look at the running containers: <code>docker ps</code></li>\n<li>Stop the container: <code>docker stop CONTAINER_ID</code></li>\n<li>Push the image to DockerHub: <code>docker push kamaln7/node-hello-app</code></li>\n</ol>\n<h2>Kubernetes</h2>\n<ol>\n<li>Get worker nodes: <code>kubectl get nodes</code></li>\n<li>Create a deployment: <code>kubectl create deployment --image kamaln7/node-hello-app node-app</code></li>\n<li>Scale up to 3 replicas: <code>kubectl scale deployment node-app --replicas 3</code></li>\n<li>Expose the deployment as a NodePort replica: <code>kubectl expose deployment node-app --port 3000</code></li>\n<li>Look at the newly created service (and the assigned port): <code>kubectl get services</code></li>\n<li>Grab the public IP of one of the worker nodes: <code>kubectl get nodes -o wide</code></li>\n<li>Browse to <code>IP:port</code> to test the service</li>\n<li>Edit the service: <code>kubectl edit service node-app</code></li>\n<li>Replace <code>port: 3000</code> with <code>port: 80</code></li>\n<li>Replace <code>type: NodePort</code> with <code>type: LoadBalancer</code></li>\n<li>Verify that the service was updated: <code>kubectl get service</code></li>\n<li>Run the above command every few seconds until you get the external IP address of the Load Balancer</li>\n<li>Browse to the IP of the Load Balancerhhuy</li>\n</ol>"}},"categories":[{"name":"Node.js","slug":"node-js"},{"name":"Containers","slug":"containers"}]}},{"node":{"slug":"webinar-the-end-of-monoliths-a-guide-to-backend-architecture-in-2020","title":"Webinar: The end of monoliths? A guide to backend architecture in 2020","image":{"file":{"url":"//images.ctfassets.net/xmu5vdhtphau/49RQOiTJCrILQmaTM9BZDT/b5a09b357e0702310032d2190818b1b5/maxresdefault.jpg","fileName":"maxresdefault.jpg"}},"bodyContent":{"childMarkdownRemark":{"html":"<p>You can’t build a stable backend without solid architecture. And without proper backend, you can’t develop a good application. But what does stable backend mean? How to keep up with all the architectural trends in an ever-changing, fast-paced reality of the modern development? 📈</p>\n<p>Is monolithic architecture already dead? Should you or your team focus on practicing the use of microservices? Is following the trends a good approach or should you rather lean on some thoroughly tested solutions? 🤔</p>\n<p>During our upcoming webinar, Adam Polak –  Head of Node.js Team at The Software House, will guide you through the current backend architecture trends and solutions, indicating the most important (but not always obvious) issues that you should pay attention to. Here’s the excerpt from the extensive agenda:</p>\n<ul>\n<li>analysis of some important elements of backend: architecture, infrastructure, environment, communication;</li>\n<li>monolithic architecture – still a good idea?</li>\n<li>modular monolith vs microservices;</li>\n<li>why the most of the services is still monolithic-based?</li>\n<li>what were the most significant changes in the architecture in the last few years?</li>\n<li>REST API, BFF, GraphQL and the communication;</li>\n<li>what does a stable backend mean in 2020?</li>\n</ul>\n<p>Subjects discussed during our event will be 100% based on real-life cases and experiences. Also, Adam will answer your questions during a Q&#x26;A session after the webinar. The whole event will last for approximately an hour.</p>"}},"categories":[{"name":"Node.js","slug":"node-js"},{"name":"How To","slug":"how-to"}]}},{"node":{"slug":"need-to-node-volume-68","title":"Need to Node – Volume 68","image":{"file":{"url":"//images.ctfassets.net/xmu5vdhtphau/1VFb7mEzU2R797phntgeEx/6ac3fa7b021718963eebb1cedfb8c2f4/Screen_Shot_2020-07-14_at_12.53.39_PM.png","fileName":"Screen Shot 2020-07-14 at 12.53.39 PM.png"}},"bodyContent":{"childMarkdownRemark":{"html":"<p>In this volume of Need to Node, you can find the latest news on Node.js, our announcement of Node.dev and some information about our Open JS presentation ‘Behind the Scenes of NodeSource Node.js Binary Distributions'.</p>\n<p>Need to Node is a weekly bulletin designed to keep you up-to-date with the latest news on the Node.js project, events and articles. You are always welcome to collaborate and participate. Please let us know if we missed a piece of content you think should be included!</p>\n<h2>What’s New in the Node.js Project</h2>\n<ul>\n<li><a href=\"https://nodejs.org/en/blog/release/v14.5.0/\">Node.js v.14.5 released</a> The most notable change is an update to Node’s V8 engine to version 8.3, which is primarily a performance and bug-fix upgrade and an initial experimental implementation of EventTarget which provides a DOM-style API for objects in general.</li>\n</ul>\n<h2>Awesome Articles, Links, and Resources</h2>\n<ul>\n<li><a href=\"https://node.dev/\">Announcing Node.dev</a>. Your latest Node.js content, news and updates in one place.</li>\n<li><a href=\"https://www.youtube.com/watch?v=1nYswjtEUvE&#x26;list=PLyspMSh4XhLP-mqulUMcaqTbLo-ZJxSX5&#x26;index=26&#x26;t=0s\">Behind the Scenes of NodeSource Node.js Binary Distributions</a> A high-level talk covering how Node.js binaries work and are released.</li>\n<li>The Hapi.js-project announced a change in its governance team, spelling a new chapter for the popular servicer-side framework Check out this <a href=\"https://github.com/hapijs/hapi/issues/4113\">issue</a> for further information on the project’s future and next steps.</li>\n<li>Don’t miss this <a href=\"https://medium.com/@erickwendel/node-v14-x-is-up-deep-diving-into-new-features-ace6dd89ac0b\">article</a> Creating an Application Performance Monitor Using Node 14 New and Experimental Features. By <a href=\"https://twitter.com/erickwendel_\">Erick Wendel</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=pOM86M1pGb4&#x26;list=PLP29wDx6QmW47oPsNBFNEi_SYTOLDJXqQ\">The Bits and Bytes of Binary</a> this series explores the basics of binaries; the low level number system that makes computers work. By <a href=\"https://www.youtube.com/channel/UC56l7uZA209tlPTVOJiJ8Tw\">Low Level JavaScript</a></li>\n<li><a href=\"https://github.com/lirantal/awesome-nodejs-security\">awesome-nodejs-security</a>. Check out this curated list of Node.js security resources by <a href=\"https://github.com/lirantal\">Liran Tal</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=PI5wz2pwXIg\">Ridiculous npm packages that I wish didn’t exist</a>, a video series on the most rediculous npm packages out there; including is-ten-thousdand, owoifyx, true, meaning-of-life and others. By <a href=\"https://www.youtube.com/channel/UCrUL8K81R4VBzm-KOYwrcxQ\">Engineer Man</a></li>\n</ul>\n<h2>One Last Thing...</h2>\n<p>If you find any Node.js or JavaScript related content over the next week (or beyond!), never hesitate to reach out to us on Twitter at <a href=\"https://twitter.com/nodesource\">@NodeSource</a> to share and get it included in Need to Node - our DMs are open if you don’t want to share publicly!</p>"}},"categories":[{"name":"Community","slug":"community"},{"name":"Need To Node","slug":"need-to-node"}]}},{"node":{"slug":"behind-the-scenes-of-node-js-distributions","title":"Behind the Scenes of Node.js Distributions","image":{"file":{"url":"//images.ctfassets.net/xmu5vdhtphau/2Gg9gojD25JeSrDCBUfWfV/065fbdcc26d9dd6b41c993d5a9d47cdf/Screen_Shot_2020-06-23_at_9.39.22_AM-min.png","fileName":"Screen_Shot_2020-06-23_at_9.39.22_AM-min.png"}},"bodyContent":{"childMarkdownRemark":{"html":"<p>If you are installing Node.js in Linux to use it in production, there is a big chance that you are\nusing NodeSource Node.js Binary Distributions. </p>\n<p>In this talk you can find the process in which NodeSource Node.js Binary Distributions is updated, how new versions are supported, the human and infrastructure process, and some limitations of maintaining the channel. Also and most importantly, how the community can get involved with this project.</p>"}},"categories":[{"name":"Node.js","slug":"node-js"},{"name":"Community","slug":"community"}]}},{"node":{"slug":"need-to-node-vol-67","title":"Need to Node vol. 67","image":{"file":{"url":"//images.ctfassets.net/xmu5vdhtphau/35sx50sOW4VhQo6S0WsM3w/14ce79dbe14b8592d9c564f502e65c9a/1-min.png","fileName":"1-min.png"}},"bodyContent":{"childMarkdownRemark":{"html":"<p>In this volume of Need to Node, you can find the latest news on Deno, a recording of our webinar ‘New and Exciting Features to Land in Node.js version 14’ and ‘JavaScript features to forget’.</p>\n<p>Need to Node is a weekly bulletin designed to keep you up-to-date with the latest news on the Node.js project, events and articles. You are always welcome to collaborate and participate. Please let us know if we missed a piece of content you think should be included!</p>\n<h2>What’s New in the Node.js Project</h2>\n<ul>\n<li><a href=\"https://twitter.com/NodeSource/status/1265656652818194434\">Node.js turns 11 years old!</a></li>\n<li>Webinar: <a href=\"https://vimeo.com/420783020\">New and Exciting Features to Land in Node.js version 14</a> - By <a href=\"https://twitter.com/s_gimeno\">Santiago Gimeno</a></li>\n</ul>\n<h2>Awesome Articles, Links, and Resources</h2>\n<ul>\n<li>\n<p><a href=\"https://deno.land/v1\">Deno 1.0 Released</a>. Some of the most important features include:</p>\n<ul>\n<li>First Class TypeScript Support without additional tooling</li>\n<li>Promises All The Way Down - When Node.js was created the concept of promises or async/await in JavaScript didn’t exist yet, but now and after a lot of work it is fully integrated. Deno was created taking promises into account from the beginning.</li>\n<li>Rust APIs - Deno is built in rust.</li>\n<li>Stability, npm-less, security-first, JavaScript runtime.\nFor some applications Deno may be a good choice today, for others not yet. It all depends on the requirements. </li>\n</ul>\n</li>\n<li><a href=\"https://devblogs.microsoft.com/typescript/announcing-typescript-3-9/#promise-improvements\">TypeScript 3.9 Released</a> including a variety of editor and performance improvements, also tweaks to inference and <code>Promise.all</code>.</li>\n<li><a href=\"https://javascriptweekly.com/link/88532/4cc248b770\">Second-guessing the modern web</a>. It is possible to solve things in a better way than single page applications? Find out in this article! By <a href=\"https://macwright.org/about/\">Tom MacWright</a></li>\n<li>JavaScript features to forget. New features arrive all the time, replacing and improving old ones. The introduction of <code>...args</code> in ES6 replaced the arguments object, we don’t use <code>document.write()</code> anymore or <code>join()</code> to concatenate strings and template literals are much better. Find out more <a href=\"https://davidflanagan.com/2020/05/12/javascript-to-forget.html\">here</a>!</li>\n<li><a href=\"https://codesource.io/build-a-rest-service-with-fastify/\">Build A REST Service With Fastify</a>. Fastify is a high-performance HTTP framework for Node.js. Fastify focuses on speed, and it’s inspired by ExpressJS and HapiJS. Check out this article to find out how to build a restful service using fastify. </li>\n<li><a href=\"https://www.martinmck.com/posts/es2020-everything-you-need-to-know/\">ES2020: Everything You Need to Know</a> there are very cool new features like: <code>String.prototype.matchAll</code>, <code>Dynamic import()</code>, <code>Promise.allSettled</code>, <code>Optional Chaining</code> among others. Check it out! </li>\n<li><a href=\"https://frontendmasters.com/courses/hardcore-js-v2/?utm_source=jsweekly&#x26;utm_medium=email&#x26;utm_campaign=javascriptv2\">Hardcore Functional Programming in JavaScript</a> - by <a href=\"https://twitter.com/drboolean\">Brian Lonsdorf</a></li>\n</ul>\n<h2>One Last Thing...</h2>\n<p>If you find any Node.js or JavaScript related content over the next week (or beyond!), never hesitate to reach out to us on Twitter at <a href=\"https://twitter.com/nodesource\">@NodeSource</a> to share and get it included in Need to Node - our DMs are open if you don’t want to share publicly!</p>"}},"categories":[{"name":"Community","slug":"community"},{"name":"Node.js","slug":"node-js"}]}},{"node":{"slug":"new-features-nodejs-version-14","title":"New and Exciting Features to Land in Node.js Version 14","image":{"file":{"url":"//images.ctfassets.net/xmu5vdhtphau/4HIwVhFjrKrBmds10NlfeW/4193d762cccd04afeef8b9baba8ce772/1-min.png","fileName":"1-min.png"}},"bodyContent":{"childMarkdownRemark":{"html":"<p>Node.js 14 has just been released. It comes with full of new features and enhancements. More importantly, it will be promoted to Long-Term Support in October, so now it's the moment to start testing our applications and try the new features to ensure a smooth transition.</p>\n<p>In this webinar we will be showing the most relevant of these new features.</p>"}},"categories":[{"name":"Node.js","slug":"node-js"}]}},{"node":{"slug":"need-to-node-volume-66","title":"Need to Node – Volume 66","image":{"file":{"url":"//images.ctfassets.net/xmu5vdhtphau/47M1ZCRvNDb4uYnCpN89QG/ec93803c06da2a34b1bc40514c107497/3-min.png","fileName":"3-min.png"}},"bodyContent":{"childMarkdownRemark":{"html":"<p>In this volume of Need to Node, you can find the latest news on Node.js’s version 14 Release, Diagnostics in Node.js and The Cost of JavaScript Frameworks</p>\n<p>Need to Node is a weekly bulletin designed to keep you up-to-date with the latest news on the Node.js project, events and articles. You are always welcome to collaborate and participate. Please let us know if we missed a piece of content you think should be included!</p>\n<h2>What’s New in the Node.js Project</h2>\n<ul>\n<li>\n<p><a href=\"https://medium.com/@nodejs/node-js-version-14-available-now-8170d384567e\">Node.js version 14 Released</a> — Woo-hoo it’s finally here! Node.js v.14 now becomes the current release line with it becoming a LTS (Long Term Support) release in October. It’s recommended to keep using Node.js version 12 for now. Some of the most exciting features include: </p>\n<ul>\n<li>Diagnostic Report goes Stable</li>\n<li>V8 upgraded to V8 8.1</li>\n<li>Experimental Async Local Storage API</li>\n<li>Improvements to Streams.</li>\n<li>Experimental WebAssembly System Interface (WASI) to support future WebAssembly use cases.</li>\n<li>Removal of Experimental Modules Warning (but it still is experimental).</li>\n</ul>\n</li>\n</ul>\n<h2>Awesome Articles, Links, and Resources</h2>\n<ul>\n<li><a href=\"https://nodesource.com/blog/diagnostics-in-NodeJS-2\">Diagnostics in Node.js Part 2</a>, useful techniques for diagnostics in Node.js - by <a href=\"https://twitter.com/lizparody23\">lizparody</a></li>\n<li><a href=\"https://vercel.com/blog/zeit-is-now-vercel\">ZEIT is now Vercel</a> This new identity aligns with their new focus — to provide the ultimate workflow for developing, previewing, and shipping Jamstack sites. They also raised $21M in Series A funding.</li>\n<li><a href=\"https://www.npmtrends.com/\">npm trends</a> a useful tool to compare package downloads counts over time. By <a href=\"https://twitter.com/johnmpotter\">John Potter</a></li>\n<li><a href=\"https://github.com/jesseduffield/lazynpm\">Lazy npm</a> A simple terminal UI for npm commands. By <a href=\"https://github.com/jesseduffield\">Jesse Duffield</a></li>\n<li>\n<p><a href=\"https://timkadlec.com/remembers/2020-04-21-the-cost-of-javascript-frameworks/\">The Cost of JavaScript Frameworks</a>. With JavaScript you end up paying a performance tax no less than four times:</p>\n<ul>\n<li>The cost of downloading the file on the network</li>\n<li>The cost of parsing and compiling the uncompressed file once downloaded</li>\n<li>The cost of executing the JavaScript</li>\n<li>The memory cost\nRead this blog post to find out more! By <a href=\"https://timkadlec.com/\">Tim Kadlec</a></li>\n</ul>\n</li>\n<li><a href=\"https://blog.bitsrc.io/recommended-github-integrations-for-2020-35042c71cb69\">Recommended GitHub Integrations for 2020</a> IDE integrations, GitHub bots, issue trackers and much more — to help you make the most out of GitHub. By <a href=\"https://twitter.com/deleteman123\">Fernando Doglio</a></li>\n<li><a href=\"https://levelup.gitconnected.com/8-basic-coding-conventions-every-developer-needs-to-practice-5846252146ec\">8 Basic Coding Conventions Every Developer Needs To Practice</a>. Including: spaces vs tabs, naming conventions and practice proper directory structure. By <a href=\"https://levelup.gitconnected.com/@annadayadev\">Ann Adaya</a></li>\n</ul>\n<h2>One Last Thing...</h2>\n<p>If you find any Node.js or JavaScript related content over the next week (or beyond!), never hesitate to reach out to us on Twitter at <a href=\"https://twitter.com/nodesource\">@NodeSource</a> to share and get it included in Need to Node - our DMs are open if you don’t want to share publicly!</p>"}},"categories":[{"name":"Community","slug":"community"},{"name":"Node.js","slug":"node-js"}]}}]},"contentfulHero":{"headLine":"Find the latest and most relevant news, talks, and webinars in the Node.js ecosystem","coverImage":{"file":{"url":"//images.ctfassets.net/xmu5vdhtphau/3cgmOaKTQ3Ib9QvyzEm6Yv/1b801885c841fbd7ff9a67cf14e128fa/video-min.jpg","fileName":"video-min.jpg"}}}},"pageContext":{"limit":7,"skip":0,"numPages":2,"currentPage":1,"type":"video","hero":"hero-videos","prevPath":"","nextPath":"/videos/page/2"}}}