In my previous post I shared with you the first of the four pillars of Microsoft’s Open Source strategy – Enable, Integrate, Release and Contribute. In this post, I will share my learning and understanding of the second pillar – ‘Integrate’. Integration is about embracing the open source ecosystem by integrating open source technologies into our platform.

There’s a cool way to explore all types of Open Source (OSS) at Microsoft, using opensource.microsoft.com.

 

 

You can explore and visit the GitHub repository for any product or component that is utilizing open source from the community or see topics where Microsoft has released/contributed to OSS. The listing can be sorted by what’s trending, by the stars it has on GitHub, by the Forks it has, or by naming of the service.

Examples of OSS Integration within Azure

In my mind, I have bucketed the types of integration you can find into either providing convenience to the OSS community, harnessing innovative technology from OSS and offering enhanced capabilities or service options to the OSS community. Convenience is about bringing cloud capability, scale, and elasticity to OSS technologies, along with the ability to offload management of the underlying infrastructure. Harnessing the innovation power of OSS is where Microsoft has built a cloud service leveraging innovative open source technology, rather than building a ground-up service. Finally, the last form of OSS integration is about the choice and flexibility to use OSS languages/frameworks of your preference to interact with Azure services and to access additional capabilities in those services.

OSS on Azure Integration for Community’s Convenience

There are many OSS technologies today that are offered as a managed cloud service on Azure. They bring the convenience and benefits of cloud and allow the users to offload any management overhead. Developers can simply focus on building their application and plug-in required Azure managed service components such as MySQL, PostgreSQL, Azure Databricks, Web Apps for Containers, App Service for Linux, etc. Most of these services offer community editions of the OSS technology as a managed service, as opposed to an opinionated variation.

OSS Innovation in Azure

Browsing OSS at Microsoft, you can find the links to GitHub repositories for Microsoft services using OSS technology such as Microsoft Machine Learning for Apache Spark, that provides deep learning and data science tools for Apache Spark. Similarly, HDInsight is a fully managed open-source analytics service in Azure that enables Data Warehousing, Machine Learning, IoT and more through the use of popular frameworks such as Hadoop, Spark, Hive, Kafka, Storm, R and more.

Another fitting example is the service offerings Azure has around providing the management of Linux containers, popularized by Docker open source project, with the added power of cloud computing. Azure Container Services with fully managed Kubernetes cluster (AKS) is where Azure is offering a container service utilizing Docker or custom container images with the orchestration of containers done by community developed Kubernetes. In these service examples, Microsoft has built managed service options or focused on integration that allows you to use these OSS technologies with other services and capabilities within Azure. Finally, another way Azure leverages the innovation power of the community, is by releasing our own projects as Open Source, such as the recent announcement on Service Fabric. However, I’ll reserve that for another discussion in my next post about the ‘Release’ pillar of our OSS strategy.

OSS weaved through Azure services

The last form of integration is when Azure and OSS ecosystem teams work together to bring Azure users options and flexibility. If we look at the Azure documentation for Azure Functions, a solution for easily running small pieces of code, or “functions”, you can see there is a choice of OSS languages and frameworks that can be used to write your functions – JavaScript, Java, Python, and PHP, to name a few. The support for these is in various stages, from experimental, in preview, to generally available, as the engineering teams are constantly collaborating with the OSS community to enhance the level of integration into Azure services. Just for variety, check out the App Service documentation and see the 5-minute quickstarts to help you deploy your first application using Web Apps in your choice of language/frameworks.

Recently there have been many announcements about improvements and better integration with DevOps tools such as Terraform, Ansible and Jenkins. In each of these announcements, there are deeper management/configuration/tooling efforts to give your workloads access to other Azure services or optimize how they run on Azure.

The last example of integration I want to share is a product that is not OSS but offers the OSS ecosystem access to a NoSQL database for globally distributed, scalable, or serverless apps – Azure Cosmos DB. It offers JavaScript, Graph, MongoDB, and Apache Cassandra APIs to allow developers to use JavaScript or Apache Tinkerpop’s graph travel language, Gremlin, or have MongoDB-as-a-service and Cassandra-as-a-service options. For machine learning over datasets managed by Azure Cosmos DB, it offers an Apache Spark connector.
As always, if you would like to get into technical depth on how any of these open source technologies feel and operate on Azure, please check out Azure Documentation or give it a spin via Azure trial today!

Resources:

Azure Documentation for various Open Source technologies: