Cocaine (PaaS)

Last updated
Cocaine
Developer(s) Andrey Sibiryov and Yandex team
Initial releaseMarch 20, 2011;13 years ago (2011-03-20)
Stable release
0.12.14.21 / November 29, 2017;6 years ago (2017-11-29)
Written in C++
Type Web development
Website github.com/cocaine

Cocaine (Configurable Omnipotent Custom Applications Integrated Network Engine) was an open-source PaaS system for creating custom cloud hosting apps that are similar to Bluemix, Google App Engine, or Heroku. Several 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. [1]

Contents

History

Andrey Sibiryov, the original developer of Cocaine, got the idea from Heroku, another cloud PaaS. At that time, Heroku only supported applications developed in Ruby. [2] Using Heroku, the developer could create a Ruby app and push it to the cloud, while Heroku handled infrastructure and load balancing issues. Sibiryov was not satisfied with the documentation for Heroku and decided to create his own PaaS system.

Initially, Cocaine was a personal project for Sibiryov. This changed, however, when Yandex discovered an internal need for a scalable platform that could cope with millions of requests-per-second (RPS). Cocaine was, for a period of time, used in the Yandex infrastructure. [3]

Architecture

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.

Applying the technology

In the cloud, apps can be written in various programming languages (C, C++, Go, JavaScript, Python, Ruby, and others) and frameworks (Node.js). Cocaine bound to a web server provides an automatically scalable deployment environment for web apps. The cloud manages large data volumes through a streamlined interface. Cocaine ensures reliable, high-performance message transmission with fault tolerance. Its load balancer enables responsive user-centric systems. Cloud apps run independently, supporting multiple versions and smooth user transitions to updated versions. Additionally, apps are tested in isolated cloud environments, preventing errors from affecting the physical system or other applications.

Related Research Articles

<span class="mw-page-title-main">Client–server model</span> Distributed application structure in computing

The client–server model, also known as client server network architecture, is a distributed application structure that partitions tasks or workloads between the providers of a resource or service, called servers, and service requesters, called clients. Often clients and servers communicate over a computer network on separate hardware, but both client and server may reside in the same system. A server host runs one or more server programs, which share their resources with clients. A client usually does not share any of its resources, but it requests content or service from a server. Clients, therefore, initiate communication sessions with servers, which await incoming requests. Examples of computer applications that use the client–server model are email, network printing, and the World Wide Web.

<span class="mw-page-title-main">PostgreSQL</span> Free and open-source object relational database management system

PostgreSQL, also known as Postgres, is a free and open-source relational database management system (RDBMS) emphasizing extensibility and SQL compliance. PostgreSQL features transactions with atomicity, consistency, isolation, durability (ACID) properties, automatically updatable views, materialized views, triggers, foreign keys, and stored procedures. It is supported on all major operating systems, including Linux, FreeBSD, OpenBSD, macOS, and Windows, and handles a range of workloads from single machines to data warehouses or web services with many concurrent users.

An application server is a server that hosts applications or software that delivers a business application through a communication protocol. For a typical web application, the application server sits behind the web servers.

Google Developers is Google's site for software development tools and platforms, application programming interfaces (APIs), and technical resources. The site contains documentation on using Google developer tools and APIs—including discussion groups and blogs for developers using Google's developer products.

Google App Engine is a cloud computing platform as a service for developing and hosting web applications in Google-managed data centers. Applications are sandboxed and run across multiple servers. App Engine offers automatic scaling for web applications—as the number of requests increases for an application, App Engine automatically allocates more resources for the web application to handle the additional demand.

Platform as a service (PaaS) or application platform as a service (aPaaS) or platform-based service is a category of cloud computing services that allows customers to provision, instantiate, run, and manage a modular bundle comprising a computing platform and one or more applications, without the complexity of building and maintaining the infrastructure typically associated with developing and launching the application(s), and to allow developers to create, develop, and package such software bundles.

Heroku is a cloud platform as a service (PaaS) supporting several programming languages. As one of the first cloud platforms, Heroku has been in development since June 2007, when it supported only the Ruby programming language, but now also supports Java, Node.js, Scala, Clojure, Python, PHP, and Go. For this reason, Heroku is said to be a polyglot platform as it has features for a developer to build, run and scale applications in a similar manner across most of these languages. Heroku was acquired by Salesforce in 2010 for $212 million.

<span class="mw-page-title-main">Rackspace Cloud</span> Cloud computing platform

The Rackspace Cloud is a set of cloud computing products and services billed on a utility computing basis from the US-based company Rackspace. Offerings include Cloud Storage, virtual private server, load balancers, databases, backup, and monitoring.

<span class="mw-page-title-main">Cloud computing</span> Form of shared Internet-based computing

