AWS Services Spectrum — From Self Managed to Fully Managed, and Serverless
TL;DR
- Fully-managed: AWS handles patching, networking, security, etc. I just need to adjust the resources (config, CPU, memory, etc.).
- Serverless: I don't even need to adjust resources; AWS handles auto-scaling for me.
- AND All Serverless services are ALSO Fully-managed.
The key difference between these two is "whether you need to adjust the resources used."
Which services are Serverless?
This part has a definitive answer, as AWS officially states it clearly LOL
https://aws.amazon.com/serverless/?nc1=h_ls
Compute
- AWS Lambda
- AWS Fargate
Application Integration
- Amazon EventBridge
- AWS Step Functions
- AWS Step SQS
- AWS Step SNS
- Amazon API Gateway
- AWS AppSync
Storage
- Amazon S3
- Amazon EFS
- Amazon DynamoDB
- Amazon RDS Proxy
- However, Amazon RDS itself is not serverless
- Amazon RDS Proxy is an auxiliary service used to optimize connections between Amazon RDS instances, it's an "add-on"
- Amazon Aurora Serverless
- Amazon Redshift Serverless
- Amazon Neptune Serverless
- Amazon OpenSearch Serverless
- Amazon ElasticCache Serverless
Some serverless services (e.g. Amazon Redshift Serverless, Amazon ElasticCache Serverless) are based on existing services, customized for users who can't accurately predict their needs. This allows users to focus on developing their core business without worrying too much about precise resource management.
So the term "serverless" inherently includes the concept of auto-scaling.
Fully Managed Services
https://aws.amazon.com/managed-services/
I initially thought about listing the "managed" services one by one, but then realized it's simpler to list those that aren't managed.
The list below focuses on commonly encountered services. AI, 5G, and IoT services are not included as they're beyond my typical usage. I suggest not paying too much attention to the list itself, but rather focusing on the conclusions and observations that follow.
Before you scroll down the long list, remember: EC2 and services running on EC2 are not fully managed.
Analytics
Almost all are managed
- Amazon Athena
- Amazon QuickSight
- Amazon Kinesis Data Firehose
- Amazon Kinesis Data Analytics
- AWS Glue
- Amazon CloudSearch
- Amazon OpenSearch Service (formerly Amazon Elasticsearch Service)
- Amazon Redshift
- Amazon Managed Streaming for Apache Kafka (Amazon MSK)
- Amazon QuickSight Pixel-perfect Reports
- AWS Lake Formation
Partially Managed
- Amazon EMR (Elastic MapReduce)
- AWS manages the infrastructure, but users manage the Hadoop ecosystem
- Amazon Kinesis Data Streams
- Requires some configuration and management of shards
Self-Managed
- Self-hosted analytics tools on EC2
- e.g., Hadoop, Spark, or other analytics software installed on EC2 instances
Compute
- AWS Lambda
- AWS Fargate
- Amazon Lightsail
- AWS Batch
- Amazon ECS (Elastic Container Service)
- Amazon EKS (Elastic Kubernetes Service) - managed control plane
- App Runner
Partially Managed
- Outposts: hybrid cloud and on-premise
- Amazon EC2 (Elastic Compute Cloud)
- AWS manages the underlying infrastructure, but users manage the instances
- Amazon ECR (Elastic Container Registry)
- Managed container image registry, but users manage images
Database
Almost all are managed
- Amazon RDS
- Amazon Redshift
- Amazon Aurora
- Amazon DynamoDB (key-value NoSQL)
- Amazon DocumentDB (MongoDB NoSQL)
- Amazon Keyspace (Apache Cassandra NoSQL)
- Amazon MemoryDB for Redis
- Amazon Neptune
- Amazon Timestream
- Amazon QLDB (Quantum Ledger Database)
Partially Managed
- Amazon ElasticCache
- Managed Redis and Memcached
- Requires some configuration and scaling decisions
- Amazon RDS Custom
- Provides OS and database customization access
- Requires more hands-on management than standard RDS
Storage
Almost all are managed
- Amazon S3 (Simple Storage Service)
- Amazon EFS (Elastic File System)
- Amazon FSx (for Windows File Server, Lustre, NetApp ONTAP, OpenZFS)
- Amazon S3 Glacier
- AWS Backup
- AWS Storage Gateway
Partially Managed
- Amazon EBS (Elastic Block Store): Requires some management for snapshots, lifecycle policies
Self-Managed
- EC2 Instance Store: Ephemeral storage tied to EC2 instances
Application Integration
- Amazon SQS
- Amazon SNS
- Amazon MQ
- Amazon API Gateway
- AWS Step Functions
- Amazon EventBridge
Networking & Content Delivery
- Amazon CloudFront
- AWS Global Accelerator
Security, Identity, & Compliance
- IAM
- Cognito
- AWS WAF (Web Application Firewall)
- Amazon GuardDuty
- KMS
Management & Governance
Almost all are managed
- Amazon CloudWatch
- AWS CloudTrail
- AWS Config
Partially Managed
- AWS Config - audit AWS resources
- AWS Personal Health Dashboard - Real-time monitoring of the health of AWS resources
Self-Managed
- AWS CloudFormation - we must define and manage the infrastructure as code.
- AWS OpsWorks - Based on Chef and Puppet, ensures deployment stages in CI/CD processes
For example, if nginx configuration is updated, Chef can restart nginx
Developer Tools
Almost all are managed
- AWS CodeBuild - CI
- AWS CodePipeline - CD
- AWS CodeDeploy - Deployment
- AWS CodeStar - like GitHub, Bitbucket
- AWS Cloud9 - IDE
- AWS CodeArtifact - like NuGet for .NET applications
- AWS CodeGuru - check if your code is good or bad
- AWS X-Ray
Self-Managed
- AWS Command Line Interface
- AWS Tools for PowerShell
I think we can look at this conceptually. The further towards the "managed" end of the spectrum, the less day-to-day operations and decisions developers need to make.
Perhaps the spectrum can be divided into fully managed, highly managed (but requiring configuration), moderately managed (requiring more configuration and decisions), and almost self-managed, like renting an EC2 and doing most things yourself, just with the machine not physically present but in the cloud.
RDS backups have two types: Automated Backups and Manual Snapshots. The former is intuitive and clearly falls under managed services. But what about Manual Snapshots? We clearly need to intervene, but from an overall perspective, it's still appropriate to classify RDS as fully managed.
Another example is VPC. Configuring VPC, Subnets, CIDR, Security Groups, Internet Gateway intuitively feels like self-management. But what about VPC Flow logs? It's a feature under VPC, but AWS handles it. So we can't generalize that all features under a self-managed service are also self-managed.
Serverless + Fully Managed
We can confidently say that serverless services are always fully managed.
Compute
- AWS Lambda
- AWS Fargate
Storage
- Amazon S3
- Amazon EFS
- Amazon DynamoDB
Application Integration
- Amazon EventBridge
- AWS Step Functions
- AWS Step SQS
- AWS Step SNS
- Amazon API Gateway
- AWS AppSync
References
https://www.linkedin.com/pulse/aws-fully-managed-services-vs-unmanaged-key-differences-best-jnvjc/
https://mikatour.com.tw/post/aws-fully-managed-services-vs-unmanaged
https://medium.com/@naren3883/choosing-between-aws-redshift-vs-aws-redshift-serverless-b2b5aee83215