visit
Building these foundational platforms as a SaaS (Software as a Service) enables organizations to maximize their client experience and Return on Investment (ROI).
Here is a sample that breaks down the path to SaaS success into four distinct phases (Business Planning, Product Strategy, Minimum Viable Service, and Launch/Go-To-Market), each representing a critical stage in the move to SaaS.
At a broad level, SaaS Journey Framework allows you to accomplish the following:
When you design your Cloud Platform for housing multiple tenants, you may want to take advantage of the economies of scale that come with sharing infrastructure resources across tenants. Simultaneously, the tenants require some of the resources to be dedicated to them.
Silo: The silo model refers to an architecture where tenants are provided with dedicated resources. For example, each tenant of your cloud platform may have their own AWS account, that’s vended from a master aws organization’s account.
Pool: The pool model refers to an architecture where tenants share resources. These resources typically belong to the base infrastructure. For example, networking services in aws such as NAT Gateway or VPCs could be shared across all your tenants.
Hybrid: The hybrid model refers to an architecture where some resources of your platform are implemented in the Silo model and some in the Pool model. This pattern acknowledges the reality that you cannot exclusively design for Silo or Pool.
In scenarios where you must comply with strict workload isolation for teams, choose Silo model. In scenarios where you would benefit from economies of scale (for example, a common set of VPCs, subnets, and NAT Gateway for a set of customers), choose Pool model.
Immaterial of which model you choose, each environment managed by your platform still relies on a shared identity, onboarding, and operational experience where all tenants are managed and deployed via a shared construct. This is where a Control Plane based operation comes in to help.
With Control Plane, you can:
When you build and operate a multi-tenant platform as a service, you must ensure that each tenant is prevented from accessing another tenant’s resources.
The following strategies help in enforcing workloads isolation:
Attribute-Based Access Control (ABAC): ABAC is an authorization strategy that defines permissions based on attributes. For example, you can enforce a policy that allows permissions to a user only when the user’s team name tag matches the resource’s team name tag.
Name-Based Access Control (NBAC): All resources in your cloud provider may not support ABAC. In such scenarios, the NBAC strategy additionally helps you to enforce permissions to a team based on resource naming convention. For example, you can enforce a policy that allows permissions to a user only when the resource starts with the team name to which a user belongs. Use this as a complementary strategy on & above ABAC.
In AWS, IAM Policy Conditions element and IAM Policy Resource element are excellent ways to enforce both ABAC and NBAC.
Beyond tenant workloads isolation, ABAC (using Tags) also allows you to measure the cost impact of individual tenants.
Designing multi-tenant experience for your platform as a service requires deliberate planning. The above patterns and techniques (Silo/Pool/Hybrid, Control Plane and Authorization strategies) should help you in coming up with a robust design.
For example, let’s take a scenario where we have decided on our authentication strategy as IAM with MFA.
Create IAM User for each user within a team & attach the tag team name to the user with an appropriate value.
Attach IAM User to one or many IAM Groups, depending upon the persona attached to the user in the request.
Create Team Execution Roles with appropriate permissions that underlying cloud services will use for execution. For example, the platform may create separate Team Execution Roles for SageMaker & Glue.
Attach common policies that govern platform usage across all users. For example, mandate MFA before any service is accessed through Console or CLI.
By pre-packaging all preventive permissions and team-specific resources (like execution roles) during on-boarding, you can deliver a secure, governed yet easy-to-use and repeatable on-boarding process that just works.
Self Service is a key pillar that unlocks accelerated delivery by empowering consumers to launch cloud resources and pipelines with little or no intervention from administrators.
Enabling Self-Service on Cloud Platforms is hard since you need to simultaneously satisfy two goals that are seemingly contradictory:
CI/CD Pipelines as a Service offers a toolchain standard to be re-used by application teams. In this model, end-user teams launch a governed deployment pipeline from AWS Service Catalog.
The workflow for this model is as follows:
Standard deployers, but flexible configuration: End-users are provided with the flexibility to specify configurations & details pertaining to the deployment (flexible), but admin takes care of the actual deployment to the cloud (standardization and compliance)
GitOps & DSL driven: Every deployment of a resource by the consumer team is forcefully driven through the
Eliminates individual personnel dependency
This model allows end-user/consumer teams to provision resources managed by a central operations team as self-service.
For example, consider offering S3 Bucket as a Service. In this case, the workflow would be as follows:
Cloud platform engineers design and create a CloudFormation template, with appropriate end-user parameters such as team name, bucket name, etc.
When end users launch this product, they receive a fully secure and compliant resource that is locked down to their team.
Principle of least Privilege: End users are NOT provided elevated benefits. They must use Service Catalog products to launch resources.
Standardization & Compliance: All resources created through Service Catalog exhibit the same behavior, thus accomplishing standardization and compliance.
With Centrally Managed Products & CI/CD Pipelines as a Service models, platform admins can provide superior self-service to end-users while adhering to the highest levels of security, standardization, and compliance.
Security is a key pillar that provides multi-fold benefits, especially when you are launching a platform as a service. Building all capabilities and services with Security by default principle ensures that hundreds of teams in your organization use these products, without worrying about managing security in the cloud.
Below are a few strategies to ensure that platform offerings are secure by default:
A preventive permissions model that protects cloud resources across all channels (console, CLI, programmatic access) and also enforces team permissions.
A carefully enforced data encryption standards (transport layer & at-rest) while launching products through Centrally Managed Products & CI/CD Pipelines as a Service, through appropriate configuration.
By establishing preventive guardrails, including DevSecOps in all builds, protecting data privacy in the capabilities offered, and isolating team workloads, you can deliver an exceptional security by default that works for teams at scale.
“Platforms and platform thinking aren’t cure-all solutions. They’re conduits and catalysts for your strategic goals. To harness their full potential and realize their full value, they must be designed and built with your unique goals in mind.” — Rachel Laycock, Global Managing Director, Enterprise Modernization, Platforms and Cloud