You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+95-7Lines changed: 95 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,13 +1,70 @@
1
1
# Humanitec AWS Reference Architecture
2
2
3
+
> TL;DR
4
+
>
5
+
> Skip the theory? Go [here](README.md#how-to-spin-up-your-humanitec-aws-reference-architecture) to spin up your Humanitec Google Cloud Reference Architecture Implementation.
6
+
>
7
+
> [Follow this learning path to master you Internal Developer Platform](https://developer.humanitec.com/training/master-your-internal-developer-platform/introduction/).
8
+
>
9
+
10
+
Building an Internal Developer Platform (IDP) can come with many challenges. To give you a head start, we’ve created a set of [reference architectures](https://humanitec.com/reference-architectures) based on hundreds of real-world setups. These architectures described in code provide a starting point to build your own IDP within minutes, along with customization capabilities to ensure your platform meets the unique needs of your users (developers).
11
+
12
+
The initial version of this reference architecture has been presented by Mike Gatto, Sr. DevOps Engineer, McKinsey and Stephan Schneider, Digital Expert Associate Partner, McKinsey at [PlartformCon 2023](https://www.youtube.com/watch?v=AimSwK8Mw-U).
13
+
14
+
## What is an Internal Developer Platform (IDP)?
15
+
16
+
An [Internal Developer Platform (IDP)](https://humanitec.com/blog/what-is-an-internal-developer-platform) is the sum of all the tech and tools that a platform engineering team binds together to pave golden paths for developers. IDPs lower cognitive load across the engineering organization and enable developer self-service, without abstracting away context from developers or making the underlying tech inaccessible. Well-designed IDPs follow a Platform as a Product approach, where a platform team builds, maintains, and continuously improves the IDP, following product management principles and best practices.
17
+
18
+
## Understanding the different planes of the IDP reference architecture
19
+
20
+
When McKinsey originally [published the reference architecture](https://www.youtube.com/watch?v=AimSwK8Mw-U) they proposed five planes that describe the different parts of a modern Internal Developer Platform (IDP).
This plane is the primary configuration layer and interaction point for the platform users. It harbors the following components:
27
+
28
+
29
+
30
+
* A **Version Control System**. GitHub is a prominent example, but this can be any system that contains two types of repositories:
31
+
* Application Source Code
32
+
* Platform Source Code, e.g. using Terraform
33
+
***Workload specifications**. The reference architecture uses [Score](https://developer.humanitec.com/score/overview/).
34
+
* A **portal** for developers to interact with. It can be the Humanitec Portal, but you might also use [Backstage](https://backstage.io/) or any other portal on the market.
35
+
36
+
37
+
### Integration and Delivery Plane
38
+
39
+
This plane is about building and storing the image, creating app and infra configs from the abstractions provided by the developers, and deploying the final state. It’s where the domains of developers and platform engineers meet.
40
+
41
+
This plane usually contains four different tools:
42
+
* A **CI pipeline**. It can be Github Actions or any CI tooling on the market.
43
+
* The **image registry** holding your container images. Again, this can be any registry on the market.
44
+
* An **orchestrator** which in our example, is the Humanitec Platform Orchestrator.
45
+
* The **CD system**, which can be the Platform Orchestrator’s deployment pipeline capabilities — an external system triggered by the Orchestrator using a webhook, or a setup in tandem with GitOps operators like ArgoCD.
46
+
47
+
### Monitoring and Logging Plane
48
+
49
+
The integration of monitoring and logging systems varies greatly depending on the system. This plane however is not a focus of the reference architecture.
50
+
51
+
### Security Plane
52
+
53
+
The security plane of the reference architecture is focused on the secrets management system. The secrets manager stores configuration information such as database passwords, API keys, or TLS certificates needed by an Application at runtime. It allows the Platform Orchestrator to reference the secrets and inject them into the Workloads dynamically. You can learn more about secrets management and integration with other secrets management [here](https://developer.humanitec.com/platform-orchestrator/security/overview).
54
+
55
+
The reference architecture sample implementations use the secrets store attached to the Humanitec SaaS system.
56
+
57
+
### Resource Plane
58
+
59
+
This plane is where the actual infrastructure exists including clusters, databases, storage, or DNS services. The configuration of the Resources is managed by the Platform Orchestrator which dynamically creates app and infrastructure configurations with every deployment and creates, updates, or deletes dependent Resources as required.
60
+
61
+
## How to spin up your Humanitec AWS Reference Architecture
3
62
This repo contains an implementation of part of the Humanitec Reference Architecture for an Internal Developer Platform.
4
63
5
64
To install an implementation containing add-ons, follow the separate README. We currently feature these add-ons:
6
65
7
66
*[Base layer plus Backstage](examples/with-backstage/)
This repo covers the base layer of the implementation for AWS.
12
69
13
70
By default, the following will be provisioned:
@@ -20,14 +77,14 @@ By default, the following will be provisioned:
20
77
- Kubernetes Cluster
21
78
- Logging
22
79
23
-
## Prerequisites
80
+
###Prerequisites
24
81
25
82
* A Humanitec account with the `Administrator` role in an Organization. Get a [free trial](https://humanitec.com/free-trial?utm_source=github&utm_medium=referral&utm_campaign=aws_refarch_repo) if you are just starting.
**Note: Using this Reference Architecture Implementation will incur costs for your AWS project.**
33
90
@@ -67,14 +124,14 @@ This reference architecture implementation uses Terraform. You will need to do t
67
124
```
68
125
This is due to an upstream issue with the Terraform AWS modules, and can be ignored.
69
126
70
-
### Required input variables
127
+
####Required input variables
71
128
72
129
Terraform reads variables by default from a file called `terraform.tfvars`. You can create your own file by renaming the `terraform.tfvars.example` file in the root of the repo and then filling in the missing values.
73
130
74
131
You can see find a details about each of those variables and additional supported variables under [Inputs](#inputs).
75
132
76
133
77
-
## Verify your result
134
+
###Verify your result
78
135
79
136
Check for the existence of key elements of the reference architecture. This is a subset of all elements only. For a complete list of what was installed, review the Terraform code.
80
137
@@ -115,7 +172,7 @@ Check for the existence of key elements of the reference architecture. This is a
115
172
}
116
173
```
117
174
118
-
## Cleaning up
175
+
###Cleaning up
119
176
120
177
Once you are finished with the reference architecture, you can remove all provisioned infrastructure and the resource definitions created in Humanitec with the following:
121
178
@@ -154,3 +211,34 @@ Once you are finished with the reference architecture, you can remove all provis
154
211
| aws\_region | AWS Region to deploy into |`string`| n/a | yes |
*[Structure and integration points](https://developer.humanitec.com/training/master-your-internal-developer-platform/structure-and-integration-points/)
*[Tutorial: Set up the reference architecture in your cloud](https://developer.humanitec.com/training/master-your-internal-developer-platform/setup-ref-arch-in-your-cloud/)
236
+
*[Theory on developer workflows](https://developer.humanitec.com/training/master-your-internal-developer-platform/theory-on-dev-workflows/)
237
+
*[Tutorial: Scaffold a new Workload and create staging and prod Environments](https://developer.humanitec.com/training/master-your-internal-developer-platform/scaffolding-a-new-workload/)
238
+
*[Tutorial: Deploy an Amazon S3 Resource to production](https://developer.humanitec.com/training/master-your-internal-developer-platform/deploy-a-resource/)
*[Tutorial: Provision a Redis cluster on AWS using Terraform](https://developer.humanitec.com/training/master-your-internal-developer-platform/provision-redis-aws/)
244
+
*[Tutorial: Update Resource Definitions for related Applications](https://developer.humanitec.com/training/master-your-internal-developer-platform/update-resource-definitions-for-related-applications/)
0 commit comments