Hi-Tech Ecosystem for Artists, Craftsmen & Global Public
This technology environment was created to gather artists/craftspeople and general public throughout the World to provide an enhanced approach to dealing with global artistic, cultural, entertainment activities. It is supposed to help artists and craftsmen to get a better public exposure, to sell more of their artworks, to get socially promoted, to find new ways of creative collaboration with their peers or cross-genre, to organize events of their own or to participate in events organized by others, to build communities around their projects. For general public it is supposed to become a global artistic, cultural, entertainment content aggregator with customized delivery to all connected devices.
One of the most interesting features of the project is the possibility to create events, such as exhibitions, concerts, etc.
Advanced functionality that includes to-do lists, discussion boards, and a shared media content library, makes it possible to assign event management tasks to different people and set deadlines. The smart prediction algorithm helps to target content based on users’ preferences and interests, popularity of content items, and many other things.
The customer needed an easy-to-scale system that would be able to sustain the growing number of users while providing good performance.
One of the main difficulties was to ensure great performance in a large system that stores a lot of media content. The team was to suggest a database that would be scalable enough to serve the project in the long-term perspective. Before choosing the best architecture, Altoros analyzed and compared several infrastructure options based on the cost of hardware, maintenance, data streaming, etc.
The team was to develop a custom mathematical model for ranking different art works, so that the system would display targeted content that is relevant and appealing to users.
Since the project is a startup, the team had to find an optimal infrastructure solution that would make it possible to launch the social network fast and at a moderate cost. Two options were considered—a private infrastructure and Infrastructure as a Service (IaaS). Having analyzed each solution according to many criteria (such as the cost of equipment, bandwidth, maintenance, and support, the required amount of development efforts, how suitable the infrastructure is for the project’s needs, etc.), the team decided to use a public cloud infrastructure hosted on Rackspace.
The team used Akamai’s content delivery network (CDN) to speed up content streaming because the company has 213 edge locations and instead of receiving data from the original server, users receive it from the local ones.
A custom mathematical model was developed to deliver relevant content to different users. All content items are sorted according to four categories: featured, popular, preferences, and random. Using the settings, a system administrator can define ratios that will determine how many content items from each category will be displayed. The popularity of every item is evaluated using a whole range of metrics, such as the number of comments, views, and likes, whether the item is featured or not, etc.
Although Percona Server was initially selected as the database for the project, later on, the team decided to replace it with PostgreSQL, which provides much better functionality in high-load Ruby-based applications. In addition, database requests have been optimized to achieve the required throughput.
In order to guarantee the required level of performance, the system has been tested against the most common use cases, including different operations with content and events, communication with artists, search, and much more.
The CrossArts’ technology environment for artists and craftspeople is about to be released. Due to the scalable architecture, the system can be easily extended up to 1,000,000 users without any additional changes to the code.
Rackspace Cloud Server/Cloud Files, Ubuntu Linux, Nginx, Puma, JRuby, Sphinx, Redis, Memcached
Ruby 1.9.3, JRuby 1.7.2