Data and Analytics on AWS
Data and analytics on AWS
AWS gives you a lake-first architecture in which storage, catalogue, query and compute are separate services you assemble deliberately. That is more design work than adopting a single suite, and it is the right trade when workloads differ from each other, volumes are large or your applications already run on AWS. We establish the Amazon S3 and catalogue foundation first, then add only the query engines the access patterns actually justify.
Why AWS
When this is the right platform.
- Storage and compute are genuinely separate. Data lands once in Amazon S3 and Athena, Redshift, EMR and OpenSearch each read it with the engine that suits the query, so exploratory work is not billed at warehouse rates.
- Where transactional applications already run on Aurora, RDS or DynamoDB, the ingestion path is short and well understood, and change data capture into the lake is a settled pattern rather than an integration project.
- Engine choice stays open. Batch engineering, ad hoc SQL, streaming and search each have a fit-for-purpose service, which matters when one workload looks nothing like the next.
- Cost scales down as well as up. Athena bills on data scanned and Redshift Serverless bills for the compute it consumes, which suits organisations whose analytics load is spiky rather than constant.
- AWS Lake Formation applies table, column and row-level permissions to the catalogue centrally, so one grant governs Athena, Redshift Spectrum and EMR instead of each engine holding its own rules.
Where it is less suited
We would rather say this now than after a migration.
- You are assembling a platform rather than adopting one. Component choice is an advantage when workloads differ, but it means more design decisions up front and more integration to maintain than a single suite asks for.
- Query cost is a function of data layout. Unpartitioned tables and thousands of small files turn a cheap query into an expensive one, so file format, partitioning and compaction need ongoing attention rather than one-time configuration.
- Permissions can be granted in several places at once through IAM policy, bucket policy and Lake Formation. Unless the model is deliberately centralised, the effective access on a dataset becomes genuinely hard to state with confidence.
- Business-user self-service reporting takes more setup than it does in an estate where a reporting tool is already deployed to every employee, because identity, licensing and rollout all have to be planned rather than inherited.
Business outcomes
What AWS delivers here.
- One governed lake instead of a copy per team
- Analytics, engineering and application teams read the same curated tables through a shared catalogue rather than each keeping a private extract. The measure agreed up front is how many production datasets are served from the catalogue rather than a private bucket or a database copy.
- Query cost tied to what is actually asked
- Finance sees analytics spend split between storage, bytes scanned and warehouse compute, which makes an expensive dashboard both visible and fixable. We agree a monthly cost view alongside the partitioning and file-format work that reduces what each query has to read.
- Operational databases relieved of reporting load
- Application teams stop having month-end reports run against the production Aurora or RDS instance, which removes a recurring cause of contention and slow pages for users. Reporting query load on the operational database is baselined before the change and measured after it.
- Near real-time visibility where it earns its keep
- Streamed events from devices, applications or the warehouse floor reach the lake within minutes and drive exception dashboards, while routine reporting stays on a batch schedule. Latency targets are agreed measure by measure before any streaming is built.
- A credible path off ageing databases
- Legacy on-premises databases move to managed services on a schedule with defined rollback points, using change data capture so cutover does not require a long outage. Success is measured by reconciliation counts and by holding the agreed cutover window.
Common client problems
What we usually hear first.
We have data spread across a dozen S3 buckets and nobody knows which of it is current
We crawl and catalogue the estate, establish which prefixes are actually read by a live workload, and separate curated tables from the raw dumps that have accumulated over the years. Buckets nothing reads are moved to a colder storage class or deleted once the owner signs off.
Our Redshift bill went up sharply and nobody can tell me why
We break the spend down by workload and look for the usual causes: unpartitioned scans, unsorted tables, clusters running through the night and reports doing a full refresh when an incremental one would do. Each fix is quantified so you decide what is worth changing before we change it.
Reporting queries are hitting our production database and slowing the application down
We move reporting off the transactional instance using change data capture into the lake, with a curated layer the reports read instead. The application team gets its headroom back and the reporting team stops negotiating for query windows.
Every team built its own pipeline and now we maintain nine of them
We consolidate onto a shared ingestion and transformation pattern with common orchestration, logging and error handling, then migrate the existing pipelines onto it one at a time. Teams keep ownership of their business logic and stop maintaining their own plumbing.
I cannot answer a simple question about who has access to which dataset
We centralise permissions in AWS Lake Formation so table, column and row-level grants are held once against the catalogue rather than duplicated per engine. Access is granted to roles mapped to identity groups, and the current state can be exported for review at any time.
How we deliver
Our AWS delivery approach.
- 01
Assessment and advisory
The AWS assessment concentrates on what the estate costs to run today and which engines each workload genuinely needs. In our experience most of the saving comes from access patterns and data layout, not from resizing clusters.
- Inventory S3 buckets, prefixes, storage classes and lifecycle rules, and identify data that is stored and paid for but never read.
- Review catalogue coverage, stale table definitions and crawler behaviour against the buckets that are actually in active use.
- Analyse Athena and Redshift query history to find the heaviest queries, the volume of bytes scanned and the specific reports responsible.
- Map source systems including Aurora, RDS, DynamoDB and on-premises databases, recording the change rate and extraction method for each.
- Assess current permissions across IAM, Lake Formation and per-engine grants, and document every dataset governed in more than one place.
- Produce a target architecture and a costed sequence, with the first workload chosen for business value rather than technical convenience.
- 02
Architecture and implementation
We build a lake with clear zones and a catalogue that means something, then add only the engines the workloads justify. The first delivery is a single business domain running end to end in production.
- Establish raw, curated and consumption zones in Amazon S3 with an agreed bucket and prefix convention, lifecycle policies and encryption defaults set at account level.
- Build batch ingestion with AWS Glue and change data capture from operational databases with AWS Database Migration Service, with reconciliation counts on every load.
- Store curated data in an open table format, with partitioning and file sizes chosen from observed query patterns so bytes scanned stay proportionate to the question asked.
- Register everything in the catalogue and expose it through Athena for exploration, Amazon Redshift for modelled reporting and Amazon EMR where Spark is genuinely required.
- Stream event data through Amazon Kinesis or Amazon MSK, choosing between them on existing Kafka skills, ordering and retention requirements rather than on preference.
- Deploy the platform through infrastructure as code across separate development, test and production accounts, so an environment can be rebuilt rather than repaired.
- 03
Security and governance
On AWS the governance question is where permissions live, because the same table can be reached through several engines. We settle that early and keep the answer in one place.
- Centralise table, column and row-level permissions in AWS Lake Formation and remove the duplicate bucket-level grants that quietly bypass it.
- Grant access to IAM roles mapped to identity groups, with no long-lived user keys and no standing administrative access to production data.
- Encrypt data at rest with customer-managed keys and enforce encryption in transit through bucket policy rather than relying on client configuration.
- Publish business context, ownership and subscription-based access through Amazon DataZone, so requesting access becomes a recorded workflow rather than a message to an engineer.
- Enable access logging for S3, Athena and Redshift and route it to the account where the security team already reviews logs.
- Document the control set against the framework the organisation is aligning to, such as the Essential Eight or the Australian Privacy Principles, and record the residual gaps.
- 04
Adoption and enablement
AWS gives teams more choice, and choice becomes sprawl unless someone writes down what to use when. Enablement here is mostly about that decision and about making the catalogue the first place anyone looks.
- Publish a written guide to which engine suits which job, so a new team does not stand up its own cluster by default.
- Train analysts on Amazon Quick and on writing Athena queries that respect partitioning, with the cost of a full scan made explicit in the training.
- Hand over runbooks for pipeline operation, including how to rerun a failed load and how to backfill a date range without duplicating rows.
- Agree the owner of each curated dataset and record it in the catalogue with a plain-language description of what it contains.
- Retire the legacy extracts and reports the new datasets replace, once reconciliation has been signed off by the owner.
- Set up an access request workflow so new consumers are onboarded through a recorded process instead of an ad hoc grant.
- 05
Managed service continuation
Lake platforms degrade through small file accumulation, unpartitioned growth and permissions granted once for a reason nobody now remembers. We stay on to keep the platform in shape.
- Monitor Glue jobs, database migration tasks and streaming consumers, alerting on failure, consumer lag and record counts outside expected ranges.
- Compact small files, review partitioning and refresh table statistics so query performance does not decay as volume grows.
- Report monthly on S3 storage by class, Athena bytes scanned and Redshift compute, with specific recommendations wherever spend grows faster than usage.
- Review Lake Formation grants and IAM role usage on an agreed cycle and remove access that is no longer needed.
- Manage source schema changes and AWS service updates, testing downstream impact in a non-production account before applying them.
- Maintain a prioritised improvement backlog and work through it in agreed increments alongside day-to-day support.
Technology reference
The AWS services we build with.
A reference architecture view of the platform services used in this domain, and what each one does in the design.
Lake storage and cataloguing
Amazon S3The storage layer the whole platform rests on, organised into raw, curated and consumption zones with lifecycle rules that move cold data to cheaper classes automatically.
AWS GlueBatch ingestion and transformation jobs, plus the data catalogue every query engine reads its table definitions from.
AWS Lake FormationCentral permission management for the catalogue, so table, column and row-level access is granted once and honoured by each engine that reads it.
Ingestion and streaming
AWS Database Migration ServiceInitial load and ongoing change data capture from operational and on-premises databases into the lake, which is what gets reporting off the transactional instance.
Amazon KinesisManaged ingestion for telemetry and application event streams where the team has no appetite for operating Kafka.
Amazon MSKManaged Kafka where the organisation already has Kafka skills, existing producers, or ordering and retention requirements that suit it.
Query and processing engines
Amazon AthenaServerless SQL over the lake for exploration, ad hoc analysis and the reporting that does not justify a warehouse, billed on data scanned.
Amazon RedshiftThe modelled warehouse layer for finance and operational reporting that needs predictable performance under concurrent use.
Amazon EMRManaged Spark for the heavy transformation and large-scale processing that is genuinely too big or too complex for a Glue job.
Amazon OpenSearch ServiceSearch and log analytics where people need to find individual records by text or investigate operational events rather than aggregate them.
Operational data sources
Amazon AuroraTransactional store behind line-of-business applications, read into the lake through change data capture rather than queried directly by reports.
Amazon RDSManaged relational source for existing SQL Server, PostgreSQL or MySQL workloads that feed the analytics estate.
Amazon DynamoDBHigh-throughput operational data source, exported into the lake for analysis instead of being scanned by reporting queries.
Consumption and business catalogue
Amazon QuickThe dashboard and reporting layer for business users, built over curated datasets rather than direct queries against raw files.
Amazon DataZoneBusiness-facing catalogue and access workflow, giving each dataset an owner, a description and a recorded subscription request path.
Product names and icons are trademarks of Microsoft and Amazon Web Services, reproduced unmodified from their official architecture icon libraries to identify the technologies used in these architectures. Their presence does not indicate partnership, certification or endorsement by either vendor.
Related industries
Where this work has the most leverage.
Logistics and Warehousing
Shipment and document automation, proof-of-delivery processing and exception dashboards that let a small team run a large network.
Manufacturing and Distribution
Demand and inventory intelligence, production analytics and supplier automation built on data your planners already trust.
Healthcare and Community Services
Administrative automation, policy search, workforce analytics and privacy uplift for healthcare and community providers, with clinical decisions left entirely to clinicians.
Free discovery workshop
Start with a data and analytics discovery workshop.
Bring one challenge. We will assess whether AWS is the right platform for it before recommending anything.