What is Coherence?
Coherence delivers automated environments and build pipelines that enable you to develop, test, and deploy your app in the cloud using AWS or GCP. This overview will show how the environment types come together with additional features to deliver a world-class development solution for your team.
Full-stack preview environments
Popularized by Platforms-as-a-Service like Vercel and Heroku, preview environments (sometimes referred to as branch, review or dev environments) have quickly become an integral part of software development. They’re ephemeral staging environments for each branch that reduce the risk of shipping bugs, improve team collaboration, and increase overall development speed.
Coherence deploys preview environments in your cloud — offering you enhanced transparency and security compared to a Platform-as-a-Service. Additionally, our previews are “full-stack”, meaning they can have a backend and database, not just a frontend, to achieve a higher parity with production.
Here’s an idea of what the workflow looks like:
- Create a new branch in Coherence, or create a PR in GitHub
- Coherence automatically provisions the environment and makes the link available via the dashboard and as a comment in the PR
- Push code to the branch to trigger a build pipeline that runs in your cloud
- Share the link for testing and review
- On merge, or if the environment is inactive for enough time, Coherence automatically spins down the infrastructure
- Create branch-scoped variables/secrets
- Add a custom domain to any environment
- Perform tasks like getting a REPL, one off seeding, or data migrations to the deployed environment with a web-based SSH shell (or “Toolbox”)
Build pipelines are jobs that run in sequence whenever you deploy new code to an environment. All environments in Coherence (previews/static/production) use build pipelines that we automatically manage on your behalf by default (using CodePipeline/CodeBuild for AWS and Cloud Build for GCP) and support additional user-defined steps.
Supported steps for backend services include
seed. For frontend services:
If you need to support any external pipelines pre-build, you can easily with integrate them GitHub Actions.
You can run full stack integration tests across services using preview environments as an additional step in your build pipeline. All that's'required is an image of your integration test runner (e.g.
cypress/base:12) and the command to start your tests. Learn more.
Learn more about build pipelines
Static environments have all the features of branch previews but are more like traditional staging environments. Since they don’t track a git branch, you need to manually promote a build to deploy new code to them. Static environments are ideal for longer-running test environments or cross-functional use cases like sales demos, etc.
Coherence organizes environments by collection, one for pre-production (previews and static environments) and one for your production environment. Collections map directly to separate cloud accounts/projects, creating an isolation barrier for production and its data.
You can promote any build to production from any environment with a simple UI. This will trigger a new pipeline at the commit SHA associated with that build. Rolling back is as easy as promoting a previous build from your production environment or any other environment. You can manage user permissions for deploying to production, and we have features for release approvals on our roadmap.
Like other environments, Coherence spins up a database by default but you may want to customize it for production (e.g. High Availability). Alternatively you can use your own self-managed database instance.
Cloud Development Environments
While completely optional to use, cloud IDE’s are a great companion to the Coherence workflow. “Workspaces” as we call them, are hosted VSCode instances that run your application in a separate development environment. They run database seeding/migration commands on boot and are automatically git configured so you’re ready to code.
A couple reasons to try Workspaces:
- Multitask without switching your local state. Want to run your colleagues' code or commit a quick bugfix? Workspaces make that fast and easy without needing to pingpong your git workflow or debug dependencies.
- Experiment and explore freely. Workspaces are disposable, so install a bunch of node packages, change versions, rearrange your codebase — go crazy! No need to worry how to undo it on your machine when you need to move to the next thing.
Learn more about workspaces
The Coherence UI is an admin panel for environment management that’s intuitive enough for every dev on your team to use. We give you the optimal level of observability and control without sacrificing user experience.
Main things you can do in the dashboard:
- Onboard new apps
- Create and manage environments
- Create and manage variables and secrets
- Invite team members
- Deploy to production and other static environments
- Access deep links to log and build information
- Launch workspaces and toolboxes