A Minimum Viable Product (MVP) in software development is often what we strive for when proving a case for improvement or product. With the movement toward the cloud infrastructure, we should start striving for a Minimum Viable Cloud (MVC). An MVC consists of everything needed to get a cloud environment up and running. The main services of cloud infrastructure are Communication, Application, and Storage. In this blog, we’re going to break down these services in more detail and explain how to make your MVC successful in three of the top cloud providers: Amazon Web Services (AWS), Microsoft Azure, and Google Cloud Platform (GCP).
The Communication layer of cloud infrastructure services starts with external communication or “Front Door” services. There are also communication services that operate between other cloud infrastructures including queue and publish/subscribe model messaging for within the cloud. Most cloud implementations also include a service for managing your Domain Name System (DNS). Another common communication service that most cloud infrastructures include is load balancing services.
The Application layer of cloud includes virtual machines, serverless computing, container services, and other versions of the Platform as a Service (PaaS). Cloud Virtual Machines (VMs) come in all shapes and sizes for different cloud providers and they are often called Infrastructure as a Service (IaaS). Serverless computing services are offered by cloud providers and are a distinctly cloud-based solution that falls in the Software as a Service (SaaS). Container services range from specific Kubernetes services to more general services that support other containerization like Docker. The more generic versions of the application layer are just Platform as a Service.
The Storage layer of the cloud includes database, cache, and file storage. For database storage, there is support for SQL, no SQL, and often a cloud-native database. Cache storage includes cloud-related caching services, including support for Redis. There is also the need for file storage in the cloud to allow the serving of code and website data, among other files.
MVC Requirements for AWS, Azure, and GCP
Amazon Web Services (AWS)
When you look at Amazon Web Services (AWS), you see all of these levels of services to make your MVC successful. Support in the communication area includes these AWS services:
API Gateway – a “Front Door” for publishing APIs to external and internal consumers.
Simple Notification Service (SNS) – a publish/subscribe push implementation often coupled with SQS.
Simple Queue Service (SQS) – a publish/subscribe implementation queue implementation often coupled with SNS.
Route 53 – a service allows you to manage your cloud DNS records.
Elastic Load Balancing (ELB) – a service for allowing load balancing implementations.
The services for supporting the application and container layer of your MVC in AWS are:
Elastic Cloud Computing (EC2) – IaaS service which is used for handling VMs.
Lambda – SaaS for serverless applications.
Amazon Container Service (ECS) – a service for handling Docker containers for microservices.
Elastic Kubernetes Service (EKS) – a service for fully managed Kubernetes.
Elastic Beanstalk – PaaS for managed web applications and services.
The service options in AWS for supporting your database and storage needs include:
DynamoDB – a service for supporting your NoSQL databases.
Relational Database Service (RDS) – a relational database management system service.
Simple Storage Services (S3) – a service that stores files and everything else needed for web applications.
ElastiCache – a service for distributed caching including Redis caching.
A Microsoft Azure MVC will include a selection of these services also. For handling the communication layers in Azure you can use a collection of these services:
API Management – Azure’s version of a “Front Door” service.
Service Bus – a message based publish/subscribe service.
Event Grid – an event-based publish/subscribe service.
Azure DNS – a service for managing your DNS in the cloud.
Load Balancer – a service for load balancing traffic on your TCP and UDP connections.
For the application and container layer in Azure you can look to these services:
Virtual Machine – IaaS service which is used for handling VMs.
Functions – SaaS serverless applications.
Container Instances – a service for managing Docker containers for microservices.
Kubernetes Service (AKS) – the service Azure has for managing Kubernetes.
App Service – PaaS for managed hosting for deploying and scaling your applications.
Azure’s services for the database and storage layer include:
Cosmos DB – a service used for NoSQL databases.
SQL DB – Azure has split coverage of SQL and MySQL relational databases.
MySQL DB – Azure has split coverage of SQL and MySQL relational databases.
Blob Storage – a service for managing the other files and objects you may need for your MVC.
Cache for Redis – it says it on the tin: a service for managing cache for Redis.
Google Cloud Platform (GCP)
Google Cloud Platform also offers an array of services needed for making your cloud MVC. In the communication layer some of the services available are:
Apigee – the service for GCP’s “Front Door”.
Cloud Pub/Sub – a publish/subscribe service.
Cloud DNS – a service for managing cloud DNS.
Network Load Balancing – a service for … you guessed it network load balancing.
In the application and container layer the services in GCP are:
Compute Engine – IaaS for managing your VMs.
Cloud Functions – SaaS serverless applications.
Cloud Run – for managing Docker containers for microservices
Kubernetes Engine (GKE) – the fun part here is that Google manages Kubernetes so the GKE is a really cool service for managing K8s.
App Engine – PaaS for managed hosting for deploying and scaling your applications.
GCP is much more advanced than just your Google Drive shared storage. The services in GCP include:
BigTable – a service for NoSQL databases and management.
Cloud SQL – GCP also separates SQL and other relational databases.
Cloud MemoryStore – a service for other relational databases.
Cloud Storage – a service for most of your other object storage.
Memorystore For Redis – a Redis cache management service.
Monitor Your MVC Infrastructure
All of this discussion about MVC may leave you wondering what you need next for your cloud infrastructure. The answer is a way to monitor and keep track of your MVC infrastructure’s performance. You will also want some amount of customizable alerting to keep you informed of any changes and prevent outages. One platform for doing this is LogicMonitor. Of the services discussed above, LogicMonitor covers all except GCP Apigee, and GCP Cloud DNS. Do not worry though because these services are on our roadmap for coverage.
To summarize, a cloud infrastructure MVC across the main cloud providers is not terribly distinct from standing up your own software MVP except that it lives on the cloud. Once you have the cloud MVC stood up, or even multiples across multiple cloud providers, you will likely want to start monitoring them. A simple solution would be to sign up for LogicMonitor and let the agentless cloud collector start doing its job of monitoring your cloud infrastructure. To get started with a demo of LogicMonitor’s insight into the performance of your environment. Try it free, or book a free demo today.