Skip to content

Environments

This document outlines our different environments and their purposes.

Development Environment: trially-development

Our development environment, trially-development, is designed for free-form testing and experimentation by our engineering team.

  • Purpose: Rapid prototyping, feature development, and individual testing
  • Access: Each engineer has owner IAM roles in this environment
  • Deployment: Manual or automated, based on individual engineer's workflow
  • Code Quality: May contain experimental, unreviewed code
  • Stability: Highly unstable, subject to frequent changes and resets

!!! warning "Security Note" While engineers have elevated permissions in this environment, it's crucial to follow security best practices and avoid storing sensitive data.

!!! warning "Cost Note" Avoid leaving resources running in this environment as it can incur costs.

Key Features

  1. Isolated Resources: Each engineer can work independently without affecting others.
  2. Flexible Configuration: Freedom to modify settings and test various configurations.
  3. Rapid Iteration: Quick deployment and teardown of resources for fast development cycles.
  4. Full IAM Control: Engineers can manage their own access and permissions for testing purposes.

Best Practices

  • Regularly clean up unused resources to minimize costs.
  • Use this environment for initial testing before moving to staging.
  • Avoid connecting to production data sources without proper safeguards.

Infrastructure not included in this environment

This environment closely mirrors production, but there are some services that are not included.

  • Cloud Composer: Local airflow deployments should be configured to trigger GCP specific tasks in this environment
  • Github Federation: Github federation is not available in this environment
  • Landing Page: The landing page is not available in this environment

Staging Environment: trially-staging

Our staging environment, trially-staging, serves as a pre-production testing ground.

  • Purpose: Pre-production testing and validation
  • Deployment Source: Automatically deployed on Pull Requests (PRs) for data-related repositories and on push to main for repositories using trunk-based development.
  • Code Quality: May contain unreviewed code
  • Stability: Unstable and experimental, subject to frequent changes

!!! note "Future Improvement" We are introducing trunk-based development in some repositories to make staging more stable and predictable.

Production Environment: trially

Our production environment, trially, is our live, customer-facing environment.

  • Purpose: Hosts our live, production services
  • Deployment Source: Code from main branches only. Deployment for user facing applications are done via manual releases
  • Code Quality: All deployed code has been reviewed
  • Stability: Stable and optimized for performance

Environment Comparison

Feature trially-dev trially-staging trially
Purpose Individual development and testing Pre-production testing Live, customer-facing services
Access Level Full owner IAM roles for engineers Limited, project-based access Strict, role-based access
Deployment Trigger Manual or automated per engineer On Pull Requests or on push to main From main branches and manual releases
Code Review Status Unreviewed, experimental May include unreviewed code All code reviewed
Stability Highly unstable Unstable, experimental Stable
Configuration Flexible, engineer-defined Mimics production Optimized for production