-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
create decision record for regionally resilient infra (#20)
- Loading branch information
1 parent
1ea89fd
commit b12652d
Showing
6 changed files
with
78 additions
and
0 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 |
---|---|---|
@@ -0,0 +1 @@ | ||
docs/architecture/decisions |
19 changes: 19 additions & 0 deletions
19
docs/architecture/decisions/0001-record-architecture-decisions.md
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 |
---|---|---|
@@ -0,0 +1,19 @@ | ||
# 1. Record architecture decisions | ||
|
||
Date: 2022-08-05 | ||
|
||
## Status | ||
|
||
Accepted | ||
|
||
## Context | ||
|
||
We need to record the architectural decisions made on this project. | ||
|
||
## Decision | ||
|
||
We will use Architecture Decision Records, as [described by Michael Nygard](http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions). | ||
|
||
## Consequences | ||
|
||
See Michael Nygard's article, linked above. For a lightweight ADR toolset, see Nat Pryce's [adr-tools](https://github.com/npryce/adr-tools). |
58 changes: 58 additions & 0 deletions
58
docs/architecture/decisions/0002-regionally-resiliant-infrastructure.md
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 |
---|---|---|
@@ -0,0 +1,58 @@ | ||
# 2. Regionally resiliant infrastructure | ||
|
||
Date: 2022-08-05 | ||
|
||
## Status | ||
|
||
Accepted | ||
|
||
## Context | ||
|
||
The issue motivating this decision, and any context that influences or constrains the decision. | ||
|
||
Disaster recovery and global high availability are difficult to introduce to infrastructure later, and slow to achieve when not considered first. | ||
|
||
We know already that the Modernising LPA service will need to meet short RTO and RPO objectives. | ||
|
||
## Decision | ||
|
||
We will design infrastructure in a way that enables disaster recovery and global high availability strategies. | ||
|
||
Infrastructure will be organsised in terraform as regional and global at a per-account and per-environment level. | ||
|
||
Modules will be used to define a region Resources within a region will be defined as sub-modules also. | ||
|
||
## Consequences | ||
|
||
Infrastructure will be easier to implement in a way that enables disaster recovery planning and high availability with RTO and RPO times counted in minutes | ||
|
||
Infrastructure will be easy to replcicate across regions, with shared global resources between each region. | ||
|
||
For example the account terraform configuration will have a structure like this | ||
|
||
```shell | ||
. | ||
├── region | ||
│ ├── modules | ||
│ │ └── certificates | ||
│ │ ├── main.tf | ||
│ │ └── terraform.tf | ||
│ ├── certificates.tf | ||
│ ├── network.tf | ||
│ ├── terraform.tf | ||
│ └── variables.tf | ||
├── README.md | ||
├── regions.tf | ||
├── kms.tf | ||
├── terraform.tf | ||
``` | ||
|
||
Regions.tf will instatiate the /region module for each AWS region required. | ||
|
||
Rsources inside /region will be grouped as modules also, allowing for parts of a region to be replicated as and when needed. | ||
|
||
This will allow us to deploy the service in a way that is globally resiliant, and highly available. | ||
|
||
Global resources such as IAM roles, or Route53 records will be created in a global region. | ||
|
||
Where a resource supports regional replication such as DynamoDB tables, of KMS keys, they will exist in the global layer. |
Empty file.
Empty file.
Empty file.