AWS is huge. Over 200 services. If you're trying to understand what's available, it's overwhelming. The key is knowing that there's probably a service for whatever you're building, and figuring out which one makes sense for your constraints.

Compute options solve different problems

EC2 is virtual machines. You control everything, which means you manage everything. Lambda is serverless, you pay per invocation, good for event-driven work. ECS and EKS run containers, sitting between EC2 and Lambda in terms of control and responsibility. Lightsail is simplified EC2 for people who want less complexity. Pick based on your tolerance for operational work and your usage patterns.

Storage is more than just S3

S3 is object storage, used for everything from backups to static websites. EBS is block storage for EC2 instances. EFS is managed file storage. DynamoDB is key-value. RDS is managed relational databases. Choose based on access patterns and consistency requirements, not just convenience.

Networking has real gotchas

VPCs isolate your infrastructure. Security groups are your firewall. NACLs add another layer of network control. VPN and Direct Connect give you private connections. If your application is slow or unreliable, network misconfiguration is often the culprit. Get this right first.

Database choice has long-term consequences

RDS for relational databases, DynamoDB for key-value, ElastiCache for caching, DocumentDB for document stores. Each has different scaling characteristics and costs. Migrating between them is painful. Think through your access patterns before you commit.

Cost management is not optional

AWS is pay-as-you-go, which is good for flexibility and bad for surprise bills. Reserved instances, savings plans, careful architecture, resource tagging - these aren't nice to have, they're necessary. If you're not monitoring costs, you're leaving money on the table.