Eyenotate App

Description

This app is meant to infer the models built by the ACE Ophthalmology Team and other teams that are trained to segment the different retinal layers of OCT Volumes. The app allows you to quickly visualize the segmentation results of different apps in an interactive interfrace, and also download the individual OCT frames with their masks. This app is built with the intention of continuing to add more models to the app as they are developed of the ACE Ophthalmology Team and other teams that we decide to add or if they decide to add their own models.

High-Level Design

eyenotate_img.png

Team Responsible

The team responsible for maintaining and troubleshooting the application.

Main Point of Contact:

  • Adam Villard
  • Data Engineering Team
    • Slack: #ecdi-ace-data-engineering

GitHub

The repository for the application can be found at GitHub Link.

Deployment Information

It has two environments, one for staging and one for production; details are as follows:

StagingProduction
git branchdevmain
Deployment environmentace-test (EKS)
Namespace: eyenotate-staging
ace-test (EKS)
Namespace: eyenotate
Deployment toolhttps://argocd.eks.test.gred.ai/applications/argocd/eyenotate-staginghttps://argocd.eks.test.gred.ai/applications/argocd/eyenotate-prod
URL- http://eyenotate.test.staging.gred.ai/
- Accessible only via VPN
- Authentication via Okta
- http://eyenotate.test.gred.ai/
- Accessible only via VPN
- Authentication via Okta
S3 Bucket- gred-ace-application-eyenotate-staging
- Application connects to s3 via eyenotate-app-write-app-eyenotate-staging s3 access point
- gred-ace-application-eyenotate
- Application connects to s3 via eyenotate-app-write-app-eyenotate s3 access point
Service Account- serviceAccount Name: eyenotate-staging
- irsa role: arn:aws:iam::712649426017:role/irsa.ace-test.eyenotate.eyenotate-staging
- serviceAccount Name: eyenotate-prod
- irsa role: arn:aws:iam::712649426017:role/irsa.ace-test.eyenotate.eyenotate-prod

The Terraform workspace for the infrastructure can be found at Terraform Workspace Link.

How does the application get access to its s3 bucket ?

EKS Service account -> IRSA IAM Role -> The role has the tag id:app -> IAM Policy ace-eks-app-s3-access

Src: https://github.com/gred-ecdi/Containerization-Template

Branching Flow

This represents the branching of the Eyenotate repository.

Main (If it has a tag, it will reconcile production)___
\                                                    / 
 \_ Dev (Staging)___________________________________/
	                   \            / 
                        \_feat ____/

How does Main Branch get versions?

If there is a ‘fix’, ‘feat’, or ‘hotfix’ present in the git commit, the GitHub action release will bump up the version. So it’s automatically.

How does helm Chart get new versions?

You should manually update the helm verion in Chart.yaml.

Monitoring

  • Monitoring Dashboard: Grafana

    • Metrics being monitored: Memory usage by pod, CPU usage by pod, Replica Availability, PV Capacity

    • Alerts and notifications:

      1. PersistentVolumeUsage Alert (the alert destination is #ecdi-ace-infra-support)
  • Logging Dashboard: Logs are available on the same Grafana Dashboard.

    • To search logs in more details, please log in to OpenSearch > EKS ACE Test - Applications Dashboard > then choose namespace eyenotate