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;7 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 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 be on the same device. 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.

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.

<span class="mw-page-title-main">Web application</span> Application that uses a web browser as a client

A web application is application software that is created with web technologies and runs via a web browser. Web applications emerged during the late 1990s and allowed for the server to dynamically build a response to the request, in contrast to static web pages.

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.

<span class="mw-page-title-main">Google App Engine</span> Cloud-based web application hosting service

Google App Engine is a cloud computing platform used as a service for developing and hosting web applications. Applications are sandboxed and run across multiple Google-managed servers. GAE supports automatic scaling for web applications, allocating more resources to the web application as the amount of requests increases. It was released as a preview in April 2008 and launched officially in September 2011.

Platform as a service (PaaS) or application platform as a service (aPaaS) or platform-based service is a cloud computing service model where users provision, instantiate, run and manage a modular bundle of a computing platform and applications, without the complexity of building and maintaining the infrastructure associated with developing and launching application(s), and to allow developers to create, develop, and package such software bundles.

<span class="mw-page-title-main">WaveMaker</span> Low-code programming platform

WaveMaker is a Java-based low-code development platform designed for building software applications and platforms. The company, WaveMaker Inc., is based in Mountain View, California. The platform is intended to assist enterprises in speeding up their application development and IT modernization initiatives through low-code capabilities. Additionally, for independent software vendors (ISVs), WaveMaker serves as a customizable low-code component that integrates into their products.

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 a paradigm for enabling network access to a scalable and elastic pool of shareable physical or virtual resources with self-service provisioning and administration on-demand," according to ISO.

ZK is an open-source Ajax Web application framework, written in Java, that enables creation of graphical user interfaces for Web applications with little required programming knowledge.

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

AppScale is a software company that offers 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.

<span class="mw-page-title-main">OpenShift</span> Cloud computing software

OpenShift is a family of containerization software products developed by Red Hat. Its flagship product is the OpenShift Container Platform — a hybrid cloud platform as a service built around Linux containers orchestrated and managed by Kubernetes on a foundation of Red Hat Enterprise Linux. The family's other products provide this platform through different environments: OKD serves as the community-driven upstream, Several deployment methods are available including self-managed, cloud native under ROSA, ARO and RHOIC on AWS, Azure, and IBM Cloud respectively, OpenShift Online as software as a service, and OpenShift Dedicated as a managed service.

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.

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.

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) is a suite of cloud computing services offered by Google 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 resources on demand, taking care of the servers on behalf of their customers. According to ISO/IEC 22123-2: "Serverless computing is a cloud service category in which the customer can use different cloud capabilities types without the customer having to provision, deploy and manage either hardware or software resources, other than providing customer application code or providing customer data. Serverless computing represents a form of virtualized computing." Function as a service and serverless database are two forms of serverless computing.

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.