Skip to content

Latest commit

 

History

History
84 lines (69 loc) · 4.46 KB

File metadata and controls

84 lines (69 loc) · 4.46 KB

Technical Context: Gitpod

Technologies Used

Category Technologies
Programming Languages • Go: System-level services, K8s integration
• TypeScript: User-facing services, dashboard
• Java: JetBrains IDE integration
• Shell: Automation, build scripts
Frameworks & Libraries • React: Frontend UI
• gRPC: Service communication
• Protocol Buffers: Data serialization
• Kubernetes API: Workspace orchestration
• Docker API: Container management
• Leeway: Custom build system
Infrastructure • Kubernetes: Container orchestration
• Docker: Containerization
• MySQL/TypeORM: Persistent storage
• Redis: Caching, ephemeral storage
• Helm: K8s package management
• Terraform: Infrastructure as code
Development Tools • VS Code: TypeScript/JS development
• GoLand/IntelliJ: Go development
• pre-commit: Git hooks
• ESLint/Prettier: Code formatting
• Werft: CI/CD system

Development Setup

Local Development

  • Gitpod-based workflow (dogfooding)
  • Component-based independent development
  • Leeway build system for dependency management
  • Containerized development mirroring production

Build Process

Approach Description Common Commands
In-tree (Local Dev) • Direct in workspace
• Language-specific tools
TypeScript:
yarn build - Compile
yarn test - Run tests
yarn lint - Check style
yarn watch - Auto-rebuild

Go:
go build ./... - Build packages
go test ./... - Run tests
go run main.go - Build and run
Leeway (CI/CD) • Out-of-tree builds
• Manages dependencies
• Generates artifacts
leeway build components/name:app
leeway build -D components/name:app
leeway exec --package components/name:app -- cmd
Packaging • Docker images via leeway.Dockerfile
• Helm charts for K8s deployment

Testing Strategy

  • Unit tests: Component-level function/class testing
  • Integration tests: Cross-component interaction testing
  • End-to-end tests: Complete workflow validation
  • Preview environments: Dedicated feature testing

Technical Constraints

Category Requirements
Performance • Workspace startup < 10s when prebuilt
• Low-latency IDE over internet
• Efficient resource utilization
Security • Strong workspace isolation
• Least privilege component operation
• Secure user code/credential handling
• Controlled network access
Scalability • Horizontal scaling for all components
• Multi-cluster workspace distribution
• Enforced workspace resource limits
Compliance • GDPR: User data handling
• SOC2: Security and availability
• Data residency: Region-specific storage

Dependencies

External Dependencies

Category Dependencies
Git Providers GitHub, GitLab, Bitbucket, Azure DevOps
Container Registries Docker Hub, GCR, ECR
Cloud Providers GCP, AWS, Azure
IDE Platforms VS Code, JetBrains IDEs

Internal Dependencies

Component Depends On
Workspace Manager Kubernetes API, Image Builder, Content Service
Dashboard Auth Service, Workspace Manager, Content Service
IDE Service Workspace Manager, Content Service, Supervisor
Content Service Git providers, Storage systems
Supervisor IDE Service, Content Service

Key Third-Party Libraries

  • Kubernetes/Docker client libraries
  • Database drivers (MySQL, Redis)
  • gRPC/Protocol Buffers
  • React and UI libraries
  • Authentication libraries (OAuth, JWT)

Development Workflow

  1. Feature Planning: Requirements and design
  2. Implementation: Local development and testing
  3. Code Review: Pull request review process
  4. CI/CD: Automated testing and deployment
  5. Preview: Feature validation in test environments
  6. Release: Production deployment

Technical Debt and Challenges

Challenge Description
Component Coupling Some tight coupling between components
Test Coverage Incomplete coverage in certain areas
Documentation Some internal APIs lack detailed docs
Legacy Components Older components needing modernization
Build System Learning curve for custom build system