How to Choose Azure Compute Service

What is a compute service?

It’s the hosting model on which your application runs. Any cloud provider offers a number of compute services to host your application code. All compute services, generally fall into three main categories IaaS, PaaS, and FaaS. Lets see what each category is.

Infrastructure-as-a-Service (IaaS): You provision individual Virtual Machines, Networking, and Storage. Then you deploy your application code on it. You get full access to this machines can install any SDKs, and Softwares to make your applications work. It’s very much similar to you local workstation, only difference is it’s in cloud. But it comes with several risks and challenges that will make you spend very large amount of time in managing these VMs instead of focusing on your actual application.

Platform-as-a-Service (PaaS): It provides a managed hosting environment, where you only think of deploying your application and managing the just the enthronement to make your application work without needing to manage VMs or networking resources. Examples: Azure App Service.

Functions-as-a-Service (FaaS): It’s the simplest computing model, you only worry about your code, and not hosting environment. Your cloud provider takes the responsibilities of making your application run with almost zero downtime and at any scale. Example: Azure Function

Strategies

Choosing the right compute service depends on your needs, so evaluating all options is recommended. It might feel wasting time in the start, but it will help you in long term because each compute service comes with cost, time to to make it operational, and some other limits.

Also, you must know some cloud migration strategies:

Lift and shift: When migrating an existing workload to the cloud without redesigning the application or making code changes.

Cloud optimized: Sometimes you have to modify/refactor you application to take advantage of cloud-native features and capabilities.

Here is the flow diagram which will help you in deciding your compute service whether you are building a new application or migrating an existing one.

To explore more visit https://docs.microsoft.com/en-us/azure/architecture/guide/technology-choices/compute-decision-tree.

What is Multi-tenant SaaS Application?

Before we dive into Multi-tenant SaaS application, let’s talk about what is SaaS and why do you need it?

SaaS applications are cloud based solutions hosted on cloud by third party where customers pay the the rent for using it instead of worrying about underlying infrastructure, upgrades for the software, etc. Some very popular applications which may have used in your company already are Atlasian (JIRA, Confluence), Slack, Datadog, etc…

It’s one of three main categories of cloud computing (IaaS, PaaS, SaaS) offerings. SaaS offers many potential advantages to customers over the traditional models of business software installation, including: Lower up-front cost, Quick to set up, Easy Upgrade, Accessibility, and Scalability.

Multi-tenant SaaS Applications:

Multi-tenant SaaS applications uses same application and database layers to run applications for multiple tenants (organizations/customers).

As for the data, each set of data is tagged as belonging to each customer to segregate and secure the data for each customer.

Today, SaaS application developers, as well as businesses, aim for the most cost-effective as well as an efficient approach for SaaS application development. That is why multi-tenant SaaS architecture is preferred over single tenancy.

When it comes to design, it’s not easy. Let’s look into some challenges of designing multi-tenant applications:

Tenant Isolation: Needed to keep one customer data separate from others. Failing to do so can bring the whole business down.

Customization: Supporting the customer (tenant) tenant specific customization.

Development & Operational Complexity: Schema changes, Restoring or Scaling tenant specific configurations.

Scalability: Flexibility to change subscriptions/plans for customers as and when need changes.

Design Patterns:

There are many patterns suggested by experts, and you can also come up with your own. But I would recommend only two patterns:

One database per tenant:

Multi-tenant Application using Azure SQL DB

Single multi-tenant database:

Multi-tenant Application Design on AWS

Resources:

https://docs.microsoft.com/en-us/azure/sql-database/saas-tenancy-app-design-patterns

Atlassian Multi-tenant Architecture Example



Create a website or blog at WordPress.com

Up ↑