Projects

Social network for finding, storing and sharing music

Type Mobile application, Web application
TECHNOLOGIES Android (Android SDK, Android Studio, DynamoDB, ElasticSearch, Google Guice, Gradle, Haskell, Hazelcast, iTunes, Java, Kurento iOS, Node.JS, Objective C, OSX, PostgreSQL, PubNub, Spring, SQLite, WebRTC, Windows
AREAS OF EXPERTISE High load, data mining, multithreading, ETL, RDBMS, NoSQL, WebRTC, Sending PUSH notifications, audio playback, custom controls, integration with site API and third parties' service API, asynchronous networking, storage settings, sharing in social networks, working with camera, incremental synchronization
QA TOOLS Apache JMeter, Blazemeter, Stack Driver, Graphana, Crashlytics, Reflector, Appium, Genymotion, XCtest, JIRA, Zephyre, Confluence, Allure, Jenkins, SauceLabs, AWS device farm, OWASP ZAP, Burp, SSL scan, Slow http test, skipfish
TEAM 32 employees

Vertigo project is a unique social media platform focused on finding, storing and sharing music and video. The Admin side is a web application, and the Client-side is a mobile application designed for both Android and iOS.

The application enables users to gather their external music collections from many sources in one place. Vertigo users have it all gathered at once via Vertigo aggregating features. They can link their Apple Music and Spotify Premium accounts to find songs, build playlists, and share them with their social friends.

The media platform allows users to broadcast their favorite music in the best possible quality, receive real-time feedback through live commenting, connect with other users to tune into their live sessions and discover new music.

Challenges

Development challenges:

  1. There was a huge bulk of data with the relational structure represented as text-files in the system. The Customer wanted to arrange fast ways of searching for data items.
  2. We had to scale and route the high load Stateful Service. The classical approach to balancing the load could not be used for this service.
  3. The data processing algorithm was implemented as SQL scripts. The implementation took more than 24 hours. The Customer wanted to speed up this process.

QA challenges:

This is a big data and high load application. It’s featured by micro service architecture, it has integrations with music providers and social networks. The primary challenge was to create test data, which included musical contents and users. The application has to work on all iPhone devices, starting from iPhone 5s to the newest ones, running under different iOS versions. The project is developed under the Agile methodology with the short iteration period, so to conduct testing on so many devices took a lot of effort. The QA team was distributed between two remote offices, so it required the development and establishment of the QA process in a way that the two teams could collaborate efficiently.

Solutions
  1. We have used ETL algorithm based on the framework ReactiveX. The search index is created in ElasticSearch.
  2. We have implemented a self-balancing method for the cluster. An individual address is sent to a client, the client can be served at this address.
  3. We have migrated the data processing algorithm to Apache Spark.

QA activities:

Functional testing, API testing, performance testing, usability testing, configurational testing, compatibility testing, security testing, iOS mobile automation, Android mobile automation, QA process establishment and management.

Results
  1. We have parallelized and optimized the process of downloading the data. The total amount of the indexed data is about 70 Gb. The data is available for real-time searching.
  2. The implemented method allows the system with 500+ users to serve 100+ video data streams in real time.
  3. The data processing is scaled horizontally. The scaling is 30 minutes.
See our client's feedback

See our client's feedback

Application for dynamic compaction control
Application for dynamic compaction control
AR Office application
AR Office application