Today we announce our collaboration with IBM on the Cloud Native JS project, which aims to provide best practices and tools to build and integrate enterprise-grade Cloud Native Node.jsNode.js is an asynchronous event-driven JavaScript runtime and is the most effective when building scalable network applications. Node.js is free of locks, so there's no chance to dead-lock any process. applications.
As a first step of contribution to the project, we released an article on CNJS’s blog written by Tamas Hodi, senior engineer of RisingStack.
In our latest article titled “How to Build and Deploy a Cloud Native Node.js App in 15 minutes” we show how you can turn a simple Hello World Node.js app into a Dockerized application running on KubernetesKubernetes (often abbreviated as K8s) offers a framework to run distributed systems efficiently. It's a platform that helps managing containerized workloads and services, and even takes care of scaling. Google open-sourced it in 2014. with all the best-practices applied – using the tools provided by CNJS in the process.
By the end of this tutorial, you will:
- Implement lifecycle management for a Node.js application
- Set up monitoring and tracing
- Build the Docker image for the application
- Prepare the application to be deployed into Kubernetes with Helm
Why We Support Cloud Native JS
We warmly welcome IBM’s CNJS project as we have been using Cloud Native technologies since their conception, and we firmly believe that this is the way apps should be built.
Node.js developers overwhelmingly deploy ther apps to the cloud, but only around 12% are building fully Cloud Native applications. The goal of the CNJS project is to help developers leverage the true potential of current cloud services by integrating with the CNCF’s open source technologies.
The Cloud Native JS project currently provides the following assets:
- Node.js module insights
- Node.js module LTSLTS means long-term support. The acronym is often used to mark Node.js release lines that will be maintained and supported for an extended period. There are two separate kinds of LTS releases: Active and Maintenance. The Active release line often gets new features and other improvements beside security patches and bug fixes, and the Maintenance only gets the latter. It... policy
- Template Dockerfiles
- Template Helm charts
- Health Check support
- Prometheus monitoring
- OpenTracing request tracking
We are thrilled to join IBM’s CNJS initiative and we’re looking forward to contribute to the project!
At RisingStack we’ve been an active member of the Node.js community from the start of the company, and our engineers have deployed thousands of services in the past 5 years. We are glad that tooling is being built for our favorite server-side JavaScript framework that enables developers to use it more easily on the ecosystem of our choice.
RisingStack and Cloud Native Technoloiges
When our clients ask us to create a highly available distributed system, we usually recommend Kubernetes, because it’s easy to use and even though it has a steep initial learning curve, it’s still a lot more simple than other competing orchestration engines. In the meantime it is more than just an orchestration system but a platform as well with a vast ecosystem.
This ecosystem gains a lot from the existence of CloudNative foundation as they provide a place for several tools that enhance the use of Kubernetes. We at RisingStack use Helm charts to quickly plug in other tools we use such as Jaeger or Promethues, technologies that provide observability. We also use Linkerd to have more control over the communication layer between the services or Harbor to make sure our container images are secure.
We also like to blog about Kubernetes:
- What is Kubernetes & How to Get Started With It
- Deploying a Stateful Application on Google Cloud Kubernetes Engine
- Deploying a Stateful Application on Azure Kubernetes Service (AKS)
- Moving a Node.js app from PaaS to Kubernetes Tutorial
- Packing a Kubernetes Microservices App with Helm
- Graceful shutdown with Node.js and Kubernetes
More About the Cloud Native JS Project
The CNJS Project provides several tools that help you with utilizing cloud native Node.js apps:
- The Module Insights page helps you choose what popular Node modules you should depend on, by gathering info about their stability, license, and version information. It also executes a modules’ own test suite against all current LTS versions of Node.js across multiple platforms
- The ‘cloud-health’ module is a core library that provides health checking and gives you more control over application lifecycle management (startup, running, shutdown).
- OpenTracing enables vendor neutral instrumentation of distributed applications with minimal effort.
- Enable powerful monitoring for your distributed application and configure rule-based alerting using the Prometheus open source project.
- The ‘docker’ repository provides a set of template Dockerfiles that implement the best-practices for building development and production Docker images for your Node app.
- The ‘helm’ repository provides a template Helm chart that simplifies the process of taking a Docker image of your application and deploying it to Kubernetes along with configuration for replicas and autoscaling.
If you’d like to contribute, join the #cloudnative channel within the Node.js Slack.
Guidance with Cloud Native Node.js
If you need help with Cloud Native JavaScript Apps, feel free to ping us on Twitter or at info@risingstack.com
!