The push notifications cloud service
Push notifications is a service to centralize cloud-to-device communications so we can control network and battery usage. This Blueprint is about the server component for that service.
Blueprint information
- Status:
- Not started
- Approver:
- None
- Priority:
- Undefined
- Drafter:
- None
- Direction:
- Needs approval
- Assignee:
- Lucio Torre
- Definition:
- New
- Series goal:
- None
- Implementation:
- Unknown
- Milestone target:
- None
- Started by
- Completed by
Related branches
Related bugs
Sprints
Whiteboard
Introduction
Push notifications is a service to centralize cloud-to-device communications so we can control network and battery usage. This Blueprint is about the server component for that service.
Minimum Viable Product
The Development Minimum Viable Product (DevMVP) is the first goal of this project. The DevMVP is a single process minimal service that will implement the protocol in the most minimal way to allow development against it and we can use its test suite to validate the production service.
Testabilty
The project will be tested by continuous integration for development and a series of alarms and instrumentation for production and staging environments.
Development
This service is going to be developed in Go. Although great for this scenario, it also means we need to implement many of the tools and libraries we use for system management and we already have for other languages (e.g. SSO integration, metrics).
Scaling
MVP supports no scaling. With time we replace components with stand alone services that scale elastically (up to limits, see docs). Elastic scaling means servers can be added/removed without manual re balancing. The end product is a fully juju-managed deployment.
Specifications and discussions
Push description:
https:/
Push server side discussion:
https:/
Push Api discussion: https:/
Work Items
Work items for ubuntu-13.12:
Evaluate and define database: DONE
Evaluate and define registry service: DONE
Test Plan Definition: DONE
Work items for ubuntu-14.01:
Define client daemon / PN server protocol (internal): DONE
Dev MVP Server: DONE
Production Rollout (usable, not persistent, not scalable): DONE
Investigate/Setup logging in Go: DONE
Investigate/
Integrate with oopses (oopses is an internal crash data service): DONE
port txstatsd (metrics client) to Go or find alternative: DONE
Integrate with metrics (graphite/ server side service): DONE
Work items for ubuntu-14.02:
Split MVP Server into standalone web and protocol services: DONE
Deploy Database: DONE
Add Message persistence: DONE
SSO Lib for go: DONE
Integrate with SSO: INPROGRESS
Work items for ubuntu-14.03:
Multi server deploys: DONE
Deploy registry: TODO
Integrate device registry: TODO
Work items for ubuntu-14.04:
Load Testing: TODO