This article contains content that is written like "an advertisement. (November 2017) ("Learn how and when to remove this template message)
This article needs additional citations for "verification. (January 2018) ("Learn how and when to remove this template message)
|"Developer(s)||Andrey Sibiryov and "Yandex team|
|Initial release||March 20, 2011|
Cocaine (Configurable Omnipotent Custom Applications Integrated Network Engine) is an "open source "PaaS system for creating custom cloud hosting apps that are similar to "Bluemix, "Google App Engine or "Heroku. Several indispensable services have already been implemented this way, including a service for detecting a user's region or language, a service for accessing "MongoDB storage, and a URL fetcher.
In times when cloud technologies were not yet widely used, Andrey Sibiryov, the project founder, discovered Heroku. At that time Heroku was an app engine supporting only Ruby. It was possible to create a Ruby app, push it to the cloud and not have to pay attention to any infrastructure problems. Load balancing issues were handled by the platform as well.
The idea was useful but it was hard to find any description of how it worked, which became a reason to start yet another open source cloud app engine project. The same logic was followed by many developers, which led to many cloud project start ups.
Initially Cocaine was a developer's pet project. However, everything changed when "Yandex discovered an internal need of a scalable platform that could cope with millions of RPS. Cocaine served these purposes. Now, Cocaine is used in the "Yandex infrastructure.
The cloud is made up of one or more independent machines that have the Cocaine server (Cocained) installed. Users know nothing about the location of the services they are accessing—only the address of the load balancer and the app name are available to them. User requests are sent to the load balancer, which passes them to the cloud. In the cloud, the optimal machine is selected for each request, and then the request is executed. The infrastructure details and the app's environment settings are hidden from the developer, as well. The developer only needs to send the code to the cloud and write a special manifest for executing the code. It is not necessary to set up anything else, such as databases, key-value stores, or HTTP clients. There are services that do this, which from the programmer's point of view are native modules for the programming language the code is written in. For example, the Storage service lets users access "Elliptics storage, and the Uatraits service uses data about a client's user agent and its HTTP headers to determine the characteristics of the device that sent the request.