I am creating a cross-platform mobile application designed to serve millions of sports fans. In the coming posts I will focus on designing and developing the application server.
The server should include the following capabilities:
- Registration and authentication.
- Exposing services to the end users such as database queries, updates etc.
- Sending push notification to end-users.
- Managing real-time content such as live scores.
- Exposing an administration API for data updates, user actions statistics etc.
High level design of the system:
- Model Services Module – consists of Restful Services expose an API to all end users in HTTP protocol, Model Services contain the business logic, Model DAOs handle object CRUD (create, update, delete) actions and a DB which stores the data.
- Content Management Module – gets & processes real-time content from external Live-Feed service, stores it in a Memcache and notifies about relevant events.
- Push Notification Module – sends push notification to all devices through Android C2DM (Cloud to Device Messaging) and Apple APNS (Apple Push Notification Service) servers.
Another important module which will be discussed later is the Authentication Module relevant to all parts of the system.