Skip to content

Commit

Permalink
Update environments page.
Browse files Browse the repository at this point in the history
  • Loading branch information
sengi committed Feb 2, 2024
1 parent 92a7a34 commit 77ba4fd
Showing 1 changed file with 58 additions and 23 deletions.
81 changes: 58 additions & 23 deletions source/manual/environments.html.md
@@ -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

0 comments on commit 77ba4fd

Please sign in to comment.