Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
58 additions
and
23 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,48 +1,83 @@ | ||
--- | ||
owner_slack: "#govuk-developers" | ||
owner_slack: "#govuk-platform-engineering" | ||
title: GOV.UK's environments (integration, staging, production) | ||
section: Infrastructure | ||
type: learn | ||
layout: manual_layout | ||
parent: "/manual.html" | ||
--- | ||
|
||
GOV.UK has several environments with different purposes. | ||
GOV.UK has several environments with different purposes. By _environment_, we | ||
mean: | ||
|
||
For a quick view of what's where, you can use the [release app](https://release.publishing.service.gov.uk). | ||
- a self-contained, running instance of all the software components of GOV.UK | ||
- the AWS account and VPC network which hosts that instance of GOV.UK | ||
- the configuration (settings) for that instance of GOV.UK | ||
|
||
## Continuous integration (CI) | ||
This document describes each GOV.UK environment and its uses. | ||
|
||
Runs tests for applications. | ||
There are three GOV.UK environments hosted in AWS: integration, staging and | ||
production. Individual developers also run GOV.UK locally on laptops or | ||
workstations. | ||
|
||
The [Release dashboard](https://release.publishing.service.gov.uk/) shows which | ||
application versions have been rolled out in each environment. | ||
|
||
## Local development environments | ||
|
||
Software developers working on GOV.UK generally either use [govuk-docker] or | ||
run the applications directly on their machines alongside copies of the | ||
necessary databases. | ||
|
||
In future, we hope to improve [govuk-helm-charts] to be able to run the whole | ||
GOV.UK stack locally. This should make it easier for new contributors to get | ||
started on GOV.UK, encourage open-source engagement and reduce friction for | ||
developers. | ||
|
||
## Integration | ||
|
||
Used by GOV.UK product teams to test changes to software. | ||
GOV.UK product teams use the _integration test_ environment for: | ||
|
||
- manual software testing, where automated test coverage is not yet sufficient | ||
and/or the [govuk-docker] local development environment is insufficient | ||
- automated end-to-end/system tests ([Smokey]) which determine whether a | ||
software release is automatically promoted to the staging environment | ||
|
||
Right now this environment is also used by content editors at GDS and in other departments | ||
to preview their content changes. This functionality should be replaced by draft preview | ||
functionality as part of the publishing platform. | ||
Currently, the integration environment is also used by content editors at GDS | ||
and in other departments as a workaround to preview certain types of content | ||
changes. This usage needs to be replaced by proper preview functionality in the | ||
Publisher applications so that all end-user usage happens in production. | ||
|
||
Integration is hosted on [AWS][govuk-in-aws]. | ||
There are no guarantees about availability of the integration environment and | ||
support is on a best-effort basis only. | ||
|
||
## Staging | ||
|
||
Used by GOV.UK product teams while deploying changes to ensure that they behave correctly | ||
in a production-like environment. This means that staging must be similar to production | ||
so that we're able to test things like the performance impact of changes. | ||
GOV.UK Platform Engineering team uses the staging environment for: | ||
|
||
Staging is hosted on [AWS][govuk-in-aws]. | ||
- verifying changes to cluster configuration or cloud infrastructure, such as | ||
Kubernetes cluster upgrades | ||
|
||
Access to Staging is restricted to office IPs, so you'll need to [be | ||
on the VPN][gds-vpn]. | ||
AWS configuration can be found in | ||
[govuk-aws-data](https://github.com/alphagov/govuk-aws/blob/master/terraform/projects/infra-security-groups/cache.tf). | ||
GOV.UK product teams occasionally use the staging environment for: | ||
|
||
## Production | ||
- testing of major changes which need to run on a full copy of production data | ||
- testing that involves measuring system performance or resource usage, for | ||
example load testing and stress testing | ||
|
||
The staging environment is currently also a gate for automatic deployment of | ||
new releases to production. | ||
|
||
The thing that runs the website for real people. | ||
Front ends in the staging environment are reachable from GDS network addresses | ||
only. This is to prevent content in staging being mistakenly linked to. If you | ||
are working outside a GDS office, you will need to connect via the [VPN] in | ||
order to view the website on the staging environment. Apps that require you to | ||
log in via GOV.UK Signon do not require the VPN. | ||
|
||
## Production | ||
|
||
Production is hosted on [AWS][govuk-in-aws]. | ||
The production environment runs the versions of the applications which serve content to the general public. | ||
|
||
[gds-vpn]: https://docs.google.com/document/d/1O1LmLByDLlKU4F1-3chwS8qddd2WjYQgMaaEgTfK5To/edit | ||
[govuk-in-aws]: /manual/govuk-in-aws.html | ||
[govuk-docker]: https://github.com/alphagov/govuk-docker/ | ||
[govuk-helm-charts]: https://github.com/alphagov/govuk-helm-charts/ | ||
[Smokey]: /repos/smokey | ||
[VPN]: https://docs.google.com/document/d/1O1LmLByDLlKU4F1-3chwS8qddd2WjYQgMaaEgTfK5To/preview |