d8a80f6272
이름만 다른(표기 변형) [[위키링크]]를 대상 문서의 canonical 제목으로 치환해 끊겼던 1,200개 링크를 연결. 제목/파일명 정규화 일치만 적용하고 별칭 매칭은 과병합 위험으로 제외(애매성 가드). 원본은 _link_reconcile_backup/ 에 백업. 도구: Datacollect/scripts/link_reconcile_apply.mjs Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
243 lines
7.7 KiB
Markdown
243 lines
7.7 KiB
Markdown
---
|
||
id: wiki-2026-0508-axify
|
||
title: Axify (Engineering Productivity Platform)
|
||
category: 10_Wiki/Topics
|
||
status: verified
|
||
canonical_id: self
|
||
aliases: [Axify, DORA dashboard, value stream mapping, engineering metrics, AI impact measurement]
|
||
duplicate_of: none
|
||
source_trust_level: B
|
||
confidence_score: 0.85
|
||
verification_status: applied
|
||
tags: [dora, devops-metrics, engineering-productivity, value-stream, ai-impact, axify, observability]
|
||
raw_sources: []
|
||
last_reinforced: 2026-05-10
|
||
github_commit: pending
|
||
tech_stack:
|
||
language: SaaS
|
||
framework: Axify Platform
|
||
---
|
||
|
||
# Axify
|
||
|
||
## 📌 한 줄 통찰
|
||
> **"매 engineering productivity 의 데이터화"**. 매 DORA + value stream + AI 도입 의 measure. 매 vanity metric (사용량) 의 X — 매 actual outcome (lead time, deploy freq) 의 track. 매 modern engineering leader 의 dashboard.
|
||
|
||
## 📖 핵심
|
||
|
||
### 매 product
|
||
- 매 SaaS platform.
|
||
- 매 engineering leader 의 target.
|
||
- 매 DORA + VSM + AI impact.
|
||
|
||
### DORA Metrics (4 key)
|
||
1. **Deployment Frequency**: 매 production 의 deploy 빈도.
|
||
2. **Lead Time for Changes**: 매 commit → prod 의 시간.
|
||
3. **Mean Time to Recover (MTTR)**: 매 incident 의 회복.
|
||
4. **Change Failure Rate**: 매 deploy 후 의 incident 비율.
|
||
|
||
→ 매 Google "Accelerate" 책 의 5-year research.
|
||
|
||
### DORA tier
|
||
| Tier | Deploy freq | Lead time | MTTR | CFR |
|
||
|---|---|---|---|---|
|
||
| Elite | On-demand | <1 hr | <1 hr | 0-15% |
|
||
| High | weekly-monthly | 1 day-1 week | <1 day | 16-30% |
|
||
| Medium | monthly | 1 week-1 month | <1 day | 16-30% |
|
||
| Low | <monthly | 1-6 months | >1 week | 16-30% |
|
||
|
||
### Value Stream Mapping (VSM)
|
||
- 매 idea → prod 의 entire flow.
|
||
- 매 wait time vs work time.
|
||
- 매 bottleneck identify.
|
||
- 매 Kanban / Lean 의 origin.
|
||
|
||
### Axify Intelligence
|
||
- 매 LLM-powered analyst.
|
||
- 매 generic LLM 가 X — 매 org 의 repo / pipeline / incident 의 학습.
|
||
- 매 metric 변동 의 cause analysis.
|
||
- 매 chatbot 의 query.
|
||
|
||
### AI Impact 측정 (vs vanity metric)
|
||
| Vanity (X) | Real (✓) |
|
||
|---|---|
|
||
| 매 PR 의 # | 매 PR cycle time |
|
||
| 매 AI 의 사용량 | 매 first review time |
|
||
| 매 suggestion 의 # | 매 acceptance rate |
|
||
| 매 line 의 generated | 매 deploy frequency |
|
||
| 매 활성 user | 매 lead time |
|
||
|
||
### 매 integration
|
||
- **VCS**: GitHub, GitLab, Bitbucket, Azure DevOps.
|
||
- **CI/CD**: Jenkins, CircleCI, GitHub Actions.
|
||
- **Issue**: Jira, Linear.
|
||
- **Chat**: Slack, MS Teams.
|
||
|
||
### 매 case study
|
||
- **BDC**: 매 51% deploy speed 향상.
|
||
- **Newforma**: 매 22× deploy 의 frequency.
|
||
|
||
### 매 alternative
|
||
- **LinearB**: similar.
|
||
- **Faros AI**: data layer.
|
||
- **Code Climate Velocity**: similar.
|
||
- **Sleuth**: incident-focused.
|
||
- **Pluralsight Flow**: open-source-friendly.
|
||
|
||
## 💻 패턴
|
||
|
||
### DORA collection (custom)
|
||
```python
|
||
from datetime import datetime, timedelta
|
||
from github import Github
|
||
|
||
g = Github('token')
|
||
repo = g.get_repo('org/repo')
|
||
|
||
def deployment_frequency(weeks=4):
|
||
cutoff = datetime.now() - timedelta(weeks=weeks)
|
||
deploys = [d for d in repo.get_deployments()
|
||
if d.created_at > cutoff and d.environment == 'production']
|
||
return len(deploys) / weeks # 매 deploys per week
|
||
|
||
def lead_time(weeks=4):
|
||
cutoff = datetime.now() - timedelta(weeks=weeks)
|
||
deploys = [d for d in repo.get_deployments()
|
||
if d.created_at > cutoff and d.environment == 'production']
|
||
|
||
lead_times = []
|
||
for d in deploys:
|
||
commit = repo.get_commit(d.sha)
|
||
lead_times.append((d.created_at - commit.commit.author.date).total_seconds() / 3600)
|
||
|
||
return median(lead_times) # hours
|
||
|
||
def mttr(weeks=4):
|
||
cutoff = datetime.now() - timedelta(weeks=weeks)
|
||
incidents = fetch_incidents(cutoff) # 매 PagerDuty / Sentry / etc.
|
||
return median(i.resolved_at - i.started_at for i in incidents).total_seconds() / 3600
|
||
|
||
def change_failure_rate(weeks=4):
|
||
deploys = count_deploys(weeks)
|
||
incidents = count_incidents(weeks, related_to_deploy=True)
|
||
return incidents / deploys
|
||
```
|
||
|
||
### Value Stream visualization
|
||
```python
|
||
def value_stream_data(repo, weeks=4):
|
||
cutoff = datetime.now() - timedelta(weeks=weeks)
|
||
stages = {
|
||
'idea_to_first_commit': [],
|
||
'first_commit_to_pr': [],
|
||
'pr_to_review': [],
|
||
'review_to_merge': [],
|
||
'merge_to_deploy': [],
|
||
}
|
||
|
||
for ticket in fetch_tickets(cutoff):
|
||
commits = ticket.linked_commits()
|
||
prs = ticket.linked_prs()
|
||
deploys = ticket.linked_deploys()
|
||
|
||
if commits and ticket.created_at:
|
||
stages['idea_to_first_commit'].append(commits[0].time - ticket.created_at)
|
||
# ... etc
|
||
|
||
return {stage: median(times) for stage, times in stages.items()}
|
||
```
|
||
|
||
### AI Impact measurement
|
||
```python
|
||
def ai_review_impact(before_date, after_date):
|
||
"""매 AI 의 도입 전 / 후 의 metric 비교."""
|
||
metrics = ['lead_time', 'pr_cycle_time', 'first_review_time',
|
||
'deploy_frequency', 'change_failure_rate']
|
||
|
||
return {
|
||
m: {
|
||
'before': calculate(m, ref_date=before_date, window=4),
|
||
'after': calculate(m, ref_date=after_date, window=4),
|
||
}
|
||
for m in metrics
|
||
}
|
||
|
||
# 매 statistical significance check
|
||
def is_significant(before_samples, after_samples, alpha=0.05):
|
||
from scipy import stats
|
||
_, p = stats.ttest_ind(before_samples, after_samples)
|
||
return p < alpha
|
||
```
|
||
|
||
### Slack notification (DORA)
|
||
```python
|
||
import slack_sdk
|
||
|
||
def post_weekly_dora():
|
||
metrics = {
|
||
'deploy_freq': deployment_frequency(),
|
||
'lead_time_hours': lead_time(),
|
||
'mttr_hours': mttr(),
|
||
'cfr_pct': change_failure_rate() * 100,
|
||
}
|
||
|
||
text = f"""*Weekly DORA*
|
||
:rocket: Deploys: {metrics['deploy_freq']:.1f}/week
|
||
:stopwatch: Lead time: {metrics['lead_time_hours']:.1f}h
|
||
:wrench: MTTR: {metrics['mttr_hours']:.1f}h
|
||
:fire: CFR: {metrics['cfr_pct']:.1f}%"""
|
||
|
||
slack_client.chat_postMessage(channel='#engineering', text=text)
|
||
```
|
||
|
||
### Outcome > vanity check
|
||
```python
|
||
def is_real_improvement(metric_before, metric_after, vanity_metric_change):
|
||
"""매 vanity 의 increase 가 매 real metric 의 improve?"""
|
||
real_improvement = metric_after['lead_time'] < metric_before['lead_time']
|
||
if vanity_metric_change > 0 and not real_improvement:
|
||
return 'WARN: vanity-only — 매 사용량 ↑ 가, 매 lead time 의 변화 X'
|
||
return 'OK' if real_improvement else 'NEUTRAL'
|
||
```
|
||
|
||
## 🤔 결정 기준
|
||
| 상황 | Tool |
|
||
|---|---|
|
||
| Modern team | Axify / LinearB |
|
||
| Open-source / DIY | Custom DORA script |
|
||
| Incident-focused | Sleuth |
|
||
| Data warehouse | Faros AI |
|
||
| Manual | GitHub Insights |
|
||
| Free tier | Pluralsight Flow |
|
||
|
||
**기본값**: DORA + VSM + AI impact 의 monthly review.
|
||
|
||
## 🔗 Graph
|
||
- 부모: [[DevOps]] · [[SRE]]
|
||
- 변형: [[DORA-Metrics]] · [[Value-Stream-Mapping]] · [[Engineering-Metrics]]
|
||
- Adjacent: [[CI CD]] · [[Git Branching Strategies]] · [[Code-Review]] · [[Goodharts-Law]]
|
||
|
||
## 🤖 LLM 활용
|
||
**언제**: 매 engineering metrics 의 design. 매 AI tool 도입 의 ROI 의 measure. 매 productivity dashboard.
|
||
**언제 X**: 매 individual surveillance (toxic). 매 single metric goal (Goodhart).
|
||
|
||
## ❌ 안티패턴
|
||
- **Vanity metric 만**: 매 사용량 ↑ 가, 매 outcome X.
|
||
- **Individual measure**: 매 surveillance.
|
||
- **Single metric goal**: 매 game.
|
||
- **No baseline**: 매 before-after 비교 X.
|
||
- **Real-time alert 의 noise**: 매 fatigue.
|
||
- **No statistical sig**: 매 noise 의 trend mistake.
|
||
|
||
## 🧪 검증 / 중복
|
||
- Verified (DORA "Accelerate" book, Axify docs).
|
||
- 신뢰도 B.
|
||
- Related: [[Quality_Code_Review_Modern]] · [[Git Branching Strategies]] · [[Goodharts-Law]] · [[CI CD]].
|
||
|
||
## 🕓 Changelog
|
||
| 날짜 | 변경 |
|
||
|---|---|
|
||
| 2026-04-18 | Auto-mapped |
|
||
| 2026-05-08 | Phase 1 |
|
||
| 2026-05-10 | Manual cleanup — DORA + VSM + AI impact + 매 GitHub API DORA collection code |
|