Started as backend-only software development for IoT smart curtains control devices, the project eventually turned into a comprehensive solution. The system includes device control software, highly optimized AWS-based cloud infrastructure, as well as the mobile app for remote control.
Efforts: 3,000 man-hours
Duration: 14 months
Team: 1 back-end, 1 front-end, 1 React Native, 1 embedded
Technologies: PHP (Laravel), AWS, React Native, Angular
1. Curtains control. The system is aimed at controlling curtains automatically based on different patterns and parameters. This means it could open or close curtains at a specific moment. At first glance, it looks quite simple, but the devil is in the details.
- Remote control using the mobile app. The mobile app helps users to control their curtains remotely. It is possible to connect several different devices in one app and set them separately from each other.Sunrise/sunset-based pattern and others.
- The most interesting pattern is made in accordance with the sunrise/sunset. The system automatically opens and closes curtains evaluating the time of the sunrise and the sunset for a certain location and date. Other patterns include opening and closing at a special time, combining with the alarm clock, etc.
2. Automatic deployment and scaling. When the system was initially launched, there were just several hundreds of separate devices connected. For now, the number of devices has risen manifold, and there is absolutely no need for any interventions of the development team.
3. Highly optimized AWS usage. The software architecture is based on Kubernetes technology and is hosted on Amazon Elastic Kubernetes Service (EKS) specialized cloud hosting. The price of each Instance here is comparatively high. Knowing that our team had found an original way to cut spending drastically.
- The approach is based on the usage of Spot Instances rather than the ordinary ones. The price of ordinary Instances per month is fixed and known. But you can also rent Instances that are dormant at this moment with a significant discount. The difference is that you can be kicked from your Instance every moment the other client rents it on a regular basis.
- The automatic deployment makes it possible to transfer the system to any other Instance in a minute or two. So, Amazon always warns clients that the selected dormant Instance will be occupied in three minutes. It gives the system enough time to be automatically redeployed to another dormant Instance.
4. Further cloud usage optimization. That wasn't the only optimization our team made on cloud usage. The price per Instance is tied and fixed on the number of requests it could process. So, the fewer requests one IoT device sends per month, the more devices could be hosted at one Instance.
- Shortly after the first launch, we found that the clients send too many status requests. Having cached the statuses for just two hours helped to decrease the number of requests drastically. The caches reset once something is changed in the device. Finally, clients get actual info with less server load.
5. Integrations with third-party Smart Home software. The system alone looks too special to be self-sufficient. The team developed API and integrated it with different popular Smart Home Automation software, like openHAB, Domoticz, majorDoMo, etc.
1. The AWS cloud infrastructure cost per device is currently 3 times lower than the initial was.
2. From the launch, there was no need for any interventions in the auto-scaling process.
3. The customer is highly satisfied with the collaboration and willing to continue it with other IT-related needs.