How To Choose The Right Cloud Partner
How To Choose The Right Cloud Partner
eBook series
11 /
Current industry trends 49 /
References
14 /
Practical guidance for transitioning 50 /
to the A+B mindset Acknowledgements
51 /
About the Authors
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 3
Preface
Who should read this book?
Technical and business decision makers, C-suite through architects and developers who are
considering migrating their applications to Azure or building cloud-native applications in Azure.
Having worked with several customers, a consistent theme that we observed across our
customers has been a struggle to pick the right service in Azure to host as many of their
applications as possible, if not all. For example, they ask questions like, “should we use Azure
Kubernetes Service or Azure App Service to host all our web applications?” This kind of A or
B thinking stems from traditional on-premises practices that were based on the constraints of the
on-premises world, such as packaged software delivery model, big upfront investments and long
lead times required to build and deploy any application platform. They bring the same mindset
to cloud and spend a significant amount of time identifying and preparing that one Azure service
that can host all their applications, and then trying to force-fit all their applications into this single
platform introducing delays and creating unnecessary roadblocks. But there is a better way – an A+B
approach that fosters modular thinking and helps your company achieve better results in the cloud.
This book is about changing the way you think about the right platform for your applications.
We wrote this book to equip you with the principles of an A+B mindset that you can use
to choose the right Azure Services for your applications, thereby achieving greater efficiencies
and faster time to market.
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 4
• An introduction to the A+B mindset for choosing the right Azure services for your applications.
• Traditional reasons why organisations used A or B mindset for choosing Azure services to host
their applications.
• How cloud enables A+B mindset and the benefits of using A+B mindset.
• Principles of A+B mindset and application of these principles to seven real-world use cases
using Azure Kubernetes Service and Azure Spring Apps as example destinations. These
principles can be put to practice right away by any organisation by applying the A+B mindset.
• Key takeaways.
• Finally, as an addendum, we have provided a detailed comparison of Azure Kubernetes
Service and Azure Spring Apps for hosting Spring Boot applications for those who are
interested in learning more about running Spring Boot apps in Azure.
Introduction
If you have been working with Azure for any period, you might have grappled with the
question, which Azure service is best to run my apps on? This is an important decision because
the services you choose will dictate your resource planning, budget, timelines and ultimately the
time to market for your business. It impacts the cost for not only the initial delivery, but also the
ongoing maintenance of your applications.
Traditionally, organizations have thought that they must choose between two platforms,
technologies or competing solutions to build and run their software applications. For example,
they ask questions like, “Do we use Web Logic or WebSphere for hosting our Java Enterprise
applications?,” “Should Docker Swarm be the enterprise-wide container platform or Kubernetes?”
or “Do we adopt containers or just stick with virtual machines (VMs)?” They try to fit all their
applications on platform A or B. This A or B mindset stems from on-premises practices that were
based on the constraints of the on-premises world, such as packaged software delivery models,
significant upfront investments in infrastructure and software licensing and long lead times
required to build and deploy any application platform. They bring the same mindset to Azure
and spend a lot of time building a single platform based on a single Azure service that can host as
many of their applications as possible, if not all. Then they try to force-fit all their applications into
this single platform, introducing delays and roadblocks that could have been avoided. But there
is a better approach that is possible in Azure that will produce better returns on investment (ROI).
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 6
• Resource optimisation: Before the cloud, a typical organization handled all layers of its
application stacks, which translated to a significant upfront investment in hardware, software
licensing, skilling up teams, hiring subject matter experts (SMEs), configuration, deployment
and operations. Conventional wisdom says it is more economical to invest in a single platform
and use it for as many applications as possible (if not all) than to invest in multiple platforms.
• External influence: Partners, system integrators (SIs) and internal teams pushing for solutions
that drive value for themselves in the near- and long-term rather than making decisions that
are best for their customers.
• Compliance: Many software applications are required to meet compliance and regulatory
requirements based on industry and geography. In addition to this, organisations have their
own internal governance and security standards that the applications must comply with. This
leads to choosing what they perceive as the most compliant platform.
• Culture: Companies that do not have an agile and growth-mindset culture typically have long
planning cycles and move slowly. They tend to pick one platform per technology for the entire
company and spend more of their energy enforcing those frameworks across all the applications
with little respect for the use cases that the applications are aiming at solving.
• Knowledge gap: Lack of deeper understanding of technologies and their application, incorrect
assumptions and a bias toward the familiar. For example, some are confused between Spring
Boot, Spring Cloud and Azure Spring Apps (more details in the Feature comparison – Azure
Spring Apps and Azure Kubernetes Service for Spring Boot applications section). It is important
to have a good understanding of what each technology is meant for and its application before
making your platform choice.
• Generic is better than opinionated: Some companies prefer generic platforms over
opinionated ones as a technology strategy and therefore have a bias for generic platforms. As a
result, they go with that one generic platform that they think will satisfy most, if not all, use cases.
• Politics: Politics among different organisations of a company and the desire to control also
contribute to an organisation enforcing a platform on their application teams as opposed
to doing an objective analysis based on the application needs.
• Job preservation, complacency: Those who have developed a certain level of knowledge and
experience in a particular platform have a sense of security and are hesitant to move away from
the familiar and give room to new. Complacency and a lack of innovative thinking also contribute
to companies holding onto the platform they are comfortable with for as long as possible.
• We have always done it that way – tyranny of the familiar: Comfortable with the familiar,
fear of change and unwillingness to take risks also contribute to the bias toward as few platforms
as possible.
Organisations tend to bring some of the previously mentioned mindsets to the cloud and therefore
try to pick a single platform for all applications rather than choosing what is right for the application.
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 9
Cloud is on-demand and elastic, with no upfront capital expenditures – you only pay for what
you use. You can scale your apps up or down based on your requirements. You can provision
and deprovision resources in the cloud very easily compared to on-premises.
As you move to Azure, a significant portion of the infrastructure and platform responsibility
is transferred to Microsoft, as seen in Figure 1. The effort involved in provisioning and operating
any two Azure services is typically comparable with each other.
Physical hosts
Responsibility transfers
Physical network
to cloud provider
Physical data centre
Benefits of the
associated with owning and managing
multiple platforms, you now have the luxury
A+B mindset
to use the right tool for the right job. Now you
can choose the platform that best fits your
application needs, rather than trying to force-
fit every application into the same platform.
The benefits of the
A+B mindset are quite For example, with regard to AKS versus
for the right job, avoid technology that is best suited to solve the
use case at hand. Moreover, we have noticed
unnecessary work an increasing adoption of microservices
involved in force- in the recent past. Microservices naturally
promote technology diversity because a key
fitting the use case tenant of microservices is to use the best tool
to a predetermined for the job; consequently, A+B is a natural
time to market and The benefits of the A+B mindset are quite
operational excellence. intuitive. Customers can use the right tool
for the right job, avoid unnecessary work
involved in force-fitting the use case to
a predetermined solution, and achieve
greater agility, higher cost efficiency, faster
time to market and operational excellence.
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 11
One out of five organisations said they are willing to use more
than one platform
In a survey conducted during the 2021 SpringOne conference, 21% of participants said they plan
to use more than one type of platform for their Spring Boot apps. Many indicated plans to move
away from VMs to Kubernetes or Platform-as-a-Service (PaaS).
80%
Kubernetes*
70%
60%
Spring Developers
50%
40%
Virtual Machines
Azure Spring Apps
30%
Managed App Service Platforms
20%
PCF and VMwareTanzu
10% OpenShift
0%
2019 2020 2021 Future Plans
One out of five organisations said they would use more than one platform
J.B. Hunt is an innovator in North American trucking and a provider of transportation, end-to-end
shipping and logistics services. J.B. Hunt 360°® is its cloud-based digital service that seamlessly
connects shippers and carriers, matching the right loads with the right trucks. Originally, J.B. Hunt
360° ran on an on-premises distributed architecture backed by mainframe databases, supported
by more than 80 internally built application services, most written in Java. To scale the platform
for up to 100,000 third-party carriers, J.B. Hunt wanted to migrate those services to Azure.
First, they launched a hybrid-cloud version of J.B. Hunt 360° by migrating 20 core services to
VM scale sets and other services to the Web Apps feature of Azure App Service. Then, to create
a full cloud offering, the team began moving the remaining services to Azure Kubernetes Service
(AKS) with Kubernetes for orchestration.
By first evaluating the specific needs of each unique service as well as the business requirements,
budgets and timelines, J.B. Hunt used a variety of Azure services, including VM scale sets, Azure
App Service and AKS, to migrate and modernise their applications. Find more on J.B. Hunt in the
Examples of applying the A+B mindset to AKS and Azure Spring Apps section.
Barracuda’s strategy is to use the Azure service that best meets their need
Barracuda provides email and data protection and application, cloud and network security to more
than 220,000 customers worldwide, in addition to its on-premises and cloud backup solutions. The
company’s customers wanted to be able to find sensitive, personally identifiable information stored
in Microsoft 365. So, in collaboration with Microsoft and building on top of Microsoft Azure services,
Barracuda developed Data Inspector, which uses AI to discover sensitive categories of information
to make compliance easier.
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 13
• Go from use case to solution, not the other way around: Often, many software teams
decide on technology first and then try to force-fit the use cases and design, thus in many cases
incurring a significant overhead in terms of cost, development time, resources and operational
expenses. Get clarity on your use cases, and functional and non-functional requirements before
jumping into the solution.
• Understand your business goals, nature of business, your competition and how often
you need to roll out new features to production: Your solution should always be designed
to meet your business goals and objectives.
• Understand security and compliance requirements: In the age of the cloud, where
everything is accessed over the internet, security is crucial and non-negotiable. In addition to
this,depending on the industry you serve, your application may need to meet certain compliance
requirements. You must design your solution to weather advanced security attacks and to meet
your compliance requirements.
• Understand your budget and timelines: Have a clear understanding of your budget for
the initial development, ongoing operations and future releases. Additionally, understand
your timelines – the cost of delayed projects, both in terms of additional expenses and
negative business impact is often underestimated. Design your solution to meet both your
budget and timeline.
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 15
These principles will help you keep your focus where it should be – on building a solution that meets
your business goals rather than force-fitting the solution to a predetermined platform.
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 16
Please note that Azure Spring Apps and AKS are used only as examples; the same approach can
be used to evaluate any set of Azure services.
AKS simplifies deploying a managed Kubernetes cluster in Azure by offloading the operational
overhead to Azure. As a hosted Kubernetes service, Azure handles critical tasks, like health
monitoring and maintenance. Since Kubernetes masters are managed by Azure, you only
manage and maintain the agent nodes. Thus, AKS is free; you only pay for the agent nodes
within your clusters, not for the masters. See the Feature comparison – Azure Spring Apps and
Azure Kubernetes Service for Spring Boot applications section for more information.
Azure Spring Apps makes it easy to deploy Spring Boot applications to Azure without any code
changes. The service manages the infrastructure of Spring Boot applications so developers can
focus on their code. Azure Spring Apps provides life cycle management using comprehensive
monitoring and diagnostics, configuration management, service discovery, continuous integration
and continuous deployment (CI/CD) integration, blue-green deployments and more.
Bosch
For our first case study, we will consider two business-critical applications, Track and Trace and
RIoT, developed by Bosch, a world-renowned manufacturer and a leader in IoT solutions. These
applications are currently in production, running on Azure. We will see how the A+B mindset can
be applied to these applications to determine the right destinations in Azure for these applications.
a. Track and Trace is an IoT solution that provides real-time information on the location and
load status of shipping assets, such as load carriers, truck trailers/semitrailers, locomotives,
railroad cars and ocean freight containers.
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 17
Requirements:
• The application consists of several microservices that process data received from wireless
tags attached to the assets that are tracked.
• The team is focused on development, and they want to use a major share of their capacity
for product development. They do not have the interest or capacity to get involved
in managing Kubernetes or building container images.
• The team wanted as little build and deployment overhead as possible. They previously
worked with Cloud Foundry and its build packs and wanted a similar experience.
• Scalability is a huge factor because Track and Trace is growing and replacing many more
tracking devices in the field.
• Security and monitoring are undisputable requirements enforced by corporate IT.
Now let’s apply the principles of the A+B mindset that are relevant to this use case, to find out
which service is the best fit for this use case:
• Go from use case to solution: The key requirements to consider for this use case are:
1) The application requires a microservices platform.
2) The team wants to focus on development and they do not have the desire or capacity
to manage Kubernetes or a containerisation process.
3) They want minimum deployment overhead.
4) Security and monitoring are minimum requirements.
Requirement 2 makes Azure Spring Apps a good choice for this application, but we still
need to make sure Azure Spring Apps satisfactorily meets all the application requirements.
As stated previously, Azure Spring Apps is secure, scalable and a fully managed Platform-
as-a-Service (PaaS) for running Spring Boot applications and microservices. It provides full
life cycle management – customers only need to bring their Java ARchive (JAR) file and
they are good to go with the deployment – and it supports comprehensive monitoring
and diagnostics. This makes Azure Spring Apps a good option for running the Track and
Trace application; however, we need to run through the rest of the A+B mindset criteria
to make sure it checks those boxes as well.
• Understanding business goals and nature of business: Track and Trace expects to
grow rapidly, so it requires a platform that can scale as the business grows. Azure Spring
Apps is a fully managed solution with the ability to scale dynamically. Thus Azure Spring
Apps supports this requirement.
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 18
Walking through the decision criteria, we find that Azure Spring Apps meets the business
requirements, supports rapid implementation and deployment, is cost-effective and easy to
operate, enables automation and supports DevOps.
Based on the A+B analysis, Azure Spring Apps is the right destination for this application.
b. RIoT (Residential IoT Services GmBH), a start-up created by Bosch, built a smart home
platform called the RIoT platform that provides back-end services for the Home Connect Plus
app that the home users use to connect, automate and centrally control various smart home
devices from a single user interface. The RIoT team already chose Azure as their cloud and
wanted to find the right destination in Azure for their microservices-based RIoT platform.
Requirements:
• The development team went with a distributed and highly scalable microservices architecture
for this application and decided to base their implementation on the Distributed Application
Runtime (Dapr) framework, which makes building microservices much easier.
• The RIoT platform needed to efficiently support a large number of concurrent users within
the first year of launch and grow from there.
• They wanted the ability to scale out subsystems that require more resources without
scaling out the entire application.
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 19
Let’s apply the principles of the A+B mindset that are relevant to this use case:
• Go from use case to solution: Since the development team based their microservices
implementation on Dapr, the key consideration for this would be which Azure service
is best suited for hosting Dapr-based microservices. AKS is the clear answer; however,
we still need to validate AKS against the rest of the principles of the A+B mindset.
• Understanding business goals and nature of business: The RIoT platform must
support many concurrent users and scale as their customer base grows. AKS supports
running multiple instances of a microservice concurrently, thus supporting many
concurrent users. AKS can also scale up or scale down the number of microservice
instances based on demand.
• Understand security and compliance requirements: Security and compliance
requirements are not explicitly mentioned, but it is assumed that they are table
stakes. AKS and the Azure platform supports best-in-class security.
• Cost and timelines: AKS is very cost-effective; however, cost is not a primary
deciding factor for this use case.
Walking through the decision criteria, we find that AKS meets the application
requirements, supports rapid implementation and deployment, is cost-effective and
easy to operate, enables automation and supports DevOps.
Based on the preceding analysis, AKS is the right Azure service for this application.
Note: In the rest of the case studies, we have analysed only one application per company to decide
whether it lands in AKS or Azure Spring Apps. This does not mean that we are recommending
a single Azure service for all applications. Every application must undergo A+B analysis to find
its destination in Azure.
Digital Realty
Digital Realty supports the data centre colocation and interconnection strategies of customers
across the world. It operates over 290 data centres in 24 countries and six continents. Digital Realty
wanted to build a new customer-facing platform that allowed its customers to build integrations
and consume data about Digital Realty’s services.
Requirements:
• Customer-facing application with approximately 90 microservices in scope. Has global
customers, requires global access with low latency.
• Team did not have the desire or skills to manage infrastructure (Kubernetes clusters).
• Wanted to start development almost immediately without long runways for setting
up infrastructure, networking and Kubernetes clusters.
• Wanted a globally scalable solution that scales quickly and easily.
• Wanted automated global deployments.
• Wanted real-time end-to-end monitoring and the ability to use external monitoring
tools for advanced monitoring capabilities.
• Best-in-class security with zero trust, plus the use of existing investments in F5 and
Palo Alto.
• Support heavy loads from across the globe.
• Rapid business growth, ability to roll out new features rapidly
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 21
Now let’s apply the principles of the A+B mindset that are relevant to this use case, to find out
which service is the best fit for this use case:
• Go from use case to solution: The key requirements to consider in deciding which
platform is better suited for this application are:
1) The team did not have the desire or skills to manage AKS clusters.
2) Rapid business growth and the ability to roll out new features rapidly.
Clearly, the only option left is Azure Spring Apps, but we need to make sure that Azure Spring
Apps meets all the application requirements. Azure Spring Apps is a secure, scalable and
fully managed multi-regional service that comes with a rich set of monitoring capabilities and
the ability to integrate with external monitoring tools, thus meeting the key requirements.
• Understanding business goals and nature of business: We see from the requirements
that Digital Realty anticipates rapid business growth, and they require the ability to scale
the solution as they add new customers. They also want the ability to add new features
rapidly. Azure Spring Apps can scale dynamically and comes with CI/CD integration, which
makes rolling out new releases effortless.
• Understand security and compliance requirements: Security and compliance
requirements can be fully met by using Azure security features such as Azure Virtual
Networks and subnets for network segmentation, support for third-party firewalls like F5
and Palo Alto, which can be used to front the applications running on Azure Spring Apps,
managed identities, access policies, RBAC, encryption and a key vault for storing keys and
secrets and code scanning in release pipelines for credentials and vulnerabilities.
• Cost and timelines: Based on the approach to cost calculation in the Feature
comparison – Azure Spring Apps and Azure Kubernetes Service for Spring Boot
applications section, Azure Spring Apps is very cost-effective for the 90 microservices
that are in scope. Timelines were already addressed in the second point previously.
Walking through the decision criteria, we find that Azure Spring Apps checks all
the boxes – supports rapid implementation and deployment, is cost-effective and easy
to operate, enables automation and supports DevOps.
Based on the preceding analysis, Azure Spring Apps is the best destination for this
application.
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 22
Kroger
The Kroger In-Stock application was Kroger’s #1 application in terms of business impact in 2019,
significantly impacting the revenue in terms of recovered lost sales. The In-Stock application
that was running on-premises on Pivotal Cloud Foundry (hosted on VMs) had scale challenges.
They wanted to scale their application to support several more stores than the on-premises
solution could support.
Requirements:
• The application has 25+ services and 20+ databases.
• Scalable solution to increase the active store capacity from 150 to 2,500+ stores.
• Production-to-production migration. The application was in production and cannot have
any outages during normal operations.
• Securely connect to on-premises data sources. Secure access from in-store mobile apps.
• Kroger has a cloud-first corporate strategy.
• Monitoring dashboard post-deployment in the cloud to make sure the application
is up and running.
Let's apply the principles of the A+B mindset to this use case:
• Go from use case to solution: The key requirements to consider in terms of deciding
which Azure service to use are:
1) Scalability: Kroger wanted to scale this application over 4x from 625 to 2,500+ stores.
2) The existing solution is based on Pivotal Cloud Foundry.
3) Requires a monitoring dashboard post-production.
While both AKS and Azure Spring Apps could meet the requirements, since the
application is already built on Pivotal Cloud Foundry, Azure Spring Apps is a better
natural fit than AKS. Azure Spring Apps also meets their other requirements – it can
scale dynamically and provides extensive monitoring and dashboarding through
integration with Azure Monitor – and as with the other two use cases, Azure Spring Apps
also comes with the additional advantage of not having to manage the infrastructure.
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 23
• Understanding the goals and nature of business: This is a retail application used
by the store employees to quickly identify the in-stock status and location of a product
in-store. The key requirement is the ability to scale from a few stores to all stores. Azure
Spring Apps’s dynamic scaling ability will meet this requirement.
• Understand security and compliance requirements: Azure provides many security
controls such as network isolated deployment of Azure Spring Apps inside an Azure
Virtual Network, Azure Firewall for managing egress, Azure Front Door for ingress, Azure
Key Vault for storing secrets and ExpressRoute for private connectivity to on-premises
data sources, using which the security requirements can be met.
• Cost and timelines: Based on the approach to cost calculation in the Feature
Comparison – Azure Spring Apps and Azure Kubernetes Service for Spring Boot
Applications section, Azure Spring Apps is very cost-effective for this solution as well.
There are no specific requirements on the timeline, so we will assume that it is not one of
the deciding factors.
Walking through the decision criteria, we find that Azure Spring Apps meets the primary
requirements. Its ability to scale dynamically meets the scalability requirement. Azure
Monitor supports extensive monitoring and dashboarding across all Azure services. You
can prebuild the dashboard prior to go-live and continuously monitor pre, during and
post- go-live to make sure the application is fully operational.
Based on the preceding analysis, Azure Spring Apps is the best destination for this application.
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 24
AIA Singapore
AIA Singapore is a subsidiary of AIA Group Limited, a leader in life insurance and financial services
with branches and subsidiaries across 18 Asia-Pacific markets. AIA has several Java as well as some
.NET applications that are running on servers on-premises. To account for unexpected spikes in
traffic, they had to over-provision their on-premises hardware, incurring significant cost overhead.
They wanted to migrate to the cloud to achieve more cost efficiency, performance enhancement
and the ability to accelerate the delivery of new and innovative solutions to their customers.
Requirements:
• AIA has several enterprise Java applications, including their flagship iPoS application,
that are hosted on application servers like JBoss EAP. They also have a few ASP.NET
applications. AIA is looking to quickly modernise these applications and host them
in the cloud to gain more cost efficiency and performance enhancements.
• AIA wants a cloud platform that not only supports modernising existing apps but
also that helps them rapidly build and deploy new applications, accelerating the
delivery of new and innovative solutions to their customers.
• Nine to 12 months to first production workload.
• AIA does not have any constraints regarding deploying and managing AKS clusters.
Let’s apply the principles of the A+B mindset to this use case:
• Go from use case to solution: The key requirements to consider in terms of deciding
which Azure service to use are:
1) Achieving cost efficiency, scalability and performance enhancements for existing
applications.
2) Ability to rapidly build and deploy new and innovative solutions.
3) Existing Java apps are primarily enterprise Java apps, with most of them being
hosted on JBoss EAP.
4) They also have non-Java applications.
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 25
Containerisation is a proven and the quickest way to achieve higher application density, thus
more cost efficiency for existing applications. AKS is a container orchestrator platform that
makes it extremely easy to deploy, run, manage and scale container-based apps. Moreover,
AIA has Java apps that are not necessarily Spring/Spring Boot apps, and in addition to that,
they have other non-Java applications. So, in this instance, AKS is a better choice than Azure
Spring Apps. Customers can quickly containerise their existing apps and run them on AKS.
• Understanding the goals and nature of business: Innovation and delivering
customer value rapidly is at the forefront of AIA’s business strategy. In addition to cost
and performance efficiency, AIA also wanted to rapidly deliver new and innovative
solutions to their customers. With infrastructure as code, CI/CD and built-in Kubernetes
echo system tools like kubectl and Helm charts, AIA can automate both the build and
deployment of their applications, thus accelerating the time to market.
• Understand security and compliance requirements: There are no specific security
requirements mentioned; however, best-in-class security requirements are assumed,
which AKS meets.
• Cost and timelines: Based on the approach to cost calculation in the Feature comparison
– Azure Spring Apps and Azure Kubernetes Service for Spring Boot applications section,
customers can compute the cost for AKS clusters depending on the number of cluster
instances that are required across the regions of their choice. AKS is very cost-effective,
and the high application density should provide additional cost savings compared
to an on-premises solution. AKS is a managed solution and can be spun up on demand.
Customers can containerise the existing apps without having to rewrite code and deploy
them on AKS within nine to 12 months.
Walking through the decision criteria, we find that AKS meets their primary requirements;
it is cost-effective compared to on-premises and easy to operate and it supports automation
and DevOps.
Based on the preceding analysis, AKS is the best destination for this application.
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 26
J.B. Hunt
J.B. Hunt, an innovator in North American trucking for more than 50 years, has expanded from being
a transportation provider to being an end-to-end shipping and logistics provider. J.B. Hunt 360° is
the company’s technology platform, which hosts multiple application services that provide diverse
services to shippers and carriers. J.B. Hunt 360° runs on an on-premises distributed architecture
backed by mainframe databases, supported by more than 80 internally built application services,
mostly written in Java with Jenkins automation. To scale the platform for up to 100,000 third-party
carriers, J.B. Hunt wanted to migrate those services to Azure.
Requirements:
• J.B. Hunt wanted to scale their existing Java-based services to 100,000 carriers.
• J.B. Hunt wanted to continue to use Jenkins and Azure DevOps for CI/CD automation.
• They wanted to migrate these services to Azure quickly and efficiently.
Let’s apply the principles of the A+B mindset to this use case:
• Go from use case to solution: The key requirements to consider in terms of deciding
which Azure service to use are:
1) Scaling existing application services.
2) Minimal to no code refactoring.
3) These are Java services but not necessarily Spring or Spring Boot applications.
4) Need to retain existing CI/CD tools.
As discussed before, containerisation is a proven and the quickest way to achieve higher
application density as well as scalability. As we know, AKS is a container orchestrator
platform that makes it extremely easy to deploy, run, manage and scale container-based
apps. So, in this instance, AKS is a better choice than Azure Spring Apps.
• Understanding the goals and nature of business: The key business objective is to scale
multiple carriers. AKS is a scalable container platform, and it provides multiple levers to scale
based on the load at either the pod level or the node level. So, AKS is a good fit for this use case.
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 27
Walking through the decision criteria, we find that AKS meets their primary requirements;
it is cost-effective compared to on-premises and easy to scale and it supports automation
and DevOps.
Based on the preceding analysis, AKS is the best destination for this application.
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 28
Exceptions
Like anything else, there are exceptions to A+B. This is not an exhaustive list but will provide you with
directional guidance on some exceptions that you might encounter:
• Enterprise strategy: For example, enterprise-wide adoption of containers to build and deploy
applications because they may have multiple programming languages at play, and they want
to build and deploy all applications in a unified manner.
• Too far down the line with execution: You may have chosen a solution before going through
the A+B analysis. If you are already deep into execution of your solution, continue with it but for the
next application use the principles of A+B mindset to choose the right solution for your use case.
• Large scale data centre migrations: To accelerate their journey to the cloud, enterprises
commonly use a strategy called ‘lift and shift’ that involves migrating servers (hosting their
applications) in bulk to Azure using tools like Azure Migrate. Some use this approach to migrate
data centres to Azure and shut them down in an efficient and cost effective manner. In this
scenario, we recommend using A+B mindset to modernise applications after migrating to Azure.
Conclusion
In this book, we provided you with the framework for thinking and the principles that you can use
to choose the right destinations in Azure for your applications.
Force fit use case to solution • • Right tool for the right job
A or B A+B
Figure 3: A or B versus A+B mindset
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 30
Key takeaways
Note: As you run your applications through the principles of an A+B mindset, you might find
that the same Azure service meets the A+B criteria for several of your applications. That is the best
scenario. We are not advising against using a single platform; we are just asking you to make sure
you are picking the Azure service that best meets your business goals.
Note: The principles outlined in this book should not be misconstrued as an argument against
reusability. We are not against “build once, reuse many times”; in fact, you will reuse many Azure
platform features like Azure Monitor and Microsoft Defender for Cloud (formerly Azure Security
Centre) across all your applications. We strongly recommend using Azure landing zones to build
your foundation in Azure once and reuse or extend it across multiple applications. The reusability
at the platform level is what enables you and sets you free to use the A+B mindset to choose the
right Azure service for hosting your application.
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 31
● Build and scale distributed ● Home for distributed workloads that ● Minimise costs
workloads at cloud scale uses services on Azure, on-premises
● High availability through
and externals
● Externalise config, enable service unpredictable volumes and recover
registry, secure, automate ● Eliminate middleware management faster from failures
end-to-end and monitoring efforts – say patching, running
● Expand across the globe – 60+ Azure
middleware, etc.
● Harness the power of K8s regions with speed and scale to meet
without learning or operating it ● Unlimited scale without additional your needs
hardware procurement or datacentres
● Easy to spawn environments ● Strengthen your security posture
● Define roles and responsibilities to with Azure
● Automate testing
match your team structure – Azure
● Supported by Microsoft and VMware
● Advance to production across RBAC (developer, DevOps, SRE, tester,
the globe security)
● Govern using Azure Policy-based
management and enforcement
● Monitor end-to-end – detect and
react faster
● Automate end-to-end
● Implement chargebacks in line with
your funding model – through the
Azure Cost Management system
AKS in a nutshell
Azure Kubernetes Service is a managed Kubernetes service for hosting containerised applications.
With AKS you can rapidly build, deploy and scale applications cost effectively, with confidence.
● Easily define, deploy, debug and ● Get started easily with smart defaults ● Use modern application development
upgrade even the most complex and create scenario-specific cluster to accelerate time to market
Kubernetes applications configurations in just a few clicks
● Save on costs by using deeply
● Add a full CI/CD pipeline to your ● Use Azure Advisor to optimise and discounted capacity with Azure Spot
Azure Kubernetes Service clusters manage Kubernetes deployments
● Expand across global Azure regions
with automated routine tasks and with real-time, personalised
with speed and scale
set up a canary deployment strategy recommendations
in just a few clicks ● Rest assured with best-in-class
● Achieve higher availability and
security and identity
● Gain visibility into your infra protect applications from datacentre
environment with the Kubernetes failures using availability zones
resource’s view, control-plane
telemetry, log aggregation and
container health, accessible in the
Azure portal and automatically
configured for Azure Kubernetes
Service clusters
Cost calculations
This section provides directional guidance on how to calculate the cost of hosting Spring Boot
applications on AKS and Azure Spring Apps. In this example, we will be calculating costs for a single
region. For production, typically, you will have at least one more region for disaster recovery. You
can apply the same logic for each region and compute the total cost for your application.
You can use the Azure Pricing Calculator to estimate the cost of your services. Go to Pricing
Calculator, search for Azure Spring Apps, and choose the appropriate options for your service.
Repeat the same process for AKS.
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 33
In calculating the cost, you want to consider the following base application parameters:
• Number of applications you want to run: Indicates the number of Spring Boot applications
that you plan to run.
• Average CPU per app: Indicates the number of virtual CPU (vCPU) cores required for your app.
• Average memory per app: Indicates the amount of memory required for your app.
• Monthly usage hours: Indicates the number of hours per month that you will run your apps.
Azure Spring Apps: As shown in the example below, for Azure Spring Apps you only need to input
the total number of vCPUs and total memory you require across all your applications.
Azure Kubernetes Service: For Azure Kubernetes Service there are some additional considerations
for computing the cost for the AKS cluster that hosts your Spring Boot applications.
• Right-sizing the cluster: You are responsible for right-sizing the cluster by mapping the total
vCPUs and memory required by your apps to the number of VMs in the AKS cluster. For example,
if you have 10 apps each requiring 2 vCPUs and 2 GB of memory, you will need at least 3 D8s v4
VMs (each VM has 8 vCPUs and 32 GB RAM). In addition to this, you will need to allocate one
or more VMs for resiliency depending on your desired number of failures to tolerate (FTT).
• VM resource overhead: An AKS cluster uses some of the cluster node’s compute capacity
for cluster operations. In addition to that, you will also need some compute capacity to host
Spring middleware, and other components like ingress control. In summary, you will need more
compute to accommodate Spring middleware, ingress control, resiliency and VM fragmentation,
and you will need to estimate the VM overhead accordingly.
• Cost of labour: You will also need to include the additional labour cost for the initial setup and
configuration of the cluster and ongoing operations.
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 34
Application parameters:
• Number of app Instances: 100
• Monthly usage in hours: 730
• Average vCPU per app: 1
• Average memory (GiB) per app: 1
• Region: US East 2
AKS parameters:
• Number of AKS clusters: 1
• VM SKU for AKS Cluster: D8 v3
• Approximate VM overhead:
Node Reservation: 20%
Config server: 2%
Registry: 2%
Ingress: 2%
VM Fragmentation: 20%
Resiliency: 2 FTT
Labour cost for operation: This example uses the standard salary for a Kubernetes Admin in the USA.
Now that we have our parameters, we can begin calculating the cost.
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 35
Azure Spring Apps: We need a total of 100 vCPUs and 100 GiB for the applications. Plugging these
numbers into Azure Pricing Calculator, we see that the Azure Spring Apps monthly cost is USD 6,337.
AKS:
Plugging this into Azure Pricing Calculator, we have an estimated cost of USD 6,801.
The final cost we need to add is the labour cost for AKS operations. According to ZipRecruiter, the
annual salary of a Kubernetes Admin is USD 105K/year. The total cost for a salaried employee is
typically 68% salary and 32% benefits, bringing the total salary to USD 147K/year. Assuming 1 unit
of labour can operate 800 app instances, the monthly labor cost would be ((annual salary/12)*no
of app instances)/800 = ((147,000/12)*100))/800 = USD 1,531. Thus, the total cost of AKS would be
6,801 + 1,531 = USD 8,332/month.
In summary, for 100 app instances that require 1 vCPU and 1 GB memory:
These are directional costs assuming a simple configuration. The actual cost may vary depending
on the exact configuration. The reason Azure Spring Apps came out less expensive is because
of economies of scale. Azure Spring Apps has dozens of dedicated engineers managing it as
well as the AKS clusters that Azure Spring Apps runs on. The cost of our engineers managing
the clusters is distributed across thousands of clusters, which results in a much lower cost per
engineer per cluster compared to our customers managing the clusters themselves.
The following chart shows AKS versus Azure Spring Apps costs for 50, 100, 500, 1,000 and 2,000
app instances.
100000
80000
60000
40000
20000
Figure 8: Azure Spring Apps and AKS – cost variance by number of instances
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 38
This section provides additional information on what your experience will look like in AKS versus Azure
Spring Apps for Spring Boot applications and how you can choose from one of the two options.
What workloads? For Spring Boot applications For containers – general purpose
When should the customer use it? Prefers to focus on business Requires full control
Table 1: AKS versus Azure Spring Apps for Java Spring applications
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 39
In Figure 8, you can see a simple decision tree to guide you in picking the right Azure Service for
Spring Boot applications. Does your business require infrastructure control? If not, move down
to the managed services path, Azure Spring Apps.
If you need infrastructure control, the application destination hinges on your skillsets or your desire
to acquire skillsets to manage AKS clusters and container images or outsource them to SIs or partners.
Decision Tree
For Spring Boot applications
NO YES
With AKS, the customer is responsible for managing some infrastructure components as well
as Spring Cloud middleware components. Azure Spring Apps manages these infrastructure
components transparent to the customer.
Infrastructure
Create, manage and Deploy, manage and scale Create and manage
scale infrastructure Spring Cloud middleware Azure Spring Apps
Figure 10: AKS and Azure Spring Apps – infrastructure management responsibilities
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 41
As shown in Figure 10, Azure Spring Apps simplifies application life cycle management to a great extent.
Do it yourself Built-in
Figure 11: AKS and Azure Spring Apps – application life cycle management responsibilities
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 42
Monitoring is a built-in capability in Azure Spring Apps, whereas some additional installations,
integrations and configurations for monitoring are required for AKS.
Monitoring
Do It Yourself Built-In
As discussed earlier, enabling Spring Runtime on AKS, securing and operationalising it involves
configuring several additional capabilities. For example, in AKS, you are responsible for deploying
and managing Spring Cloud Config Server, high availability for microservices and custom domain
names, whereas Azure Spring Apps provides all the capabilities out of the box.
Mirror Service for Spring Cloud Config Server Azure Enterprise Tier
Service essentials
Key
👉 customer responsibility
Table 2: AKS and Azure Spring Apps – feature grid
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 44
Monitoring
Self-diagnostics-as-a-Service Azure
Networking
Key
👉 customer responsibility
Table 2: AKS and Azure Spring Apps – feature grid, continued
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 45
Security
Key
👉 customer responsibility
Table 2: AKS and Azure Spring Apps – feature grid, continued
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 46
You will have a difference in developer experience and automation between Azure Spring Apps and
AKS. As you can see in the following table, most of the activities, like JAR to containers and enabling
application performance monitoring (APM), are handled for you by Azure Spring Apps.
Key
👉 customer responsibility
Table 3: AKS and Azure Spring Apps – developer experience feature grid
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 47
Ongoing responsibilities
Let’s assume that you have a production system running Spring-based microservices. The following
table shows the difference between Azure Spring Apps and AKS in terms of what it takes to keep the
lights on.
Updating libraries*
Reconciling non-backward-compatible
Azure
Kubernetes API changes
Key
👉 customer responsibility
*Includes vulnerability remediation
**Performed by Azure with a manual trigger, but you are on-point for the downstream impact of Kubernetes updates
Table 4: AKS and Azure Spring Apps – ongoing responsibilities feature grid
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 48
References
• Bosch case study 1 – Accelerate Spring Apps to Cloud at Scale – Discussion with Azure Spring
Apps Customers – YouTube
• Bosch case study 2 – Bosch delivers supply chain efficiencies using Java on Azure
• Bosch case study 3 – Microsoft Customer Story – Bosch builds smart homes using Dapr and Azure
• Digital Realty case study 1 – Accelerate Spring Apps to Cloud at Scale – Discussion with Azure
Spring Apps Customers – YouTube
• Digital Realty case study 2 – Digital Realty powers global portal and REST APIs using Azure
Spring Apps
• Kroger case study – Kroger shares how they Migrated their stock management Java application
to Azure at Microsoft Build – YouTube
• AIA Singapore case study – Microsoft Customer Story – AIA Singapore Private Limited drives
performance enhancements and achieves more cost efficiencies after moving critical Java
applications to Azure
• AIA Singapore webinar – AIA Singapore Drives Digital Transformation with Java on Azure
• J.B. Hunt case study – Microsoft Customer Story – The fast lane to digital disruption: J.B. Hunt
builds load-matching cloud service for shippers and carriers
• Barracuda case study – Microsoft Customer Story – Barracuda uses Azure to develop
a cloud- native service for discovering sensitive data
• Salary and benefits – Employer Costs for Employee Compensation – June 2021 (bls.gov)
• Pricing Calculator – Pricing Calculator | Microsoft Azure
• ZipRecruiter – Kubernetes Administrator Annual Salary (USD 104,682 Avg | Nov 2021)
– ZipRecruiter
• Azure Landing Zones – What is an Azure landing zone? – Cloud Adoption Framework
| Microsoft Docs
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 50
Acknowledgements
We are extremely thankful to the following contributors for carefully reviewing and providing their
valuable input that greatly helped in enhancing the structure and content of this book:
We cannot thank Brian Diffin enough (Executive Vice President and CTO, Global Technology
at Wolters Kluwer Tax and Accounting) for reviewing this book from an Azure customer’s
perspective. We are very encouraged by his positive feedback, support and resonance with
the A+B mindset.
How to Choose the Right Azure Services for Your Applications – It’s Not A or B 51