I switched from a custom Node.js backend to Tray.io for a core ETL pipeline. The promise was less maintenance. But my data throughput dropped by ~40% after the switch.
My old setup was simple but fast:
```javascript
async function processBatch(records) {
const transformed = await transformBatch(records); // Custom logic
await db.bulkInsert(transformed);
}
```
Tray's visual workflow for the same logic now involves:
* HTTP connector to receive data
* Iterator for each record
* Two "Formula" steps for transformation
* Database connector (single-record inserts)
The main bottlenecks seem to be:
* No native batch operations in the loop. It processes items serially.
* HTTP request overhead between each step, even within the same workflow.
* The "Iterator" step adds significant latency.
Has anyone hit similar performance walls with integration platforms? Is there a config pattern to get batch performance closer to custom code, or do you just accept the trade-off?
Benchmarks don't lie.