ONS Portal

Transforming legacy monolithic infrastructure into high-performance, secure microservices for the Office of National Statistics.

Innovation Strategy

Monolith to Microservices Transition

The aim of this project was to convert a legacy Java webserver into a modern microservices framework. By leveraging Python Django and Flask, Noisy Atom architected a system capable of handling complex national data infrastructure with improved scalability and security.

Cloud FoundryDockerDjangoFlask
Monolith to Microservices Transition

Project Highlights

The Implementation

Rapid Prototyping

Deployed initial Python Flask components in early sprints, enabling high-impact ONS "Show and Tell" sessions.

BDD Verification

Instigated Behavior-Driven Development (BDD) testing for the first beta microservice using Python Bamboo.

Open Source Evolution

Enhanced and forked a professional Django OAuth2 server, tailoring it for the specific security needs of ONS digital.

Core Architecture

Deep Dive

Security Layer

OAuth2 Integration

The system utilized a Flask-based UI with a requirement for a robust, token-based authentication framework. Noisy Atom adapted an outstanding Django OAuth2 implementation, focusing on a headless service architecture that exposes secure REST interfaces for cross-microservice communication.

View Implementation
OAuth2 Integration
System View
Access Control

Granular Administration

Beyond the standard OAuth2 specification, ONS required comprehensive user management. Noisy Atom built a custom administration system with a dedicated REST endpoint, allowing secure control over user provisioning while utilizing advanced "client credentials" grants for internal system authorization.

  • Dynamic User Provisioning
  • REST-based Management API
Granular Administration
Auth Admin
Scalability

Scopes & Flexibility

The implementation allows for precisely defined 'scopes', enabling administrators to pre-provision access for specific microservices to features or data on the private network. This provided the necessary flexibility for complex internal communications.

Future Roadmap

  • • Per-user defined scopes
  • • JWT & Opaque token encryption
  • • Python 3 full compatibility
Scopes & Flexibility