Skip to main content

Environment management and development tools

We cannot emphasize enough the value of tools for provisioning local and staging website environments—developers should be able to continuously make improvements and receive feedback without worrying about making changes that might negatively impact the live site or each other’s work.

Our Development Tools

At the start of any project, an in-house development environment templating system is used to establish a consistent environment for each developer's local system use. This templating system establishes all required per-project development tools including drush configuration for connecting to multiple back-end environments. We base this enviroment on details provided/known about the server environment the application will ultimately run in, in order to match that target system as closely as possible. The system is based on Docker under the hood, as managed by DDEV.

Ideally, each developer will work on individual issue tickets within their own appropriately-named branch (written as the related issue number, hyphen, short title of the ticket). Upon completion of all or part of the issue, another developer is assigned to review the merge request for the branch. After passing review, and so long as all automated tests pass, it is merged into the main branch of the project.

While something like the preceeding workflow is desirable, Agaric has historically effectively scaled its efforts to suit the task at hand - balancing ideal development practices against time or budget constraints. While the ideal conditions would allow for a robust development workflow, including any recommended unit/integration testing, end-to-end testing, code reviews, and so on, Agaric is also able to selectively scale back on such efforts to reduce time to completion/total work hours required. For example, Agaric may utilize more comprehensive end-to-end testing starting from the beginning of the project (using Behat) to providing additional assurance in the resulting system and reduce review requirements.

Server-based environment management can be handled exclusively by Agaric, using any number of a client's preferred providers, or co-managed with the client. Agaric has experience using numerous Drupal-specific, and general purpose providers, including, for example, Pantheon, Acquia, DigitalOcean, and AWS. For cases where server instances are more heavily managed by Agaric, we would use our in-house Ansible-based system for deployment and configuration tasks. Our Ansible tools include full provisioning of systems from a base installation of Debian, up to and including (optionally) code deployment, and site installation.

Backup tools that Agaric uses are also specific to client needs, but have included, for example, using BackupNinja with Duplicity to create regular full/partial backups to S3 or rsync targets, scaling down to simpler plans such as DigitalOcean snapshots with additional tools to create additional snapshots on a regular schedule. Deployment routines also include automated backup creation to ensure a safe rollback path is available were it needed.

Additionally, Agaric has experience working with a variety of CI/CD tools having used them to perform all variety of tasks, from automated testing to performing deployments to test and live environments.

This all fits into the processes and tools we use to develop at our highest level.

Comments

Add new comment

The content of this field is kept private and will not be shown publicly.

Markdown

The comment language code.
CAPTCHA
Please help us focus on people and not spambots by answering this question.