Running Java on Azure
Azure is Microsofts cloud platform. It is the home of Service Apps, Logic Apps, cloud storage, Kubernetes Service and provides the foundation for VSTS (now Azure DevOps), Office 365 and loads of other services and tools.
But not only for .NET based services and applications. Todays Microsoft provides options for Linux developers, OSX teams, Docker containers, Python code, Node.js and many more different workloads. In this article series I will explore some of the Azure services and options for Java based solutions.
Running Java applications
The best part about Azure (or any other cloud platform) is the capability for running your workloads. For many different reasons the cloud has pushed companies away from running their own datacenters and in to the cloud. So what are your options for running Java applications on Microsoft Azure?
Azure Web Apps
Officially known by its full name Azure App Service Web Apps is a service for hosting web applications, REST APIs, and mobile back ends. You can develop in your favorite language, be it .NET, .NET Core, Java, Ruby, Node.js, PHP, or Python. This platform comes in two flavours: Windows based and Linux based. You use App Service on Linux to host web apps natively on Linux for Java (currently 8.0), Spring based and Apache Tomcat applications.
Docker with Web Apps for containers
If your application runtime dependencies are not supported on the default App Service for Linux, you can also deploy/ create one using your custom built Docker image. You can pull your container images from Docker Hub or a private Azure Container Registry and Web App for Containers will deploy the containerized app with your preferred dependencies to production in seconds. The platform automatically takes care of OS patching, capacity provisioning, and load balancing.
More information, try this Quickstart for Java
Azure Container Instances
Azure Container Instances offer a fast and simple way of running single containers in Azure. No virtual machine hassle, no OS to manage and no orchestration. This service is best suited for small applications. You can deploy your container using bash (CLI), the Azure portal or using PowerShell.
More information, try this tutorial on creating a container for deployment.
Azure Kubernetes Service
Full blown managed hosted Kubernetes. As a hosted Kubernetes service, Azure handles critical tasks like health monitoring and maintenance for you. The Kubernetes masters are managed by Azure. You only manage and maintain the agent nodes.
This option is suited for all types of applications: single node, multi node, clustered, mission critical, micro service based, auto scaling, etc.
More info on the product page
Azure Market Place
A quick search on the Java based products available through the Azure Market Place reveals a lot of options for running Java on Azure:
Azure Databricks using Data Factory
Ok, this is something completely different. Azure Data Factory is Microsofts cloud solution for orchestrating data pipelines. Consider it your data ETL as a service 🙂
Azure Databricks is Microsofts Apache Spark–based analytics service.
So, lets say you have Java code compiled as a .jar for certain tasks in your data pipeline (e.g. data classification), you can deploy this using Azure Data Factory on Azure Databricks. If you are into large-scale data processing, this is a great addition to your toolset.
But wait, there’s more!
Microsoft has a lot of options for running Java based workloads on Azure, but this is certainly not the entire story. In two follow up posts I will be reviewing options for developing and operating Java solutions on Azure.