How October Pond will simplify development and deployments
Posted in Announcements, Philosophy on Sep 26, 2017
In this post we want to reveal some details about October Pond, which we are building at the moment. If you haven't yet heard about Pond, it is an installation manager and deployment tool for Windows and Mac (Linux is TBD). After installing Pond you can start working with October right away, even if you haven't installed PHP, Apache or a database server. When you're ready to publish a website you created with October CMS, Pond will handle the server configuration and project deployment for you. This works like magic and supports our vision to make web development simple.
You can have multiple projects in Pond. Each project represents a website or a web application you're developing with October CMS. For running a project locally you can choose between a built-in Pond web server or your own LAMP stack. Vagrant and Docker support is planned as well.
Pond helps to organize October CMS projects so that you can see them all in one list, grouped by client, with the ability to search and star them. If you use Pond's built-in web-server, Docker or Vagrant environments you can start and stop them separately for each project.
Every project can have one local environment and multiple server environments. This is where the fun starts!
Server environments are copies of your project on DigitalOcean droplets managed with Pond. You can have as many server environments for each project as you wish. Usually one of the environments acts as a production copy, and others are used for various internal needs -- such as staging copies, sandboxes and so on.
With Pond you can deploy multiple projects to a single DigitalOcean droplet. This is handy if you have multiple clients with websites that don't consume too much resources, where hosting them on a single server is cheaper than running multiple droplets. At the same time, with Pond you can maintain multiple droplets if you want to run some of your websites on different servers.
Additionally, you can have multiple server environments for the same website running on different droplets, and you might want to do this for various reasons. For example it makes sense for the production and staging copies to be as similar as possible -- so a single droplet is an ideal option -- but running a testing environment on the same web server is not desirable, because you want to be free in running experiments without the risk of breaking the production copy.
When you create a server environment for your first project, Pond will provision and configure a droplet for you. In many cases you won't need any manual configuration for droplets provisioned with Pond. For other server environments you can either use the existing server or provision a new custom droplet.
Pond is built especially for October and this helps us to implement very precise operations. It maintains file permissions in server environments, can deploy plugins and themes individually and much more. When you deploy a project for the first time, Pond can even upload your local database and file attachments to the remote server. This means that you can develop a fully prepared website locally, including blog posts or eCommerce products with images, and then publish everything to a live web server. Pond also lets you manage October configuration in deployed environments, so you don't need to edit configuration files manually.
It's safe to perform Pond deployments even for live running websites. This is achieved by using two separate copies of the codebase for each server environment -- these copies are called deployment environments. There are "blue" and "green" deployment environments. Only one of the environments receives traffic in any given moment. Therefore it's always safe to update the other copy. Pond automatically detects which one of the deployment environments is inactive and updates it when you deploy a project.
You can access the inactive environment with a browser using a secret URL which you specify when you deploy a project for a first time. You can make sure the website works as expected and then use Pond to swap the deployment environments. Swapping instantly redirect traffic from the "blue" to the "green" environment. Visitors won't experience any inconvenience because sessions, uploads and media files are all shared between the deployment environments.
Where the configuration is stored
Server environment configuration is a valuable resource that you don't want to lose. If you have multiple team members working on the same project, you will want them all to be able to access the project's server environments from their Pond installations. For that reason, Pond stores environment configuration using a JSON file in a special subdirectory of each project. You can easily manage this file within git or any other versioning system.
Early availability notification
If you are interested in Pond and want to know when it will become available, you may subscribe to the release notification list. We're planning on running an alpha testing phase as soon as we have basic features implemented, so you have a chance to see Pond with early access and help us to make improvements.
If you wish to support the October CMS team, please visit the Premium support or Partners page.
Thanks for reading and using October CMS!