What is a stack?

How we define “application”

For the purposes of this documentation an application is the complete set of hardware and software components needed for your software to run. Each level of the application represents an abstraction layer that provides a high-level overview of your setup.

For example, your application might be comprised of a load balancer, a number of web servers, process and database servers, your operating system and finally the hardware provided by your cloud vendor:

image


“Application” vs “Stack”

In previous versions of this documentation we used the concept of a “stack” to describe much the same concept as we now describe using “application”. The two concepts are related but not identical.

In particular “stack” tends to include both underlying infrastructure and the components running on that substrate, whereas “application” is more abstracted from the underlying infrastructure.

However, when reading any documentation or our forums, it will often be helpful to think of “stack” and “application” as effectively synonymous.

In a general sense, both these terms encapsulate the same thing: an interconnected collection of components, configurations and services that are presented to the world as a single, coherent piece of software.

Application components

You have a great degree of freedom when choosing the different components of your application.

Load balancer (optional)

A load balancer is used to distribute traffic across your web servers, and offers benefits such as maximizing throughoutput, minimizing response times and avoiding overload on any single server. Ultimately, load balancing increases the reliability of your application.

The type of load balancer deployed in your application is dependent on your cloud provider.

Web servers

By default, your applications are served with Nginx. You can scale your web server with the click of a button.

Background workers (optional)

To relieve pressure from your application, we recommend that you use background workers to run memory-intensive processes.

Database servers (optional)

You can choose between any of four supported databases:

Cloud 66 makes it easy for you to backup your database and replicate your databases.

Operating system

Your servers will be deployed with Ubuntu 16.04 LTS. On the operating system level, you can monitor disk, CPU and memory from the dashboard.

Cloud vendor

You can either deploy to your preferred cloud provider or deploy to your own server.


Application environments

To reflect the different stages of your software, you can deploy your application in different environments:

In addition to these environments, you can define your own environments from the Account page, in the Setting -> Custom environment menu. Once the new environment is added, you will be able to see it in the list of supported environments when creating a new application. Custom environments don’t influence anything on the application. They will result in the relevant environment variables like RAILS_ENV and RACK_ENV (for Rack-based applications) having the correct values. The usage of those custom values is up to your application.

Depending on your configuration, your application will act differently in each environment. For example, a Ruby on Rails application has a directory in config/environments that contains settings for each environment.

There is no difference between these environments when it comes to features and supported tools apart from what you define in your code.


What is StackScore?

StackScore™ is a score that provides an indication of how reliable, resilient and performant your application is when deployed on your servers. It consists of five key metrics that are graded from A to F, and the overall StackScore is the lowest of the scores across these five metrics.

Suggestion

Always try to keep your stacks at an A StackScore™ level to ensure stack health.

Cloud 66 constantly seeks to update and improve the StackScore algorithm to consider new data points as well as external conditions, which means that your StackScore will change over time.


Build an application

To build your first stack, see our Getting Started guide. If you have existing stack(s), simply click New Application from your Cloud 66 Dashboard.


Edit application properties

You can access your Application information page from the right sidebar of your stack page. This page shows you general information about your stack, the different servers it consists of and information about your application.

It also allows you to edit your stack name, and you can edit your Docker service configuration under the Service configurations menu on the stack details page. For Rack-based applications, you can edit your Git repository and branch by clicking the Edit button next to each field on the Application information page. Editing your application name has an important implication.

Important

Internal c66 domain names (*.c66.me) are based on your application name, and will change if you rename the application.

Unless you use Failover groups, you will have to update your DNS to point at the new address to keep your application accessible. By using Failover groups, this will be updated automatically for you.

Clone an application

There are various reasons for cloning an existing application - for example, you may want to deploy a production environment of an existing development application, or migrate across regions or data centers.

To clone an application, visit your application page and click Clone this application from the right sidebar. This will allow you to choose a new application name and environment. Cloning your application will preserve any environment variables from the existing application, and also allows you to define where to deploy to along with other settings.


Delete an application

Important

Deleting an application will not delete your cloud servers - remember to delete the servers from your cloud account.

To delete an application, visit your application page and click Delete Application from the right sidebar. You will have to confirm this action.