Cloud computing is the on-demand availability of computer system resources, especially data storage and computing power, without direct active management by the user. Large clouds often have functions distributed over multiple locations, each of which is a data center. Cloud computing relies on sharing of resources to achieve coherence and typically uses a pay-as-you-go model, which can help in reducing capital expenses but may also lead to unexpected operating expenses for users.

<span class="mw-page-title-main">AppScale</span> American cloud infrastructure software company

AppScale is a software company offering cloud infrastructure software and services to enterprises, government agencies, contractors, and third-party service providers. The company commercially supports one software product, AppScale ATS, a managed hybrid cloud infrastructure software platform that emulates the core AWS APIs. In 2019, the company ended commercial support for its open-source serverless computing platform AppScale GTS, but AppScale GTS source code remains freely available to the open-source community.

Yandex.Disk is a cloud service created by Yandex that lets users store files on “cloud” servers and share them with others online. The service is based on syncing data between different devices. Yandex.Disk was launched in English in June 2012.

<span class="mw-page-title-main">Blitz (software)</span>

Blitz is a cloud-based load- and performance-testing service (SaaS) that allows developers to "rush" a Web app or Web API with up to 200,000 concurrent users within seconds from multiple points of presence around the world. The tool allows users to test web applications, websites, and APIs to identify infrastructure weaknesses.

Backend as a service (BaaS), sometimes also referred to as mobile backend as a service (MBaaS), is a service for providing web app and mobile app developers with a way to easily build a backend to their frontend applications. Features available include user management, push notifications, and integration with social networking services. These services are provided via the use of custom software development kits (SDKs) and application programming interfaces (APIs). BaaS is a relatively recent development in cloud computing, with most BaaS startups dating from 2011 or later. Some of the most popular service providers are AWS Amplify and Firebase.

Google APIs are application programming interfaces (APIs) developed by Google which allow communication with Google Services and their integration to other services. Examples of these include Search, Gmail, Translate or Google Maps. Third-party apps can use these APIs to take advantage of or extend the functionality of the existing services.

Jelastic is a cloud platform software vendor that provides multi-cloud Platform as a Service-based on container technology for hosting service providers, ISVs, telecommunication companies, enterprises and developers. The platform is available as public cloud in over 70 data centers, as well as virtual and on-premises servers. Jelastic provides support of Java, PHP, Ruby, Node.js, Python, Go environments, custom Docker containers and Kubernetes clusters.

PaaSage is a project partially funded by the Seventh Framework Programme for Research and Technological Development, sometimes abbreviated to FP7. PaaSage is a European Union funded research project involving partners such as ERCIM, SINTEF, STFC, University of Stuttgart, INRIA, CETIC, FORTH, BE.WAN, EVRY, Sysfera, Flexiant, Lufthansa Systems, GWDG, ASCS, University of Ulm, University of Oslo, AGH, IBSAC and University of Cyprus that aims at creating a development and deployment platform together with an appropriate methodology for helping software engineers creating new applications and migrating old applications that can run on multiple Cloud platforms. PaaSage is a notable example of European research efforts in the field of Infrastructure as a Service (IaaS).

Google Cloud Platform (GCP), offered by Google, is a suite of cloud computing services that provides a series of modular cloud services including computing, data storage, data analytics, and machine learning, alongside a set of management tools. It runs on the same infrastructure that Google uses internally for its end-user products, such as Google Search, Gmail, and Google Docs, according to Verma, et.al. Registration requires a credit card or bank account details.

Kubernetes is an open-source container orchestration system for automating software deployment, scaling, and management. Originally designed by Google, the project is now maintained by a worldwide community of contributors, and the trademark is held by the Cloud Native Computing Foundation.

Serverless computing is a cloud computing execution model in which the cloud provider allocates machine resources on demand, taking care of the servers on behalf of their customers. "Serverless" is a misnomer in the sense that servers are still used by cloud service providers to execute code for developers. However, developers of serverless applications are not concerned with capacity planning, configuration, management, maintenance, fault tolerance, or scaling of containers, VMs, or physical servers. Serverless computing does not hold resources in volatile memory; computing is rather done in short bursts with the results persisted to storage. When an app is not in use, there are no computing resources allocated to the app. Pricing is based on the actual amount of resources consumed by an application. It can be a form of utility computing.

Yandex Cloud is a public cloud platform developed by the Russian internet company Yandex. Yandex Cloud provides private and corporate users with infrastructure and computing resources in an ‘as a service’ format.

References

  1. "cocaine-docs" . Retrieved 8 May 2017.
  2. "The Big Kickoff" . Retrieved 8 May 2017.
  3. "Yandex's official documentation". Archived from the original on 2014-02-19. Retrieved 2014-02-25.