2 min read

Node.js and Azure is a winning combination for Microsoft's Open Source Programs Office

Post by Jeff McAffer and Jeff Wilcox 
Thousands of Microsoft engineers use, contribute to, and release open source projects every day across every platform, from the cloud to client operating systems, programming languages and more. Microsoft’s Open Source Programs Office (OSPO) supports these engineers, helping to drive open source culture, policies, processes, and tools.
The OSPO team has been using Node.js because its a great path to open sourcing these components in a usable way within and beyond Microsoft’s traditional communities. Also, to be able to interact with others in the industry who are playing in a similar space, we need to be able to add value in a true open source way.

OSPO + Node.js

OSPO was met with a rich and growing internal community of Node.js users and, as a big “customer” themselves, used this internal forum to provide feedback to the product groups and leverage the best tooling and product experiences available.
OSPO started with Node 4.x and as the application matured, they recently moved to Node 6.x LTS. Like most Node apps, OSPO integrates many packages available in NPM for this application. The team has also released several modules like redie, painless-config and ghrequestor, with plans to contributing more in the area of Table Encryption and Key Vault integration. Another big effort from the team is GHCrawler, a system that collects data from GitHub to help teams gather insights and metrics about open source interactions.

Platform

Microsoft’s vision for Node.js in the cloud focuses on production operations, developer productivity, as well as flexible and powerful cloud deployments.
OSPO uses many elements of the Azure platform, including App Service, Logic Apps, Linux VMs and Web Jobs for compute resources, Azure Storage, Redis Cache, Service Bus and DocumentDB for persistence and messaging, and Azure Active Directory and Application Insights. On the analytics side, OSPO is making use of Azure Data Lake and PowerBI to visualize and interpret data.

In addition to the ability to grow and adapt the application as needs evolve, this enables OSPO to define rich workflows. For example, their App Service deployment is fully integrated with GitHub, includes Grunt tasks for testing and linting, hook-based notifications with Logic Apps and more. Those services have helped OSPO to reduce their cloud costs by 75% compared with their original architecture.

Tools


OSPO team members, like many Microsoft employees, get a choice of PC or Mac for their workstations and most of the team uses Visual Studio Code on macOS and Windows. This establishes a feedback loop with Microsoft IT and the internal open source community that shares libraries and mechanisms to improve support, in addition to the feedback loop that OSPO has with many product groups like the Azure Active Directory team.
Another technology used by OSPO that has strong Node.js affinity is MongoDB. And here’s where Azure’s open and flexible approach pays off, since it allowed OSPO to move from in house managed MongoDB infrastructure for data pipeline processing to a fully managed DocumentDB instance with MongoDB protocol support, helping them to grow and giving the product group valuable experimentation data.

These Node services are in addition to OSPO’s rich existing portfolio that includes the Open Source Portal.  The portal was originally used in the Azure team but has since expanded its reach to cover 10,000+ engineers across all of Microsoft’s it is used by every Microsoft engineer to manage their GitHub engagement.
How are you using Node on Azure? Let us know in the comments.
Want to get started? Check out the Azure Node.js Developer Center to learn more.