Features
| Pricing | Documentation | Contact | Blog
Proxylity handles network traffic and translates it to AWS API calls to deliver the packet data to your serverless resources. When the rate of incomming packets is high making individual calls for each could become expensive. To solve this, Proxylity supports batching of packets based on count, time and aggregate size. By including multiple packets with each API call the cost can be reduced considerably (the amount depends on the specific AWS service).
The available batching options are:
Option | Description |
---|---|
Time Window | The maximum window of time to accumulate packets before sending a batch to the destination. Adjust this setting to longer periods to increase batch size, or reduce it to improve the latency of responses (if needed). |
Count | The maximum number of packets to accumulate before sending a batch to the destination. For destination services with constraints on batch size (like DDB), adjusting this setting to match may be a cost and performance optimization. |
Size | The maximum size in bytes of packets to accumulate before sending a batch to the destination. For destination services with constraints on payload size (like SNS and StepFunctions), adjust this setting to be less than or equal to the limit. |
Batching is configured for each destination separately, allowing you to balance latency and cost on a per-resource basis. So, for example, you may configure a Lambda function handling requests with a 100ms batching window, but a Firehose receiving log messages with 1000 messages per batch.
Proxylity will use batch APIs where available.CloudWatch Logs, SNS, SQS and DynamoDB all support batch APIs (SendLogEvents, SendMessageBatcgh, PublishBatch and BatchWriteItem, respectively). Keep in mind that the maximum number of operations per batch varies by service. so, for example, if your destination is configured for batching up to 100 items in Proxylity and DynamoDB is the destination service we're delivering to, a batch of 100 items will be broken into 4 calls to the DynamoDB API with 25 packet records each. For SNS it would be 10 packets, etc.
Batches are delivered to services without batch APIs by combining them into a single payload. For example, when delivering to AWS Lambda the batch is provided at the function as a JSON array containing all of the packets in a single execution. Similarly, for Firehose and S3 the items are concatenated with newline delimiters into a single large string for delivery. In such cases, configure the batch size so that the total size never exceeds the service limit (e.g. 256KB for SNS).