Node you can run JS code server side It has non-blocking I/O operations (Asynchronous) It is event driven (Event Loop) Event Loop is single threaded
I/O operations It offloads operations to the System Kernel whenever possible Modern Kernels are multi-threaded and they can handle multiple operations in background When an operation completes, the Kernel tells Node so that the appropriate callback is added to the Poll Event Loop queue to be executed
in the world Currently Node counts more than twice modules than is next competitor (Java) Node.js has more than half million modules published More than 450 new packages are published everyday Number of modules Source: http://www.modulecounts.com
perfect platform to deal with all these components Node brings the accessibility and ubiquity of the web platform and of JavaScript to all these different areas You can use Node in a variety of different places among relatively small teams
Standard and ESLint to maintain your code quality with ease JSHint to help detecting errors and potential problems in your JavaScript code Stylus, LESS, ect. for better writing CSS
Cordova brings the entire Web platform to iOS, Android and Windows Phone using Node It is a Node tool chain that brings the entire Node ecosystem across all these different devices
the Web Platform and the entire Node ecosystem to Desktop Development It allows developers to build cross-platform (Mac OS, Linux and Windows ) Desktop applications using HTML, JavaScript and CSS
It always had a great Cloud story Every well-known Cloud Provider supports Node out of the box and have a pretty good Node support Example: Google App Engine, AWS Elastic Beanstalk, Heroku, etc.
moving into the Function as a Service (or Serverless) space Developers can build their applications out of these discrete functions Disclaimer !: these functions run on servers, but developers don’t have to worry about it
supported since the beginning (Functions can be written in Node) by Cloud vendors because Node is optimized to run in a single process, with a limited memory space, and it is great to handle a lot of I/O operations Node starts up quickly These are very important requirements to successfully running in these Cloud Function services Indeed, we need a really fast startup timing to be really efficient in a space with very limited resources Moore’s Law still making computers faster, but we are keeping optimizing resources using less and less of a slice of that computer to run our applications
! Starting in 2012 the Node ecosystem started to see a big rise in Robots People working at jQuery built a framework to build Robots in JS called “johnny-five” Over 75 developers contributed to the project
on their products Basically today, every new board that’s coming out as an integrated circuit for people’s IoT devices has first-class Node support IoT manufactures know that the best way to bring developers to their platform is to bring the entire Node ecosystem to their platform as well
build their applications today For example, Twilio for Text Messages, Mixpanel for Analytics, Google Speech for Speech Recognition, etc. Most of these API have Node support (SDK)
us package and ship our applications and everything it needs to execute into a standard format Docker containers are similar to VMs. Our apps run on what seems to be a dedicated hardware instance. Each container has its own virtualized Filesystem, Memory, Storage, CPU cycles, etc. Each container is completely isolated from the other containers running on the same machine
Operating System Kernel, not the hardware. Therefore containers must run Linux. Docker starts with a Linux Kernel that all containers use. Then it layers all the differences on top of the Kernel. Therefore containers do not run the entire operating system. This makes containers lean.
by saying what we we’re starting with, and then we describe only what’s different Packaging apps in Docker containers allows your application to run the same in all your environments: development, staging, production, etc.
of containerized applications Project started at Google to run billions of containers a week Kubernetes is great to run your app containers in production, because it can scale without requiring any extra Ops efforts It gives you freedom to run it anywhere, hybrid or public cloud Both Google Cloud Platform and Amazon Web Services also offer Kubernetes as a Service (Google Container Engine, Amazon Elastic Container Service) Managed K8S make it easy for you to run K8S in the cloud without needing to install and operate your own clusters
build Native apps with only JavaScript With React Native, you don't build a "mobile web app", an "HTML5 app", or a "hybrid app". You build a real mobile app that's indistinguishable from an app built using Objective-C or Java. React Native uses the same fundamental UI building blocks as regular iOS and Android apps. You just put those building blocks together using JavaScript and React.