Our mobile development faces the following challenges: the rapid development cycles and maintenance of an ever evolving complex editor UI, real time rendering requirement for computationally heavy video processing scenarios, and cross-platform development. Due to the rare nature of our product needs, often times it is not possible to find an existing solution and we implement our own solutions by utilizing the latest advances in the native iOS/Android development platforms. In instances where there are heavy overlaps between iOS and Android implementations, we make use of sharing the same C++ code to increase the development speed and reduce the maintenance costs.
Our machine learning team follows the latest developments, especially in the field of deep learning and working on difficult algorithms for our products to utilize. Another one of our challenges of the team is to generate models that can run efficiently on mobile platforms. Some of the topics that the team has been working on are convolutional neural networks, supervised & unsupervised learning, mobile friendly encoder-decoder architectures, and GAN-based approaches.
Our backend has the critical responsibility of managing all of the data and traffic of our products that are used by millions of users. Therefore, we make use of many modern cloud technologies. To manage high and dynamic traffic, we efficiently implement auto-scaling, load balancing, CDN, queues, and caches. We implement different storage schemes for various cases, such as main databases, log data, analytics data, and cache data. For all of the systems implemented, it is crucial to monitor and handle errors efficiently.
As our products are used by millions of people, it is very important to adopt high quality testing setups. In addition to manual testing and external beta testing, we make use of automated tests during the internal development phases, such as when a pull request is triggered. One of the automated tests that we have implemented is the UI testing of important parts of our products.Another important automated test is validating the integrity and performance of our video engine’s output production as the development continues.