Problem
Ryanair runs one of the busiest flight operations in the world, generating a constant, high-volume stream of data. The teams that depend on it, from operations to analytics to reporting, can only be as good as the data they receive, and the business problem was trust: records were being silently dropped when something upstream misbehaved, so the numbers people planned on couldn't be relied on. The need was a pipeline that landed data where it should, on time, with failures handled rather than lost.
Process
The decision that set the design was to treat failure as the normal case, not the exception. At airline volumes something is always failing: a malformed record, a slow source, a transient error. So rather than optimise the happy path and bolt on error handling, we built the pipeline so every failure was expected, visible and recoverable. That reframing, reliability first, throughput second, is what made the data trustworthy.
I worked on the pipeline as an AWS engineer, with reliability and cost as the headline goals.
- Event-driven, serverless ingestion. Data arrived and was processed through a serverless pipeline, so throughput scaled with load and cost tracked usage rather than idle capacity.
- Orchestration with Step Functions. Multi-stage flows were modelled as state machines so each step was observable, retryable and recoverable, and a failure in one stage didn't take down the run or lose data.
- Durable staging on S3. S3 as the durable backbone for raw and transformed data, with clear zones so reprocessing was always possible from a known-good source.
- Operational visibility. Metrics, logging and alarms so the team saw the pipeline's health and got paged on real problems, not noise.
Outcome
The pipeline delivered operational data reliably at airline scale, so downstream teams finally had numbers they could trust. Records that once vanished were now quarantined and recoverable rather than silently dropped. Its serverless, event-driven design absorbed variable load without over-provisioning, so infrastructure cost tracked demand instead of paying for idle servers in the quiet hours.
"We stopped second-guessing the data. When something upstream breaks, we know about it and nothing goes missing."
Head of Data & Analytics
Architecture

For engineersTechnical Deep DiveExpand
Designing for failure, not just throughput
At airline data volumes, something is always failing: a malformed record, a slow source, a transient service error. The pipeline was built so those are expected events: Step Functions state machines made each stage independently retryable with backoff, bad records were quarantined rather than dropped, and every run was reprocessable from durable S3 staging. Trustworthy data means the pipeline can recover to a correct state, not just move fast on the happy path.
Serverless for a spiky, uneven load
Operational data isn't a steady trickle; it comes in bursts. A serverless, event-driven design meant capacity followed demand automatically, so peaks were handled without paying for idle servers in the quiet hours. The cost profile matched the workload.
Trade-offs
- Serverless limits. Lambda has execution and payload limits; large transforms had to be chunked and orchestrated rather than run monolithically. The orchestration overhead bought resilience and observability in return.
- Exactly-once is hard. Distributed pipelines lean toward at-least-once delivery. We designed downstream steps to be idempotent so retries didn't corrupt the landed data.
