GenesisCare Questions Flashcards
(25 cards)
What was the Horizon stack?
Front end: react + apollo client sends graphQL queries and mutations
Apollo interacts with GraphQL layer via HTTP requests (Django and graphene library)
Django ORM (object relational mapping) communicates with PostgresQL for CRUD operations
How was authentication and authorisation managed for Horizon?
Auth0 by Okta
Users were part of AD groups in Azure
Upon login their AD group was mapped to a Django group with assigned permissions and they’d be redirected to /radiation /nurse etc
Patients we used Django’s built in auth, with a social auth plugin for MFA and to allow google SSO
What is Azure?
Microsofts cloud based Active Directory
How would data be transferred to and from Mosaiq?
Horizon to Mosaiq: Horizon would send FHIR payload to Iguana which would send back a status to Horizon. If a status 200 didn’t come back we would get a Sentry alert.
Mosaiq to Horizon: Redis stream.
What is Iguana?
Healthcare integration system that would sit before your EMR
How was CD used?
Github actions.
Continuous deployment for review envs, testing environments etc.
How was CI used?
Github actions would trigger unit tests (pytest, jest), the Docker image build + push to ECR and then run end to end tests (Cypress).
Pre commit actions including Snyk (sneak) to scan for secrets etc and not commit them.
What tools did you use for CI/CD?
GitHub Actions calls Makefile to build Docker image. Bash script authenticates with ECR and then pushes the docker image.
GitHub actions runs Terraform commands to perform any required config to provision the resources for ECS to pull the Docker image from ECR and deploy. Once Terraform applies the configuration, ECS pulls the image from ECR based on the task definition and deploys it to the ECS cluster.
Do you have any AWS experience?
(7)
Horizon, Iguana hosted on EC2
ECS used for container orchestration
Cloudfront CDN
RDS for Postgres database
S3 for document storage
Lambda to fetch documents ad hoc
ECR for review environments
AWS ECR?
Docker container registry that makes it easy to store, manage, and deploy container images.
AWS RDS?
Relational Database Service - managed our PostgreSQL DB
AWS EC2?
Virtual server (basically a VM)
AWS ECS?
A container orchestration service for running, managing, and scaling Docker containers on AWS.
AWS CloudFront?
CDN: Content delivery network
AWS S3?
Simple storage service - storing and retrieving data. Where we saved our images and documents.
AWS Lambda?
Runs a function/api call ad hoc when asked. We used it to fetch documents
How was DNS managed for Horizon?
Domains registered with Namecheap.
Private/internal: Azure (internal.horizon.genesiscare.com)
Public/external: Route53 (horizon.genesiscare.com)
Azure/Route53 have the TLD and the DNS records.
DNS records points to AWS CloudFront which delivers the content.
How did you manage load balancing with Horizon?
CloudFront routes the traffic through the AWS ELB which then distributes the load evenly across ECS-managed containers.
Difference between ECR and ECS?
ECR is a storage service specifically for container images. You push your container images here, and it keeps them safe until you’re ready to use them.
ECS is a service that runs and manages those containers on servers. Think of it as the place where your containers are actually deployed and operated, using the images stored in ECR.
How do ECR, ECS and EC2 work together?
ECR stores Docker images.
ECS pulls images from ECR and deploys them as containers onto EC2 instances
What is the difference between ALB and NLB?
Application load balancer - all http and https traffic
Network load balancer - everything else e.g. file transfers, datadog
What is the sticky session method for ELB?
Binds a user’s session to a specific instance, so all requests from that user during the session go to the same backend server, helping maintain session data for better continuity.
What is the round robin method for ELB?
Distributes incoming requests sequentially across all available backend instances, ensuring each instance receives a similar number of requests in a rotating order for balanced load distribution.