# APIs, queues and events: tools in this layer of The Stack

> How requests and events move. 12 tools, from Nicolas Dao's defaults to what he would never use (Cloudless Labs, Sydney).

- Web page: https://cloudlesslabs.com/stack/layers/api-events/

## My default

- [Amazon Data Firehose](https://cloudlesslabs.com/stack/aws-firehose/index.md), Managed delivery of records into S3 (and other sinks): The cheapest way to land a stream of records in S3. No servers, no consumers to write, and about $0.04/GB in Sydney.
- [Amazon EventBridge](https://cloudlesslabs.com/stack/aws-eventbridge/index.md), Events and schedules: The event bus and scheduler I use all the time.
- [Amazon SQS](https://cloudlesslabs.com/stack/aws-sqs/index.md), Queues and back-pressure: The queue in front of Lambda. Natural back-pressure, nearly free when batched.
- [Lambda function URLs](https://cloudlesslabs.com/stack/aws-lambda-function-urls/index.md), HTTP front door for Lambda: My favourite way to put Lambda on the internet. Every MVP starts here.

## Use when it fits

- [Amazon Kinesis](https://cloudlesslabs.com/stack/aws-kinesis/index.md), High-throughput streaming: For genuinely huge streams. It gets expensive fast.
- [Amazon SNS](https://cloudlesslabs.com/stack/aws-sns/index.md), Pub/sub fan-out: Fan-out from one publisher to many subscribers. Not my ingestion path at high volume.
- [API Gateway](https://cloudlesslabs.com/stack/aws-api-gateway/index.md), Managed API front door: Useful in a lot of cases, just not by default. Start on a function URL and add API Gateway the day you need what only it does.
- [AWS IoT Core](https://cloudlesslabs.com/stack/aws-iot-core/index.md) (Proposed), Device ingestion: The cheapest AWS front door for device data, when the devices speak MQTT.

## Watching

- [Lambda durable functions](https://cloudlesslabs.com/stack/aws-lambda-durable-functions/index.md) (Proposed), Durable multi-step jobs: Per-step retries in plain code, inside Lambda. A candidate fix for hand-tuned SQS retry pain.

## Skip

- [Cloudflare Queues](https://cloudlesslabs.com/stack/cloudflare-queues/index.md) (Proposed), Queues between Workers: Fine when producer and consumer are both Workers. Inside AWS, SQS wins. Instead: SQS: FIFO, IAM and batched Lambda consumers, inside AWS where the work is.

## Never

- [AWS Step Functions](https://cloudlesslabs.com/stack/aws-step-functions/index.md): Over-engineered. I've never seen the need in production. Instead: Plain code. SQS for simple async work; Lambda durable functions for multi-step jobs.
- [GraphQL and AppSync](https://cloudlesslabs.com/stack/aws-appsync/index.md): Over-engineering. Schema maintenance isn't worth it; plain web APIs are enough. Instead: Plain HTTP APIs on Lambda function URLs, and Durable Objects for real-time.

## Related

- [An API for my app](https://cloudlesslabs.com/stack/use-cases/api/index.md): a job that picks or avoids tools from this layer
- [Something live that many people watch at once](https://cloudlesslabs.com/stack/use-cases/realtime/index.md): a job that picks or avoids tools from this layer
- [A traffic spike I can see coming](https://cloudlesslabs.com/stack/use-cases/flash-sale/index.md): a job that picks or avoids tools from this layer
- [Background jobs and retries](https://cloudlesslabs.com/stack/use-cases/background/index.md): a job that picks or avoids tools from this layer
- [Event-driven plumbing](https://cloudlesslabs.com/stack/use-cases/events/index.md): a job that picks or avoids tools from this layer
- [A job that runs for hours](https://cloudlesslabs.com/stack/use-cases/long-job/index.md): a job that picks or avoids tools from this layer
- [Device and IoT data](https://cloudlesslabs.com/stack/use-cases/iot/index.md): a job that picks or avoids tools from this layer
- [A data lake](https://cloudlesslabs.com/stack/use-cases/data-lake/index.md): a job that picks or avoids tools from this layer
- [Logs without a shocking bill](https://cloudlesslabs.com/stack/use-cases/logging/index.md): a job that picks or avoids tools from this layer
- [Every layer, use case and tool in one file](https://cloudlesslabs.com/stack/brief.md)
- [Map of every Markdown file on cloudlesslabs.com, with what each one answers](https://ask.cloudlesslabs.com)
