Next-Generation Software Delivery Models on AWS
Software delivery has been evolving. Not too many years ago most software lived on-premise. Then came the web-hosted app, and then robust cloud solutions like those provided by various combinations of AWS services.
At this week’s re:Invent, Sajee Mathew – Solutions Architect at AWS – talked about the best approach to build SaaS (Software as a Solution) solutions. There are basically three possible approaches:
- Isolated customer stacks, which offer independent resources for each customer.
- Containerization on shared platforms which use EC2 Container Service and Docker to provide “slices” of AWS.
- Pure SaaS shared architecture by means of on-demand resources.
The isolated customer stacks model means that, for every new customer, you simply replicate the stack. It makes billing and provisioning quite simple, but it comes with a catch: thousands of customers will translate into way too many stacks.
Containerization requires fewer resources, as a considerable part of your infrastructure can be shared among all your customers. Assuming you won’t face too many coding changes, it’s a good solution for new apps.
Pure SaaS shared architecture is definitely the best approach for a brand new app. Despite the need for all parts of the application to be multi-tenant-aware, you can benefit from economies of scale. Deployments serving new customers are automatically built on autoscaling single infrastructures.
As part of his presentation, Sajee defined each component of a pure SaaS shared architecture (along with AWS services built to deliver it):
- SaaS Ordering: the entry point for purchasing access to SaaS apps, for the orchestration of which AWS Simple Workflow might be useful.
- SaaS Provisioning: this component manages the fully automated deployment of resources and represents the cornerstone of elasticity and scalability. CloudFormation is used to define the stack, while OpsWorks, Beanstalk, and ECS are used to deploy components.
- Application Lifecycle Management: the biggest challenge in traditional architectures. Operations need to be transparent and must function with zero downtime as automation layers for continuous integration. CodePipeline, CodeCommit, and CodeDeploy are all powerful management tools.
- SaaS Billing: this component aggregates per-customer metering and rate information. You can use DynamoDB to store bills and aggregated data, and EMR for processing usage info and generate bills.
- SaaS Analytics: the aggregation point for all data sources in the development of a data warehouse. Analytics can provide a useful analysis of app performance and usage that drive decisions.
- SaaS Authentication and Authorization: a single store for all users data, third party SSO, and corporate directories. You could use IAM for policy-based access, KMS for key management, Cognito for mobile and web authentication, Directory Service, and RDS.
- SaaS Monitoring: real-time monitoring and awareness of application health require the highest scale and availability. There are plenty of off-the-shelf solutions if you don’t feel like using Amazon Kinesis and CloudWatch.
- SaaS Metering: this component gives your system the ability to understand and track usage and activity, and support audit requirements for billing. You might use Amazon Lambda to feed a metering queue on SQS.
SaaS best practices
Sajee also provided some best practices for building SaaS solutions:
- Separate the platform from the program. Avoid tight coupling. Applications will change a lot over time, but core services should remain reusable so they can support a whole fleet of SaaS applications.
- Optimize for cost and performance. Go for horizontal scalability at every level and create small parallel resource units that scale more efficiently. Also, use scalable services such as DynamoDB and Aurora.
- Design for multi-multi-tenancy.
- Know your data lifecycle. Value and usage change over time, you should, therefore, leverage efficient storage options.
- Collect everything and learn from it. Reliably collect as many metrics as possible and store them long term. The goal is to know your customers in order to learn and profit through analytics.
Google Cloud Platform Certification: Preparation and Prerequisites
Google Cloud Platform (GCP) has evolved from being a niche player to a serious competitor to Amazon Web Services and Microsoft Azure. In 2019, research firm Gartner placed Google in the Leaders quadrant in its Magic Quadrant for Cloud Infrastructure as a Service for the second consecuti...
New Lab Challenges: Push Your Skills to the Next Level
Build hands-on experience using real accounts on AWS, Azure, Google Cloud Platform, and more Meaningful cloud skills require more than book knowledge. Hands-on experience is required to translate knowledge into real-world results. We see this time and time again in studies about how pe...
New on Cloud Academy: AWS Solution Architect Lab Challenge, Azure Hands-on Labs, Foundation Certificate in Cyber Security, and Much More
Now that Thanksgiving is over and the craziness of Black Friday has died down, it's now time for the busiest season of the year. Whether you're a last-minute shopper or you already have your shopping done, the holidays bring so much more excitement than any other time of year. Since our...
Understanding Enterprise Cloud Migration
What is enterprise cloud migration? Cloud migration is about moving your data, applications, and even infrastructure from your on-premises computers or infrastructure to a virtual pool of on-demand, shared resources that offer compute, storage, and network services at scale. Why d...
6 Reasons Why You Should Get an AWS Certification This Year
In the past decade, the rise of cloud computing has been undeniable. Businesses of all sizes are moving their infrastructure and applications to the cloud. This is partly because the cloud allows businesses and their employees to access important information from just about anywhere. ...
AWS Regions and Availability Zones: The Simplest Explanation You Will Ever Find Around
The basics of AWS Regions and Availability Zones We’re going to treat this article as a sort of AWS 101 — it’ll be a quick primer on AWS Regions and Availability Zones that will be useful for understanding the basics of how AWS infrastructure is organized. We’ll define each section,...
Application Load Balancer vs. Classic Load Balancer
What is an Elastic Load Balancer? This post covers basics of what an Elastic Load Balancer is, and two of its examples: Application Load Balancers and Classic Load Balancers. For additional information — including a comparison that explains Network Load Balancers — check out our post o...
Advantages and Disadvantages of Microservices Architecture
What are microservices? Let's start our discussion by setting a foundation of what microservices are. Microservices are a way of breaking large software projects into loosely coupled modules, which communicate with each other through simple Application Programming Interfaces (APIs). ...
Kubernetes Services: AWS vs. Azure vs. Google Cloud
Kubernetes is a popular open-source container orchestration platform that allows us to deploy and manage multi-container applications at scale. Businesses are rapidly adopting this revolutionary technology to modernize their applications. Cloud service providers — such as Amazon Web Ser...
AWS Internet of Things (IoT): The 3 Services You Need to Know
The Internet of Things (IoT) embeds technology into any physical thing to enable never-before-seen levels of connectivity. IoT is revolutionizing industries and creating many new market opportunities. Cloud services play an important role in enabling deployment of IoT solutions that min...
Which Certifications Should I Get?
As we mentioned in an earlier post, the old AWS slogan, “Cloud is the new normal” is indeed a reality today. Really, cloud has been the new normal for a while now and getting credentials has become an increasingly effective way to quickly showcase your abilities to recruiters and compan...
How to Go Serverless Like a Pro
So, no servers? Yeah, I checked and there are definitely no servers. Well...the cloud service providers do need servers to host and run the code, but we don’t have to worry about it. Which operating system to use, how and when to run the instances, the scalability, and all the arch...