Skip to content

Commit f2995c4

Browse files
committed
Add feature comparison matrix
1 parent 499b01a commit f2995c4

File tree

5 files changed

+274
-3
lines changed

5 files changed

+274
-3
lines changed

CLAUDE.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ environments/{env}/
7777

7878
## Essential Commands
7979

80+
> **Note**: For a detailed comparison of features available through shell scripts vs Terraform CLI vs GitHub Actions, see [docs/FEATURES.md](docs/FEATURES.md).
81+
8082
### Environment Management
8183

8284
```bash

README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,7 @@ Flutter, React Native, Ionic
260260
## 📖 Documentation
261261

262262
- **[📋 Usage Guide](docs/USAGE.md)** - Complete usage examples, GitHub Actions workflows, and troubleshooting
263+
- **[🎯 Feature Comparison](docs/FEATURES.md)** - Detailed feature matrix comparing shell scripts, Terraform/CLI, and GitHub Actions deployment methods
263264
- **[🏗️ Architecture Guide](docs/ARCHITECTURE.md)** - System design, components, CI/CD flows, and Mermaid diagrams
264265
- **[🎯 Templates Guide](docs/TEMPLATES.md)** - Comprehensive listing of all 21+ workspace templates with usage examples
265266
- **[🤖 AI Assistant Context](CLAUDE.md)** - Technical context for Claude Code integration and new capabilities
@@ -610,9 +611,9 @@ MIT License - see [LICENSE](LICENSE) for details.
610611

611612
---
612613

613-
**🚀 Ready to get started?** Choose your deployment method:
614-
- **Quick Start**: `./scripts/lifecycle/setup.sh --env=dev --template=react-typescript`
614+
**🚀 Ready to get started?** Check our [Feature Comparison](docs/FEATURES.md) to choose your deployment method:
615+
- **Shell Scripts**: `./scripts/lifecycle/setup.sh --env=dev --template=react-typescript`
615616
- **GitHub Actions**: `gh workflow run deploy-environment.yml`
616-
- **Comprehensive Setup**: Check the [Usage Guide](docs/USAGE.md)
617+
- **Terraform/CLI**: See the [Usage Guide](docs/USAGE.md)
617618

618619
**Need help?** Check the [documentation](docs/) or [create an issue](../../issues) 📞

docs/ARCHITECTURE.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,8 @@ environments/
118118
└── coder/
119119
```
120120

121+
For a comprehensive comparison of deployment methods and their capabilities, see the [Feature Comparison Guide](FEATURES.md).
122+
121123
## CI/CD & GitHub Actions Architecture
122124

123125
### GitHub Actions Workflow Architecture

docs/FEATURES.md

