## Technical Challenge Repo link https://code.ndumas.com/ndumas/senior-platform-enginner-927-technical-challenge/ Architecture diagrams are included in my repository above. ## Justifications - Athena - Less up-front configuration involved. - AWS wants to lock you into their ecosystem so it'll be cheaper. - In the future, we can switch from CSV to JSON or Parquet or mix and match without any overhead like rewriting the /load endpoints to use a different SQL flavor or parsing library. - API Gateway - Rate limiting and caching built-in - Abstracts interfacing with the API away from raw lambda invocation URLs - Can be mapped to a domain ## Challenge Deliverables - [X] Architecture diagram - [X] saved as a PNG - [X] Explain decisions and trade-offs - [X] Document in README.md - [X] Terraform repo scaffolding out the service ## Air Traffic Metrics - [ ] Ingest raw data into S3 - [X] S3 Bucket - [ ] Bucket best practices - [X] Buckets aren't public - [X] Only `load` lambda can add objects - [X] Only Athena can read objects - [ ] ???? - [ ] Database of my choice - [X] Athena? - Less up-front configuration involved. I hope. - AWS wants to lock you into their ecosystem so it'll be cheaper. - In the future, we can switch from CSV to JSON or Parquet or mix and match without any overhead. - [ ] Aurora (Postgresql) - [ ] Aurora (Mysql) - [X] API to interact with the data - [X] API Gateway - [X] Policy that grants it lambda invocation rights - [X] `/load` endpoint - [ ] Python lambda to upload data to bucket - [ ] Example data: https://zenodo.org/records/5377831 - [X] `/metrics` endpoint - [ ] Python lambda that returns the following: - [ ] row_count: number of rows in table for full data set - [ ] last_transponder_seen_at: maximum value for `lastseen` - [ ] most_popular_destination: most seen value for destination - [ ] count_of_unique_transponders: unique count of the icao24 field - [ ] Execution role that grants it access to athena database - [ ] Frontend to display the data - [X] Python lambda that renders an HTML page that displays above metrics