Phase 1: Benfish Revelry Application
Problem: The goal was to build a food delivery service application with a delivery partner app, an admin panel, and a website, ensuring a seamless user experience and efficient backend management.
Solution:
- Benfish Revelry Application:A food delivery service application developed in Java using the MVVM design pattern.
Features:
- User-friendly interface for customers to browse and order food.
- Real-time order tracking.
- Integration with a delivery partner app.
- Backend:
- Admin panel and website built in PHP for managing orders, users, and other administrative tasks.
- Database management using Room for efficient local data storage and synchronization.
Technology/Tools Used
Phase 2: Infrastructure Upgrade and New System Design
Problem: The existing architecture had a single instance (t2 2x large) running both MySQL and Apache servers, which led to high costs and slow performance due to the generated logs and service loads.
Solution:
- Infrastructure Upgrade
Server Instance Separation:
- Created two t3 small instances to balance the load, mapping load balancers to the domain.
- For MySQL, set up a t3 small instance in AWS RDS, where AWS managed logs and backups, reducing overhead.
- Implemented log rotation for Apache and utilized AWS S3 for log and image storage, resulting in shared space for instances at a lower cost.
- Microservices Module
Modular Architecture:
- Developed separate modules for products, services, and notification services.
- Ensured loose coupling between modules with separate tables.
- REST APIs:
- Designed REST APIs using Kotlin Multi Platform.
- Created Model, View, and Rest Controllers for API management.
- APIs integrated with the existing website and applications.
- Control Panel:
- Migrated control panels to Kotlin desktop.
- Implemented caching for orders to prevent full module reloads, only updating from the last synced time.
- BAM (Benfish Async Messaging)
Messaging System:
- Built a half-duplex Server-Sent Events (SSE) system for order status and delivery tracking using Java Maven.
- Enhanced real-time communication and tracking for orders.