Project Overview
Technologies Used
- Containerization & Orchestration: Docker, Docker Compose
- Single Board Computers: Dozens of Raspberry Pi devices for communication with the server over websockets
- Kubernetes Management: Google Kubernetes Engine (GKE), kubectl, Helm
- Infrastructure as Code: Terraform
- Web Server & Load Balancing: Nginx, GCP
- Caching & Databases: Redis, PostgreSQL
- Backend Development: Node.js, Express.js, TypeScript
- Development Tools & Libraries: Nodemon, Morgan, Winston, Swagger, Jest
Key Features
- Designed and implemented a REST server using Express.js in Node.js, containerized for scalability and easy deployment.
- Collaborated on the creation of a local Raspberry Pi agent for communication with IoT devices under test.
- Developed a real-time communication system with Socket.io managing rooms and bidirectional communication with connected devices.
- Implemented a buffering and queue system using Bullmq to handle busy devices and adapt to limited resource constraints.
- Utilized PostgreSQL for device data persistence and Redis for fast, in-memory data caching.
- Integrated serial and other protocols to facilitate communication with hardware boards connected to the server.
- Deployed the system on Google Cloud Platform (GCP) with configurations for load balancing, security, and scalability, including a load balancer, Network Endpoint Groups (NEG), Identity-Aware Proxy (IAP), and backend services.
- Configured a separate Nginx instance as a reverse proxy for additional security and performance optimization for serverless services in GCP.
Deployment and Management
- Employed Docker and Docker Compose for container management, simplifying development, testing, and production workflows.
- Applied Terraform for infrastructure provisioning, enabling reproducible and scalable cloud environment setups.