Lines changed: 257 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,257 @@
1+
# Feature Comparison Matrix
2+
3+
## Deployment Methods Overview
4+
5+
| Method | Description | Primary Use Case |
6+
|--------|-------------|------------------|
7+
| **Shell Scripts** | Direct CLI execution via bash scripts | Local development, automation, CI/CD |
8+
| **Terraform/CLI** | Direct Terraform commands with Scaleway CLI | Manual operations, debugging, custom workflows |
9+
| **GitHub Actions** | Automated workflows via GitHub | Team collaboration, GitOps, production deployments |
10+
11+
## Feature Implementation Status
12+
13+
### Legend
14+
-**Full Support** - Feature fully implemented and tested
15+
- 🔄 **Partial Support** - Feature partially implemented or requires manual steps
16+
-**Not Available** - Feature not implemented
17+
- 🚧 **Planned** - Feature planned but not yet implemented
18+
19+
---
20+
21+
## 🏗️ Infrastructure Management
22+
23+
| Feature | Shell Scripts | Terraform/CLI | GitHub Actions |
24+
|---------|--------------|---------------|----------------|
25+
| **Two-Phase Deployment** |
26+
| Phase 1: Infrastructure only |`--no-coder` | ✅ Direct apply | ✅ deploy-infrastructure.yml |
27+
| Phase 2: Coder application only | ✅ Auto after Phase 1 | ✅ Manual apply | ✅ deploy-coder.yml |
28+
| Combined deployment | ✅ Default behavior | ✅ Legacy structure | ✅ deploy-environment.yml |
29+
| **Cluster Management** |
30+
| Create Kubernetes cluster ||||
31+
| Auto-scaling configuration ||||
32+
| CNI (Cilium) setup ||||
33+
| Node pool management ||||
34+
| **Database Management** |
35+
| PostgreSQL provisioning ||||
36+
| Environment-specific sizing ||||
37+
| HA configuration (prod) ||||
38+
| Database resize | ✅ database-resize.sh | 🔄 Manual ||
39+
| **Networking** |
40+
| VPC creation ||||
41+
| Load balancer setup ||||
42+
| Security groups ||||
43+
| DNS/SSL configuration ||||
44+
| **Remote State Management** |
45+
| Backend auto-provisioning | ✅ setup-backend.sh | 🔄 Manual init | ✅ Automatic |
46+
| State migration | ✅ migrate-state.sh | 🔄 Manual ||
47+
| State backup | ✅ state-manager.sh | 🔄 Manual | 🔄 On teardown |
48+
| State inspection | ✅ state-manager.sh | ✅ terraform show ||
49+
| Drift detection | ✅ state-manager.sh | ✅ terraform plan | 🔄 In PR comments |
50+
51+
## 📦 Application Deployment
52+
53+
| Feature | Shell Scripts | Terraform/CLI | GitHub Actions |
54+
|---------|--------------|---------------|----------------|
55+
| **Coder Platform** |
56+
| Helm deployment ||||
57+
| Version management ||||
58+
| Persistent volumes ||||
59+
| Ingress configuration ||||
60+
| OAuth integration ||||
61+
| **Template System** |
62+
| Deploy all templates ||||
63+
| Deploy specific template |`--template=` | 🔄 Manual | ✅ Input parameter |
64+
| Template validation | ✅ test-runner.sh | 🔄 Manual | ✅ validate-templates.yml |
65+
| Template documentation | ✅ generate-template-docs.sh || 🔄 In validation |
66+
67+
## 💰 Cost Management
68+
69+
| Feature | Shell Scripts | Terraform/CLI | GitHub Actions |
70+
|---------|--------------|---------------|----------------|
71+
| **Cost Analysis** |
72+
| Real-time cost calculation | ✅ cost-calculator.sh || ✅ In workflows |
73+
| Environment comparison |`--env=all` || 🔄 In PR comments |
74+
| Detailed breakdown |`--detailed` |||
75+
| JSON/CSV export |`--format=` |||
76+
| **Budget Management** |
77+
| Set budget alerts |`--set-budget=` |||
78+
| Threshold monitoring |`--alert-threshold=` |||
79+
| Cost optimization tips ||| 🔄 In comments |
80+
81+
## 🔒 Security & Compliance
82+
83+
| Feature | Shell Scripts | Terraform/CLI | GitHub Actions |
84+
|---------|--------------|---------------|----------------|
85+
| **Security Auditing** |
86+
| Comprehensive audit | ✅ security-audit.sh || 🔄 Template scan only |
87+
| RBAC validation || 🔄 Manual ||
88+
| Network policy check || 🔄 Manual ||
89+
| Pod Security Standards ||||
90+
| **Remediation** |
91+
| Auto-remediation | ✅ security-remediation.sh |||
92+
| Security reports |`--format=json` || 🔄 Artifacts |
93+
| Compliance checks ||| 🔄 Checkov scan |
94+
95+
## 📊 Monitoring & Observability
96+
97+
| Feature | Shell Scripts | Terraform/CLI | GitHub Actions |
98+
|---------|--------------|---------------|----------------|
99+
| **Health Checks** |
100+
| Infrastructure validation | ✅ validate.sh | ✅ terraform validate ||
101+
| Application health || 🔄 kubectl | ✅ Post-deploy |
102+
| Quick health check |`--quick` |||
103+
| **Resource Tracking** |
104+
| Resource usage analysis | ✅ resource-tracker.sh | 🔄 Manual ||
105+
| Optimization recommendations |`--optimize` |||
106+
| User activity reports | ✅ user-activity-report.sh |||
107+
108+
## 🧪 Testing & Validation
109+
110+
| Feature | Shell Scripts | Terraform/CLI | GitHub Actions |
111+
|---------|--------------|---------------|----------------|
112+
| **Test Suites** |
113+
| Prerequisites check ||||
114+
| Unit tests | ✅ test-runner.sh |||
115+
| Integration tests | ✅ run-integration-tests.sh |||
116+
| E2E tests | ✅ run-e2e-tests.sh |||
117+
| Smoke tests ||||
118+
| **Validation Options** |
119+
| Dry run mode |`--dry-run` | ✅ terraform plan | ✅ Input option |
120+
| Format checking || ✅ terraform fmt ||
121+
| Syntax validation || ✅ terraform validate ||
122+
123+
## 💾 Backup & Recovery
124+
125+
| Feature | Shell Scripts | Terraform/CLI | GitHub Actions |
126+
|---------|--------------|---------------|----------------|
127+
| **Backup Operations** |
128+
| Complete environment backup | ✅ backup.sh || 🔄 Pre-teardown |
129+
| Database backup |`--include-database` || 🔄 |
130+
| State backup |`--include-state` | 🔄 Manual | 🔄 |
131+
| Workspace backup |`--include-workspaces` |||
132+
| **Recovery** |
133+
| Full restoration | ✅ restore.sh |||
134+
| Selective restore ||||
135+
| Retention policies |`--retention-days=` |||
136+
137+
## ⚙️ Scaling & Performance
138+
139+
| Feature | Shell Scripts | Terraform/CLI | GitHub Actions |
140+
|---------|--------------|---------------|----------------|
141+
| **Cluster Scaling** |
142+
| Manual node scaling | ✅ scale.sh | ✅ Variable change | 🔄 Redeploy |
143+
| Auto-scaling setup |`--auto` |||
144+
| Cost analysis |`--analyze-cost` || 🔄 |
145+
| Dry run scaling |`--analyze-only` | ✅ terraform plan ||
146+
| **Performance** |
147+
| Resource optimization || 🔄 Manual ||
148+
| Workload analysis || 🔄 kubectl top ||
149+
150+
## 🔄 Lifecycle Management
151+
152+
| Feature | Shell Scripts | Terraform/CLI | GitHub Actions |
153+
|---------|--------------|---------------|----------------|
154+
| **Deployment** |
155+
| Multi-environment support ||||
156+
| Environment promotion || 🔄 Manual | 🔄 Manual trigger |
157+
| Rollback capability || ✅ State versioning ||
158+
| **Teardown** |
159+
| Safe teardown | ✅ teardown.sh | ✅ terraform destroy | ✅ teardown-environment.yml |
160+
| Pre-destroy backup |`--backup` || ✅ Automatic |
161+
| Confirmation required |`--confirm` || ✅ Manual approval |
162+
| **Maintenance** |
163+
| Log cleanup ||| ✅ workflow-log-cleanup.yml |
164+
| Artifact management ||||
165+
166+
## 🔌 Integration & Automation
167+
168+
| Feature | Shell Scripts | Terraform/CLI | GitHub Actions |
169+
|---------|--------------|---------------|----------------|
170+
| **Hooks Framework** |
171+
| Pre-setup hooks ||| 🔄 Via scripts |
172+
| Post-setup hooks ||| 🔄 Via scripts |
173+
| Pre-teardown hooks ||| 🔄 Via scripts |
174+
| Post-teardown hooks ||| 🔄 Via scripts |
175+
| **External Integrations** |
176+
| Slack notifications | ✅ Via hooks || ✅ Native support |
177+
| GitHub integration | 🔄 || ✅ Native |
178+
| Custom webhooks | ✅ Via hooks || 🔄 |
179+
| **User Management** |
180+
| User provisioning | ✅ user-provisioning.sh |||
181+
| Bulk operations ||||
182+
| Activity tracking ||||
183+
184+
## 🎯 Environment-Specific Features
185+
186+
| Feature | Shell Scripts | Terraform/CLI | GitHub Actions |
187+
|---------|--------------|---------------|----------------|
188+
| **Development** |
189+
| Quick setup ||||
190+
| Cost optimization | ✅ Default configs |||
191+
| Minimal security ||||
192+
| **Staging** |
193+
| Production-like setup ||||
194+
| Enhanced security ||||
195+
| Auto-deployment ||| ✅ Optional flag |
196+
| **Production** |
197+
| High availability ||||
198+
| Full security ||||
199+
| Monitoring enabled |`--enable-monitoring` |||
200+
| Manual approval ||| ✅ Required |
201+
202+
## 📝 Documentation & Reporting
203+
204+
| Feature | Shell Scripts | Terraform/CLI | GitHub Actions |
205+
|---------|--------------|---------------|----------------|
206+
| **Documentation** |
207+
| Auto-generate docs | ✅ generate-template-docs.sh || 🔄 In validation |
208+
| Markdown reports ||| ✅ PR comments |
209+
| JSON/CSV exports | ✅ Multiple tools || 🔄 Artifacts |
210+
| **Logging** |
211+
| Structured logs || 🔄 terraform.log ||
212+
| Log rotation ||| ✅ Cleanup workflow |
213+
| Debug mode |`--verbose` | ✅ TF_LOG=DEBUG ||
214+
215+
## 🚀 Advanced Features
216+
217+
| Feature | Shell Scripts | Terraform/CLI | GitHub Actions |
218+
|---------|--------------|---------------|----------------|
219+
| **CI/CD Integration** |
220+
| PR validation ||||
221+
| Auto-merge support ||||
222+
| Branch deployments ||||
223+
| **GitOps** |
224+
| Declarative config | 🔄 |||
225+
| State reconciliation | 🔄 |||
226+
| Automated sync ||||
227+
| **Multi-tenancy** |
228+
| Workspace isolation ||||
229+
| Resource quotas ||||
230+
| Namespace separation ||||
231+
232+
---
233+
234+
## Summary by Use Case
235+
236+
### Best for Local Development
237+
**Shell Scripts** - Most comprehensive feature set for local operations, including:
238+
- Full lifecycle management
239+
- Advanced cost analysis
240+
- Security auditing and remediation
241+
- User management
242+
- Backup and recovery
243+
244+
### Best for Infrastructure as Code
245+
**Terraform/CLI** - Core infrastructure management with:
246+
- Direct state control
247+
- Declarative configuration
248+
- Version control friendly
249+
- Manual optimization possible
250+
251+
### Best for Team Collaboration
252+
**GitHub Actions** - Enterprise-ready automation with:
253+
- PR-based workflows
254+
- Automated validation
255+
- Native GitHub integration
256+
- Approval workflows
257+
- Centralized secret management

docs/USAGE.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,15 @@ chmod +x scripts/**/*.sh
5353
./scripts/lifecycle/setup.sh --check-prereqs
5454
```
5555

56+
## 🎯 Choosing Your Deployment Method
57+
58+
Before starting, review our [Feature Comparison Guide](FEATURES.md) to understand the capabilities of each deployment approach:
59+
- **Shell Scripts** - Best for local development and comprehensive features
60+
- **Terraform/CLI** - Best for infrastructure as code and manual control
61+
- **GitHub Actions** - Best for team collaboration and CI/CD
62+
63+
See the full [feature comparison matrix](FEATURES.md) for detailed information.
64+
5665
### First Deployment
5766

5867
Deploy your first development environment:

0 commit comments

Comments
 (0)