--- 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 | 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 - 부모: [[Engineering-Productivity]] · [[DevOps]] · [[SRE]] - 변형: [[DORA-Metrics]] · [[Value-Stream-Mapping]] · [[Engineering-Metrics]] - 응용: [[LinearB]] · [[Sleuth]] · [[Faros-AI]] - Adjacent: [[CI-CD]] · [[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]] · [[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 |