@jialin.huang
FRONT-ENDBACK-ENDNETWORK, HTTPOS, COMPUTERCLOUD, AWS, Docker
To live is to risk it all Otherwise you are just an inert chunk of randomly assembled molecules drifting wherever the Universe blows you

© 2024 jialin00.com

Original content since 2022

back
RSS

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

  1. Amazon EMR (Elastic MapReduce)
    • AWS manages the infrastructure, but users manage the Hadoop ecosystem
  1. Amazon Kinesis Data Streams
    • Requires some configuration and management of shards

Self-Managed

  1. 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

  1. AWS Config - audit AWS resources
  1. 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

EOF