Fixes #18 - Addresses potential architecture on geoplatform.gov (#45)

* Fixes #18 - Addresses potential architecture on geoplatform.gov

* Add changes

* Adding commuinity input into processing

* Add changes

* Add ADR for Hosting

* Update from PR review

Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: Shelby Switzer <shelby.switzer@cms.hhs.gov>
This commit is contained in:
Nat Hillard 2021-05-19 08:40:05 -04:00 committed by GitHub
parent f2503e71fb
commit 788c303483
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 90 additions and 21 deletions

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View file

@ -1,27 +1,39 @@
graph LR
subgraph c["Community"]
input["Community Input"]
end
subgraph ds["Data Selection"]
Intake --> Roadmap --> Voting
input --> Intake
input --> Evolution
input --> Voting
Intake --> Evolution --> Voting
end
subgraph dp["Data Pipeline"]
Voting --> Approved
Approved --> Properties
Approved --> Geometries
Properties --> GeoJSON
Geometries --> GeoJSON
end
subgraph s["Server(s)"]
GeoJSON --> db[("Feature Database")]
db --> tileserv["Tile Server"]
tileserv --> lb["Load Balancer"]
lb --> auth["Auth, IP Allowlist, API Key, OpenAPI"]
auth --> api
end
subgraph j40["Justice40 Client"]
api --> vl["Justice40 Visualization Library"]
ts["Tile Styling"] --> vl
vl --> fe["Justice40 Static Site Frontend"]
subgraph s["Geoplatform.gov"]
subgraph dp["Data Pipeline (Justice40 Repo)"]
Voting --> a["Approved Datasets"]
a --> Properties
a --> Geometries
Properties --> Processing
Geometries --> Processing
input --> Processing
end
subgraph Server
Processing --> GeoJSON
GeoJSON --> db[("Feature Database")]
db --> tileserv["Tile Server"]
end
subgraph j40["Justice40 Client"]
tileserv --> vl
ts["Tile Styling"] --> vl["Justice40 Visualization Library"]
vl --> fe["Justice40 Static Site Frontend"]
end
end
subgraph oc["Other Clients"]
api --> 3p["Third Party Apps"]
tileserv -- API --> 3p["Third Party Apps"]
GeoJSON -- API --> 3p
db -- API --> 3p
end

View file

@ -0,0 +1,57 @@
# Hosting
- Status: Proposed
- Deciders: Justice40 Team
- Date: 2021-05-18
- Tags: Hosting, Server, Geoplatform
Technical Story: https://github.com/usds/justice40-tool/issues/18 + https://github.com/usds/justice40-tool/issues/36
## Context and Problem Statement
We need a host for our data pipeline and front end website/app.
## Decision Drivers
- **Speed of launch** - We have a mandate to launch an initial version of our tool by July 27, and we want to get an informational site up much sooner.
- **Support for continuous integration and delivery** - We need our hosting provider to support a modern software development lifecycle that includes continuous integration and delivery, such as integration with our Github repository and CI/CD tool such as Github Actions.
- **Ease of implementation** - Ideally we can choose a platform that some of the team has experience with, that doesn't have a steep learning curve, and/or that has good support.
- **Commitment to open source and process** - Any code used for servers, data processing, or front end hosting must be able to be open source, so there cannot be limitations with regard to where/how code is hosted and shared.
## Considered Options
- Geoplatform
- Cloud.gov
## Decision Outcome
We will use Geoplatform.gov for hosting our data pipeline, tile server, and front end client. They have a set of shared service offerings that will enable us to have an open data pipeline from data source to tile API, enabling contributions to data processing at any point as well as enabling data access for users at any point (e.g. whether a user wants to access raw data or GeoJSON or tile format). See this ![diagram](architecture.mmd.svg) that illustrates the proposed system architecture and hosting.
### Positive Consequences
- No need to stand up our own servers for data processing or vending tiles
- No need to find separate static site hosting for our front end
- Help advance shared geo services for government
- Code for data transformations can live on an open Github repo and be collaborated on by the community
### Negative Consequences
- Possible delays or additional work: Some features and offerings we may want to use are still a work in progress on Geoplatform's side, so we may have to help build these out or wait for their release.
## Pros and Cons of Other Options
### Cloud.gov
Pros:
- Control over software development lifecycle including open source code and CI/CD setup
- Supports CI/CD
- Supports a shared service in government
- The team has experience with Cloud.gov
Cons:
- We would not be able to launch our website or backend on our expected timeline
- Would require a lot more build on our part for the data pipeline and tile server
- Would not have the flexibility to easily run serverless functions if we needed to
## Links <!-- optional -->