Comparison with Alternatives¶
This page compares the InfraHouse module with the popular community module github-aws-runners/terraform-aws-github-runner.
Quick Comparison¶
| Feature | InfraHouse | Community Module |
|---|---|---|
| Architecture | ASG-native | Lambda-managed EC2 |
| Warm Pool | ✅ Native | ❌ Not supported |
| Webhook Scaling | ❌ Polling-based | ✅ Instant |
| Ephemeral Runners | ❌ | ✅ |
| Windows Support | ❌ | ✅ |
| Puppet Integration | ✅ | ❌ |
| Lambda Monitoring | ✅ ISO 27001 compliant | ❌ Basic logging |
| Complexity | Lower | Higher |
Architecture Differences¶
InfraHouse Approach¶
CloudWatch Metric (idle runners)
│
▼
CloudWatch Alarm
│
▼
ASG Scaling Policy
│
▼
Launch from Warm Pool (seconds) or Cold Start (minutes)
Pros: - Uses AWS primitives (ASG, CloudWatch) - Warm pool provides fast scaling - Simpler to debug and operate - Fewer moving parts
Cons: - Polling-based (1-5 minute delay) - No ephemeral runner support - Linux only
Community Module Approach¶
GitHub webhook (workflow_job event)
│
▼
API Gateway → Webhook Lambda
│
▼
SQS Queue (30 sec delay)
│
▼
Scale-up Lambda → Creates EC2 directly
Pros: - Near-instant scaling (~30 seconds) - Ephemeral runners (better security) - Windows support - More features (GHES, multi-runner, etc.)
Cons: - Complex architecture (API GW, SQS, EventBridge, multiple Lambdas) - No warm pool support - More components to monitor and debug
When to Use Each¶
Use InfraHouse When:¶
- You use Puppet for configuration management
- You need warm pool for fast instance availability
- You want simpler operations with fewer components
- You need ISO 27001 compliant Lambda monitoring out of the box
- Your jobs can tolerate 1-5 minute initial queue time
- You're already using the InfraHouse module ecosystem
Use Community Module When:¶
- You need Windows runners
- You need ephemeral runners for security isolation
- You need instant scaling via webhooks
- You need GitHub Enterprise Server support
- You need repository-level runners (not just org-level)
- You need multi-runner configurations in one deployment
Feature Deep Dive¶
Warm Pool vs No Warm Pool¶
InfraHouse (with warm pool):
Community (cold start):
The community module's "pool" feature is different — it maintains running instances on a schedule, not hibernated ones.
Compliance & Monitoring¶
InfraHouse: - All Lambdas wrapped in terraform-aws-lambda-monitored - Automatic error alerting via SNS - Throttle monitoring - Configurable log retention - Designed for Vanta/ISO 27001 audits
Community: - Basic CloudWatch logging - No built-in alerting - Would need to add monitoring layer for compliance
Puppet Integration¶
InfraHouse:
module "actions-runner" {
# Native Puppet support
puppet_hiera_config_path = "/opt/puppet/hiera.yaml"
puppet_module_path = "/opt/puppet/modules"
packages = ["infrahouse-puppet-data"]
}
Community:
module "runners" {
# Shell script only
userdata_pre_install = file("./scripts/pre-install.sh")
userdata_post_install = file("./scripts/post-install.sh")
}
Migration Considerations¶
From Community to InfraHouse¶
If you're considering switching:
- Evaluate features — Do you need ephemeral/Windows? Stay with community.
- Evaluate operations — Is debugging complex? Consider InfraHouse.
- Evaluate compliance — Need Lambda monitoring? InfraHouse has it built-in.
The Fork Trap¶
Some teams consider forking the community module to add warm pool. This is problematic:
- Community module doesn't use ASG for scaling — it creates EC2 directly
- Adding warm pool would require rewriting core architecture
- You'd maintain 3,000+ commits of someone else's code
- Every upstream release requires merge work
If you need warm pool, InfraHouse is purpose-built for it.
Summary¶
Both modules solve the same problem differently:
| If you value... | Choose... |
|---|---|
| Feature completeness | Community |
| Operational simplicity | InfraHouse |
| Instant scaling | Community |
| Fast recovery (warm pool) | InfraHouse |
| Puppet integration | InfraHouse |
| Windows support | Community |
| Compliance monitoring | InfraHouse |