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.
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
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
System View 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
Auth Admin 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