---
title: "From Java into the sea of Azure: An introduction to compute services | &‌amp"
description: In this blog post, the author breaks down selected Azure compute service options, discussing unique features and use cases.
image: https://miro.medium.com/v2/resize:fit:700/0*ofXUKQLrUkYZ4QlK
---

[Skip to content](https://insights.andamp.io/blog/from-java-into-the-sea-of-azurean-introduction-to-compute-services#main-content)

[![andamp logo black (ampersand symbol)](https://insights.andamp.io/hubfs/logo_black.svg "andamp logo black (ampersand symbol)")](https://insights.andamp.io/?hsLang=en)

- [About Us](https://insights.andamp.io/about-us) 
    - [Career](https://insights.andamp.io/career)
    - [Code of Conduct](https://insights.andamp.io/code-of-conduct)
- [Blog](https://insights.andamp.io/blog)

# From Java into the sea of Azure: An introduction to compute services

[![](https://insights.andamp.io/hubfs/andamp-16-Zsolt%20MARTON-PRINT.jpg)](https://insights.andamp.io/blog/author/philipp-greitbauer)

[Philipp Greitbauer](https://insights.andamp.io/blog/author/philipp-greitbauer)  26. März 2024

![](https://miro.medium.com/v2/resize:fit:700/0*ofXUKQLrUkYZ4QlK)

Photo by [Farano Gunawan](https://unsplash.com/@romofarano?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=medium&utm_medium=referral)

Nowadays, if you think about how you want to deploy your microservice, a container comes to mind.

This implies packaging it as a container image, the lowest common denominator to distribute your application so that it can be easily run independent of the host environment.  
All you need is a container runtime or something building on top of one. There are many systems fulfilling that requirement, all with their own benefits, drawbacks, and use cases.

For this article, we want to focus on ways to specifically deploy Java applications in the cloud, more concretely, Microsoft Azure. Some even build the container images for you to focus on the code.

Again, several options exist depending on your needs or possible existing deployments. When first looking at them, you may be overwhelmed and wonder what kind of service you should use.

Microsoft provides several resources to help you choose a compute service solution, including a flow chart.  
In the following, we will break down the choices based on a reduced flow chart focusing on containerized applications and managed services. Furthermore, selected unique features and use cases for each service are described.

![](https://miro.medium.com/v2/resize:fit:700/0*pnBVokwoGYr27rLx)

A flowchart giving an overview on the selected Azure compute solutions described in this article.

## Azure Container Instances

If the goal is to run a given container image as fast and simple as possible, Azure Container Instances (ACI) is the way to go.  
There is no need to set up any VM or wait for the provisioning of a fancy higher-level Azure service. Billing is done in seconds for resources requested by your containers.

ACI is best used for isolated workloads running a limited time, like one-off tasks or build jobs, that do not require orchestration features such as auto-scaling, load balancing, or seamless container upgrades.  
Multiple containers can be deployed as a container group, sharing a lifecycle and resources.

Another great use case is quickly bursting other compute resources in times of unexpectedly huge demand. For example, it is possible to automatically spin up additional service instances in ACI instead of scaling your Azure Kubernetes Service node pool, which would take a few minutes.

## Azure Kubernetes Service (AKS)

Kubernetes is the de facto standard for container orchestration. Many vendors/providers offer their flavor, but usually, they are certified by the CNCF to conform to the required APIs.

Microsoft’s AKS is a managed Kubernetes solution running in the cloud. Azure reduces the operational overhead, usually with a self-hosted Kubernetes cluster, by handling (or at least supporting) monitoring and maintenance.  
Furthermore, access and identity management via Entra ID (formerly Azure Active Directory) is possible. AKS can also be deployed in existing virtual networks and, therefore, be integrated with other Azure services.  
You pay per cluster per hour and for the nodes (VMs) assigned to the AKS cluster.

Use AKS if you need the orchestration capabilities of Kubernetes, want to migrate an already existing cluster to the cloud, or want to (at least partially) avoid vendor lock-in while benefiting from a managed service.  
If you require an OpenShift cluster instead of a managed Kubernetes, there is also Azure RedHat OpenShift.

## Azure Container Apps

Azure Container Apps is built atop AKS but abstracts away all of Kubernetes while still offering tools like KEDA (scaling), dapr (building blocks for developing distributed applications), and envoy (proxy for microservice communication).  
Because there is no infrastructure to configure or maintain Azure Container Apps, it counts as a serverless platform.

Besides continuously running your microservices deployed as containers in a scalable way, it is also possible to configure jobs that run on a schedule or based on occurring events and exit when their work is done.  
Examples are cron jobs or jobs executed for each new message in a queue like Azure Service Bus.  
The event-driven functionality is realized using special scaling rules evaluated at a given polling interval. Continuously running apps can also be scaled to zero based on such rules, for example, if there is insufficient demand. Instances that are not processing anything are idle and incur fewer costs, but when an application is scaled to zero, no usage charges are billed.  
The consumption-based plan is billed by a second and is increased by the number of HTTP requests sent to your containers once the monthly free grants are exceeded.

Choose it if you want to fully focus on your applications and leave concerns about your infrastructure behind.

## Azure Spring Apps (formerly Azure Spring Cloud)

As the name implies, this service is specifically geared towards Java Spring Cloud applications but also supports the .NET framework Steeltoe. The reason is that Steeltoe is quite similar to Spring Cloud and integrates with its infrastructure components. Furthermore, both frameworks are backed by VMWare.

In contrast to the previously described Azure services, Azure Spring Apps allows you to deploy your applications as JARs or even source code (leveraging [kpack](https://github.com/buildpacks-community/kpack)) instead of requiring pre-built container images.

Like Azure Container Apps, Azure Spring Apps helps you concentrate on your business case, specifically for Spring applications. It has a built-in configuration server and service discovery capabilities using Spring Cloud Config Server and Eureka (sometimes called Spring Cloud Service Registry). There also is a separate Enterprise tier using commercial VMWare Tanzu components, extending the Standard tier by further managed services, such as a fully managed VMWare Spring Cloud Gateway and an API portal.

Although Azure uses Spring’s config server and Eureka, apart from that, the focus lies on integrating native Azure Services in the best possible way with the Java/Spring ecosystem.

## Azure App Services

The main use case for Azure App Services is HTTP-based services like web apps or RESTful API implementations.  
They offer built-in load balancing and high availability at a global scale. In addition, various identity providers have integrated authentication and authorization capabilities.

Another great feature of App Services is deployment slots, which can be described as a staging environment that is used to deploy and validate your new application version before easily swapping places with the previous production build. This approach eliminates downtime as your service is already fully started and scaled.

If you need to host some web applications, APIs, or backends for mobile apps, Azure App Service is a good choice. Yet, it is better to look at the other offerings for full microservice architectures.

## Azure Functions

Although Azure Functions are unsuitable for running Spring applications, they can be a fitting replacement in some cases, such as for small event-driven workloads that should be tightly integrated with Azure-native services.  
For example, one can easily configure a function by annotations so that it is triggered each time a blob is added to a storage account and then writes some output to Cosmos DB.

At first glance, Azure Functions seems promising, but due to my recent experience, I urge you to consider if it is worth using it carefully.  
One of my main concerns about Azure Functions is that the usage as a truly “serverless application platform,” which is just paid consumption-based, is severely limited compared to the Premium plan, which implies fixed monthly costs. Luckily, this will change shortly with the introduction of the so-called Flex Consumption plan.

Additionally, the Azure Function SDK for Java didn’t feel mature due to several issues that are out of the scope of this article. There also are differences regarding the supported features between the available programming languages (C#, Java, JS, Python).

If you are developing Azure (Durable) Functions on an ARM-based Mac, you may run into trouble executing your functions locally due to an error loading a library.

# Conclusion

Ultimately, there is no “best” service choice for all circumstances.  
Usually, it boils down to finding a good match for your team’s skill set, the overarching system or project goal, and the existing environment or specific requirements only satisfiable by specific services.

For example, if you have a bunch of experienced Java Spring Boot developers, it is better to stick with it and use Azure Spring Apps or App Services even if the application to be built seems like a good fit for Azure Functions.  
If you plan to build up a full environment including several utility services like a repository or build servers, and you want to host yourself in a scalable way in addition to your microservices, AKS is a good and flexible choice.

The purpose of this article was to serve as a first overview and give an impulse for further consideration by discussing selected features instead of the usual service characteristics.  
For a more common and structured comparison before diving into the documentation of each service, refer to the following Microsoft Learn pages:

- [Choose an Azure compute service](https://learn.microsoft.com/en-us/azure/architecture/guide/technology-choices/compute-decision-tree)
- [Comparing Container Apps with other Azure container options](https://learn.microsoft.com/en-us/azure/container-apps/compare-options)

## It’s time to build!

When it comes to modernizing your business infrastructure, cloud solutions like Microsoft Azure offer excellent reliability, scalability, and security. Our team of certified experts at [&amp](http://andamp.io/) can help you leverage the full potential of Azure by providing custom solution architecture services that cater to your unique needs. Whether you need to migrate your existing workloads, develop new applications, or manage complex data sets, we are here to help. [Get in touch](mailto:philipp.greitbauer@andamp.io) with us to learn more about our services and how we can assist you in implementing the best Azure solutions for your business.

[Azure](https://insights.andamp.io/blog/tag/azure) [Azure Kubernetes Service](https://insights.andamp.io/blog/tag/azure-kubernetes-service) [Java](https://insights.andamp.io/blog/tag/java) [Azure Services](https://insights.andamp.io/blog/tag/azure-services) [Azure Functions](https://insights.andamp.io/blog/tag/azure-functions)

## Read On

[![](https://miro.medium.com/v2/resize:fit:700/1*bG0xhHfCaZmQO4ZyjGNO4g.jpeg)](https://insights.andamp.io/blog/azures-best-kept-secret-simplifying-cloud-security-with-managed-identities?hsLang=en)

### [Azure’s Best-Kept Secret: Simplifying Cloud Security with Managed Identities](https://insights.andamp.io/blog/azures-best-kept-secret-simplifying-cloud-security-with-managed-identities?hsLang=en)

 This blog post explores Azure Managed Identities with a hands-on guide to securing Function Apps and other cloud resources—without relying on stored credentials.

[![A Beginner’s Guide to Dapr with Spring Boot](https://miro.medium.com/v2/resize:fit:700/0*xrK1ECz6IWu8scxP)](https://insights.andamp.io/blog/a-beginners-guide-to-dapr-with-spring-boot-and-integrating-it-in-azure?hsLang=en)

### [A Beginner’s Guide to Dapr with Spring Boot, and integrating it in Azure](https://insights.andamp.io/blog/a-beginners-guide-to-dapr-with-spring-boot-and-integrating-it-in-azure?hsLang=en)

 In this blog post, the author walks you through setting up a Spring Boot app with Dapr, using Testcontainers for messaging and state, and deploying to Azure with GitOps. It's a practical guide for simplifying microservices development with modern tools.

[![Why We Ditched CosmosDB for PostgreSQL](https://miro.medium.com/v2/resize:fit:1400/1*o042g5XA04eAbC2lCSAaMw.jpeg)](https://insights.andamp.io/blog/20-minutes-to-30-seconds-why-we-ditched-cosmosdb-for-postgresql?hsLang=en)

### [20 Minutes to 30 Seconds: Why We Ditched CosmosDB for PostgreSQL](https://insights.andamp.io/blog/20-minutes-to-30-seconds-why-we-ditched-cosmosdb-for-postgresql?hsLang=en)

 In our latest blog post, the author breaks down the migration journey from Azure Cosmos DB to PostgreSQL—and why sometimes the best solution isn't the newest technology, but the one that actually solves your problems.

[![logo_white](https://27222727.fs1.hubspotusercontent-eu1.net/hubfs/27222727/logo_white.svg "logo_white")](http:/?hsLang=en)

[Follow &andamp on LinkedIn](https://www.linkedin.com/company/andamp/) [Follow &andamp on Instagram](https://www.instagram.com/_andamp_)

## Our Services

- [Team as a Service](https://insights.andamp.io/team-as-a-service/)

## Sitemap

- [Blog](https://insights.andamp.io/blog)
- [Career](https://insights.andamp.io/career)
- [About Us](https://insights.andamp.io/about-us)
- [Code of Conduct](https://insights.andamp.io/code-of-conduct)
- [Our Diversity Journey](https://andamp.io/diversity-journey)

## Our Mission

 We offer a risk-free way to optimize customer experience and realise your business' potential through MVPs

## Case Studies

- [Notarity](https://insights.andamp.io/case-studies/notarity/)

## Location

 andamp GmbH  
 Währinger Straße 48/2. Hof  
 1090 Vienna, Austria

## Contact Us

[hello@andamp.io](mailto:hello@andamp.io)  We would love to hear about your ideas!

### Let's build your project!

This site is protected by reCAPTCHA and the Google [Privacy Policy](https://policies.google.com/privacy) and [Terms of Service](https://policies.google.com/terms) apply.

® 2025 andamp GmbH [Legal Notice](https://insights.andamp.io/legal-notice/?hsLang=en) [Privacy Policy](https://insights.andamp.io/privacy-policy/?hsLang=en)

```json
{
  "@context" : "https://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "Philipp Greitbauer",
    "url" : "https://insights.andamp.io/blog/author/philipp-greitbauer"
  },
  "dateModified" : "2024-03-26T12:34:45.388Z",
  "datePublished" : "2024-03-26T09:44:00.000Z",
  "headline" : "From Java into the sea of Azure: An introduction to compute services",
  "image" : [ "https://miro.medium.com/v2/resize:fit:700/0*ofXUKQLrUkYZ4QlK" ],
  "mainEntityOfPage" : {
    "@id" : "https://insights.andamp.io/blog/from-java-into-the-sea-of-azurean-introduction-to-compute-services",
    "@type" : "WebPage"
  },
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "url" : "https://insights.andamp.io/hubfs/andamp%20Full%20Logo%20Blue%20Light.svg"
    },
    "name" : "andamp GmbH"
  }
}
```