Build1 distinct publisher3 min readUpdated
AWS published the architecture behind Jumio's real-time feature store. Three of the four problems it starts from are about duplicated definitions and hand-copied code, not milliseconds.
The Engineer · Build desk
Compiled by The EngineerSomething wrong?How this is made
AWS has published the architecture behind the real-time feature store used by Jumio, an identity verification provider that helps businesses detect fraud and build digital trust, presenting it as a pattern for ML use cases that need features served in under 100 milliseconds [1] [2]. What makes it worth reading is the problem list that comes before the diagram: of the four failures named, only one is about speed [3].
According to the AWS post, feature engineering and deployment at Jumio were fragmented and inefficient before the rebuild [4]. Teams each maintained their own offline feature stores, which produced redundant data and inconsistent feature definitions [5]. Features trained offline were then manually re-implemented in production code in Java or Python, which AWS says increased the risk of mismatches and bugs [6]. That is training and serving skew manufactured by a deployment process, and no amount of in-memory storage fixes it. The third non-latency problem is time itself: certain event types arrive with delays or in irregular patterns, appearing shortly after initial activity or several weeks later because of extended review processes [7]. The fourth is the familiar one, fraud detection needing immediate access to features, including outputs from upstream models [8].
The stated requirements track those problems rather than the marketing surface. The platform has to scale to high request volumes and a growing feature catalog while allowing schemas to evolve without disrupting existing workflows [9]. It has to support conditional feature creation and selection based on event times [10]. It has to serve fraud detection features in under 100 milliseconds [11]. The offline store has to ingest in near real time so that retraining, debugging, evaluation and monitoring can work from backfilled history [12]. And it has to let cross-functional teams introduce features independently, with minimal coordination overhead [13].
The build is streaming-first and deployed in three AWS Regions: us-east-1, eu-central-1 and ap-southeast-1 [14]. Events land in Amazon Kinesis Data Streams, Apache Flink applications on Amazon Managed Service for Apache Flink process and enrich them in flight, and the resulting features are written directly to Amazon SageMaker Feature Store, which holds them in memory for inference reads [15] [16]. A parallel path sends events through Amazon Data Firehose to Amazon S3, where an S3 event notification triggers Amazon EMR for the heavier transformations; EMR writes results into SageMaker Feature Store as cold data and into an Apache Iceberg table that serves as the offline store [17] [18].
Two consequences follow from that shape. Because Flink does the computation at ingestion, the sub-100ms path at inference is a lookup, not a calculation, which is why the latency requirement is the tractable half of the problem [19]. And the online store has two writers, the Flink hot path and the EMR cold path, so online and offline agreement rests on both paths producing the same values rather than on one shared implementation [20]. The hand-copied Java or Python has been removed, but the risk it represented moves into keeping two pipelines semantically identical.
Watch for whether schema evolution actually happens without disrupting live workflows [9], since three regions means three copies of every definition [14]. Watch how the EMR path reconciles events that arrive weeks late against features already served [7] [17]. And note this is a vendor-authored case study that promises design trade-offs and their impact on Jumio's workload [2]; the trade-offs are where the number gets tested.
Follow any of these and your For You feed starts watching them — no settings page required.
Ranked by verification strength, evidence, and original report placement.
Real-time ingestion flows through Amazon Kinesis Data Streams, where Apache Flink applications pick up incoming events and process and enrich the data in-flight before writing features directly to Amazon SageMaker Feature Store; the post names Amazon Managed Service for Apache Flink among the services used.
In the data flow, events enter through Kinesis, Flink processes the events to features, Amazon SageMaker Feature Store stores features in-memory, and ML models retrieve features for inference.
The EMR process populates the resulting processed features into Amazon SageMaker Feature Store as cold data and into an Apache Iceberg table, which serves as the offline feature store.
Jumio is an identity verification provider that helps businesses detect fraud and build digital trust, and its ML models needed a real-time feature store to provide these services in real time.
The AWS post uses Jumio's case study to show how to build a real-time feature store, states the pattern applies to ML use cases requiring sub-100ms latency for real-time predictions, and says it shows the architecture, the design trade-offs, and their impact on Jumio's workload.
Before building the real-time feature store, feature engineering and deployment at Jumio were often fragmented and inefficient.
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Detailed first-party architecture, no measurements
The single source is unusually specific about components, data flow, regions and requirements, and it comes from the parties who built the system, which makes the architectural facts strong. But every performance statement is a requirement or target rather than a result: there is no reported latency distribution, throughput, cost, or before/after comparison, and no independent publisher corroborates any of it.
One named production deployment, unquantified
There is a real, named production user (Jumio) running the design across three AWS Regions with both online and offline stores in service, which is more than a demo. Adoption stays low-to-moderate because it is a single organisation, disclosed by its cloud vendor, with no volumes, feature counts, request rates or number of models served.
Speed headline, consistency substance
The post is framed around sub-100ms real-time prediction, but three of the four problems it starts from are duplication, hand re-implementation and late-arriving events - consistency and process issues - and the latency number is never demonstrated. Modestly positive rather than strongly overstated, because the architecture disclosure itself is detailed and honest about the two-path design; the overstatement is in emphasis and in an unverified performance target.
Vendor blog promoting its own service chain
The only publisher is the cloud provider whose managed services are the subject: the post names SageMaker Feature Store, Managed Service for Apache Flink, Kinesis Data Streams, Data Firehose, S3, EMR and EMR Serverless, Lambda, ElastiCache for Valkey and Athena, uses first-person 'we' for the deployment, and the customer benefits reputationally from a fraud-detection success story. No alternatives or trade-off costs against non-AWS options are weighed.
Architecture trustworthy, outcomes unverified
Confidence is moderate: the structural claims come straight from the implementers and are internally consistent, and the derived readings follow from the text. It is capped by single-publisher, single-item coverage from an interested vendor, by a truncated monitoring section, and by the absence of any measured result to check the central latency requirement against.
build
Iceberg votes to forbid new equality deletes in V4, and Parquet 1.18.0 lands with two corruption bugs1 distinct publisher
build
S3 annotations move the label without moving the bytes, and checksums cannot see it1 distinct publisher
build
AWS puts a number on agent displacement: IaC authoring from 3-4 weeks to minutes1 distinct publisher
build
Basic Auth becomes a gateway problem: AgentCore's Lambda interceptor keeps the password away from the model1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
1 article · August 18, 2026