-
Notifications
You must be signed in to change notification settings - Fork 22
System Architecture
Martin Bbaale edited this page Sep 20, 2019
·
3 revisions
Welcome to the AirQo-api wiki!
- Clients connect to the app server through their mobile phones. Memory and performance are limited by their hardware.
- We have native apps on both IOS and Android.
- System has a RESTful API that can function with or without UI.
- System supports real time dynamic updates (continuous delivery/integration)
- Manage devices
- Authentication/authorization
- Predictions/forecasts
- Data broker
- Monitoring
- Payments/Incentives
- Notification Service
- Responsiveness/performance
- Secure
- Readability
- Testability
- Quality
- Reliability
- Maintainability
- Client-Server as the main architectural style.
- Server side JS (nodeJS) for small footprint and performance
- Lightweight MVC on the server using Express framework.
- Lightweight MVC on the frontend using Ember/Angular.
- Mobile Applications using React Native/Ionic with the aim of having one codebase (tech stack) for easy maintenance and deployment.
- RESTful API provides core to functionality and reduces coupling between UI and backend.
- Web sockets allow event-based fast dynamic updates
- NoSQL DB to cater for scalability
- Redis DB for caching
- Postgresql to cater for services with transactions
- GCP for cloud services to take care of the DevOps as a way of ensuring that each team member has a manageable workload.
- Micro-service architecture from the beginning. Each service with its own database.
- Event driven approach during development to handle inter process communication.
- Encapsulate data and behavior in models for easy testing and better modularization
- Bridge design pattern to substitute test database for the production database during testing.
- Observer to notify the client for events happening in the back-tier and front-tier.
- Singleton
- Models
- Controllers
- Middlewares