This repository contains the Terraform deployed by the Jump Start Solution (JSS) titled Three-tier web application. The source code for web application (frontend and middle tier) deployed by this JSS can be found at github.com/GoogleCloudPlatform/deploystack-three-tier-app.
Create a web app using a three-tiered architecture
This solution quickly and securely creates a web app using a three-tiered architecture with a front end, middleware, and back end (PostgreSQL database). You can choose whether to deploy your solution through the console directly or download as Terraform on GitHub to deploy later.
- User requests are sent to the front end, which is deployed on two Cloud Run services as containers to support high scalability applications.
- The request then lands on the middle tier, which is the API layer that provides access to the backend. This is also deployed on Cloud Run for scalability and ease of deployment in multiple languages. This middleware is a Golang based API.
- The frequent requests are cached in Memorystore for Redis for serving the request fast in-memory. The response is then served back to the user.
- For new requests from the users, Cloud SQL provides the backend as the database layer. The response is then served back to the user.
- For DevOps, Cloud Build packages up the containers and deploys them to be available as Cloud Run services.
Basic usage of this module is as follows:
module "three_tier_app" {
source = "terraform-google-modules/three-tier-app/google"
version = "~> 0.1"
project_id = var.project_id
region = "us-central1"
zone = "us-central1-a"
}
Functional examples are included in the examples directory.
Name | Description | Type | Default | Required |
---|---|---|---|---|
database_type | Cloud SQL Database flavor, mysql or postgresql | string |
"postgresql" |
no |
deployment_name | The name of this particular deployment, will get added as a prefix to most resources. | string |
"three-tier-app" |
no |
enable_apis | Whether or not to enable underlying apis in this solution. . | string |
true |
no |
labels | A map of labels to apply to contained resources. | map(string) |
{ |
no |
project_id | The project ID to deploy to | string |
n/a | yes |
region | The Compute Region to deploy to | string |
"us-central1" |
no |
run_roles_list | The list of roles that run needs | list(string) |
[ |
no |
zone | The Compute Zone to deploy to | string |
"us-central1-a" |
no |
Name | Description |
---|---|
endpoint | The url of the front end which we want to surface to the user |
neos_toc_url | The URL to launch the in-console tutorial for the Three Tier App solution |
sqlservername | The name of the database that we randomly generated. |
These sections describe requirements for using this module.
The following dependencies must be available:
- Terraform v0.13
- Terraform Provider for GCP plugin v3.0
A service account with the following roles must be used to provision the resources of this module:
- Storage Admin:
roles/storage.admin
The Project Factory module and the IAM module may be used in combination to provision a service account with the necessary roles applied.
A project with the following APIs enabled must be used to host the resources of this module:
- Google Cloud Storage JSON API:
storage-api.googleapis.com
The Project Factory module can be used to provision a project with the necessary APIs enabled.
Refer to the contribution guidelines for information on contributing to this module.
Please see our security disclosure process.