import pandas as pd
excel_path = 'DevOps_SRE_FTE_Model_v8.xlsx'
xls = pd.ExcelFile(excel_path)
df_intro = pd.read_excel(excel_path, sheet_name='안내')
print("--- Sheet: 안내 ---")
print(df_intro)
df_assump = pd.read_excel(excel_path, sheet_name='가정')
print("\n--- Sheet: 가정 ---")
print(df_assump)
df_summary = pd.read_excel(excel_path, sheet_name='Summary')
print("\n--- Sheet: Summary ---")
print(df_summary)
--- Sheet: 안내 ---
DevOps/SRE 운영인력 산정 모델 v6 — 활동유형(대분류) + 주간/월간 입력
0 NaN
1 ■ v6 개정 사항
2 1) Task_Catalog에 '활동유형(대분류)' 열 신설 — 9종: 단순 모니터링, 능동형 모니터링, 모니터링 개선, 반응형 업무 수행, VOC(질문), 업무 협의, 시스템 개선(업그레이드 포함), 아키텍처 개선, 내부회의(역량향상 포함)
3 2) '입력방식' 열 신설(건수/주간(h)/월간(h)) — 능동형 모니터링처럼 '주당 O시간' 형태가 자연스러운 Task는 건수×시간 대신 직접 주간/월간 공수로 입력 가능
4 3) 이전에 누락돼 있던 VOC(질문), 업무협의, 능동형 모니터링, 단순 모니터링 관련 Task를 신규 추가
5 4) Summary 시트에 '영역(Domain)별' 집계 외에 '활동유형별' 집계 표를 추가 — 두 관점에서 필요인력을 모두 확인 가능
6 5) '아키텍처 개선'은 프로젝트로 병행 진행될 경우 운영인력 산정에서 빠질 수 있어, Summary에 '아키텍처개선 제외' 소계를 별도로 표시
7 NaN
8 ■ 활동유형 구분 기준 (경계가 애매할 때 참고)
9 - 단순 모니터링 vs 능동형 모니터링: 정해진 루틴을 정해진 순서로 확인 vs 특별한 계기 없이 추세·이상징후를 스스로 판단하며 파고드는 것
10 - 능동형 모니터링 vs 모니터링 개선: '보는 행위' vs '보는 도구(대시보드/알람룰/파이프라인)를 만들거나 고치는 행위'
11 - 반응형 업무 vs VOC: 알람/티켓 등 정형 트리거로 시작 vs 메신저 등으로 비정형으로 들어오는 질문(조치가 필요해지면 그 시점부터 반응형 업무로 전환)
12 - VOC vs 업무협의: VOC는 1회성 짧은 답변 / 업무협의는 사전에 일정 잡힌 미팅·의사결정 프로세스
13 - 시스템 개선 vs 아키텍처 개선: 기존 컴포넌트의 버전업·튜닝(점진적) vs 구조 자체를 바꾸는 것(신규 컴포넌트 도입, 토폴로지 변경)
14 - 문서화(Confluence)는 별도 10번째 카테고리로 넣지 않고, 기존처럼 전체에 곱해지는 오버헤드 배율로 유지 — 9개 활동유형 각각에 문서화가 따라붙으므로 카테고리화하면 이중계산됨
15 - 온콜 대기(스탠바이)는 '시간 배분'이 아니라 '구조적 최소인원' 문제라 이 표에 포함하지 않음 — 별도 교차검증 필요
16 NaN
17 ■ 사용 방법
18 1) Task_Catalog의 노란 셀(현재 값 / 건당 소요시간)을 실측치로 수정 → 자동 재계산
19 2) '입력방식'이 '건수'가 아닌 행은 '건당 소요시간' 열이 사용되지 않습니다(비워두거나 무시)
20 3) Summary 시트에서 도메인별·활동유형별 FTE가 모두 자동 집계됩니다
21 NaN
22 ■ 색상 범례
23 노란색 배경 = 조정 대상 입력 셀
24 주황색 = Security(도입예정) 도메인 / 연두색 = 아키텍처 개선 활동유형(운영인력 산정 제외 가능)
--- Sheet: 가정 ---
항목 값 설명
0 [클러스터/노드 - 현재] NaN NaN
1 Compute 클러스터(cluster1) 노드수 450.000000 현재 운영 규모
2 Storage 클러스터(cluster2) 노드수 130.000000 현재 운영 규모
3 Warm-tier Storage 클러스터(cluster3) 노드수 130.000000 현재 운영 규모
4 기타(컨트롤플레인 등 미분류) 노드수 90.000000 800 - (450+130+130) 보정용
5 현재 총 노드수 800.000000 NaN
6 현재 클러스터 수 3.000000 NaN
7 NaN NaN NaN
8 [클러스터/노드 - 확장(내년, 별도 사이트 신규 클러스터)] NaN NaN
9 신규 클러스터 개수(별도 사이트, 원격관리 동일) 3.000000 '3~4개' 중 기본값 3
10 신규 클러스터 총 노드수 900.000000 이전 가정 총량 유지 — 실제 노드수로 교체 필요
11 확장후 기타(미분류) 노드수 90.000000 기존 클러스터 불변 가정이므로 현재와 동일
12 확장후 총 노드수 1700.000000 기존 3개(불변) + 신규 클러스터 노드수
13 확장후 클러스터 수 6.000000 기존 3개(불변) + 신규 클러스터 개수
14 NaN NaN NaN
15 [성장률 자동계산 및 가정] NaN NaN
16 노드수 성장률 1.125000 NaN
17 클러스터수 성장률 1.000000 NaN
18 요청량(업무량) 성장률 가정 0.500000 노드수/클러스터수 성장률 사이 추정치
19 고정 성장률 0.000000 규모와 무관하게 발생하는 업무
20 NaN NaN NaN
21 [Driver 조회표 - Task_Catalog에서 VLOOKUP 참조] NaN NaN
22 노드수-체감(GitOps) 0.457738 NaN
23 노드수-HW연동(선형) 1.125000 NaN
24 클러스터수 1.000000 NaN
25 요청량 0.500000 NaN
26 고정 0.000000 NaN
27 NaN NaN NaN
28 [AIOps(모니터링+제한된 변경) 절감률 가정] NaN NaN
29 관측 직접업무 절감률(알람/로그 트리아지 등) 0.200000 확장 후 대규모/다중사이트 환경에서 가시성 확대 가치를 반영
30 타 도메인 장애대응(간접) 절감률 - 원인분석(RCA) 단축 0.200000 대규모/다중클러스터 환경에서 원인분석 시간 단축 기대치 반영
31 장애대응-자동화후보(제한된 변경/Auto-remediation) 절감률 0.400000 반복적/안전/가역적 패턴 한정(재시작/재스케줄/롤백 등). 고위험(Quorum/ID/라우팅)은 제외
32 NaN NaN NaN
33 [문서화(Confluence 등) 오버헤드 가정] NaN NaN
34 문서화 오버헤드 배율 1.150000 모든 활동에 대한 Confluence 기록 시간(+15%). 실측으로 교체 권장
35 NaN NaN NaN
36 [FTE 환산 가정] NaN NaN
37 1인 연간 실가동시간(h) 1700.000000 연차/공휴일/교육 제외 실질 가용시간
38 Toil 상한 비율(참고용, Summary 별도표시) 0.500000 참고용 — v6는 활동유형 자체가 반응형/비반응형을 이미 구분하므로 필수 아님
--- Sheet: Summary ---
① 영역(Domain)별 집계 Unnamed: 1 Unnamed: 2 Unnamed: 3 Unnamed: 4 Unnamed: 5 Unnamed: 6 Unnamed: 7
0 구분 현재(h) 현재 FTE 확장후(h) 확장후 FTE AIOps적용후(h) AIOps적용후 FTE 증가분(h)
1 Kubernetes Platform 639.4 0.376118 1082.567508 0.636804 956.346804 0.562557 443.167508
2 Cilium(Native/BGP) 410.55 0.2415 656.056485 0.385916 553.2276 0.325428 245.506485
3 MinIO AIStor 462.3 0.271941 806.50045 0.474412 714.579311 0.420341 344.20045
4 OpenEBS 139.15 0.081853 229.764515 0.135156 181.856612 0.106974 90.614515
5 Keycloak 131.675 0.077456 156.1125 0.091831 146.4525 0.086149 24.4375
6 CI/CD 347.3 0.204294 637.1 0.374765 594.32 0.3496 289.8
7 Observability 612.375 0.360221 775.888209 0.456405 674.486757 0.396757 163.513209
8 Security(도입예정) 0 0 220.8 0.129882 199.64 0.117435 220.8
9 Architecture/거버넌스 568.1 0.334176 813.05 0.478265 813.05 0.478265 244.95
10 합계 3310.85 1.947559 5377.839666 3.163435 4833.959583 2.843506 2066.989666
11 NaN NaN NaN NaN NaN NaN NaN NaN
12 ② 활동유형(대분류)별 집계 NaN NaN NaN NaN NaN NaN NaN
13 구분 현재(h) 현재 FTE 확장후(h) 확장후 FTE AIOps적용후(h) AIOps적용후 FTE 증가분(h)
14 단순 모니터링 430.1 0.253 546.233568 0.321314 472.866854 0.278157 116.133568
15 능동형 모니터링 814.2 0.478941 1256.733607 0.739255 1005.386886 0.591404 442.533607
16 모니터링 개선 148.35 0.087265 221.358568 0.130211 214.458568 0.126152 73.008568
17 반응형 업무 수행 723.35 0.4255 1191.491011 0.700877 1003.867424 0.59051 468.141011
18 VOC(질문) 179.4 0.105529 269.1 0.158294 269.1 0.158294 89.7
19 업무 협의 121.9 0.071706 194.35 0.114324 194.35 0.114324 72.45
20 시스템 개선(업그레이드 포함) 723.35 0.4255 1390.372912 0.817866 1365.729851 0.803371 667.022912
21 아키텍처 개선 55.2 0.032471 193.2 0.113647 193.2 0.113647 138
22 내부회의(역량향상 포함) 115 0.067647 115 0.067647 115 0.067647 0
23 합계 3310.85 1.947559 5377.839666 3.163435 4833.959583 2.843506 2066.989666
24 NaN NaN NaN NaN NaN NaN NaN NaN
25 ③ 조정된 합계 (제외 시나리오) NaN NaN NaN NaN NaN NaN NaN
26 구분 현재(h) 현재 FTE 확장후(h) 확장후 FTE AIOps적용후(h) AIOps적용후 FTE NaN
27 전체 합계 3310.85 1.947559 5377.839666 3.163435 4833.959583 2.843506 NaN
28 Security(도입예정) 제외 3310.85 1.947559 5157.039666 3.033553 4634.319583 2.72607 NaN
29 아키텍처 개선 제외 3255.65 1.915088 5184.639666 3.049788 4640.759583 2.729859 NaN
30 Security + 아키텍처개선 모두 제외 3255.65 1.915088 4963.839666 2.919906 4441.119583 2.612423 NaN
31 NaN NaN NaN NaN NaN NaN NaN NaN
32 ■ 해석 NaN NaN NaN NaN NaN NaN NaN
33 - FTE = 연간시간 ÷ 1인 연간 실가동시간(가정 시트). v6은 활동유형이 이미 반응형/비반응형을 구분하므로 별도 Toil 50% 배율을 적용하지 않았습니다(순수 집계치). NaN NaN NaN NaN NaN NaN NaN
34 - ①번 표는 '어느 기술영역에 사람이 필요한가', ②번 표는 '그 사람들이 실제로 뭘 하며 시간을 쓰는가'를 보여줍니다. 두 표의 '합계' 행은 서로 일치해야 정상입니다. NaN NaN NaN NaN NaN NaN NaN
35 - ③번 표에서 '아키텍처 개선'을 프로젝트 인력으로 이미 별도 산정했다면 그 시나리오로 보시고, 운영팀이 겸임한다면 전체 합계로 보시면 됩니다. NaN NaN NaN NaN NaN NaN NaN
36 - 온콜 대기(구조적 최소인원)는 이 표에 포함되어 있지 않습니다 — 도메인별 최소 1~2명 이중화 요건과 별도로 교차검증하세요. NaN NaN NaN NaN NaN NaN NaN
# Calculate Bottom-up hours for 12 FTEs (2026) and 20 FTEs (2027)
fte_2026 = 12
fte_2027 = 20
hours_per_fte = 1700 # 1인 연간 실가동시간
total_hours_2026 = fte_2026 * hours_per_fte # 20,400 h
total_hours_2027 = fte_2027 * hours_per_fte # 34,000 h
print(f"2026 Total Hours ({fte_2026} FTE): {total_hours_2026:,} h")
print(f"2027 Total Hours ({fte_2027} FTE): {total_hours_2027:,} h")
# Breakdown by Domain for 2026 (12 FTEs) and 2027 (20 FTEs)
# 5 Core Domains:
# 1. Platform Core & K8s
# 2. Network & Security (Cilium, Vault, Kyverno)
# 3. Data Engine & Storage (MinIO AIStor, OpenEBS)
# 4. Observability & AIOps (Thanos, OpenSearch, n8n/LangGraph)
# 5. DevEx & CI/CD (GitLab, Nexus, ArgoCD, Workbench)
domains = [
"Platform Core & K8s (Cluster/Node Lifecycle, Operator)",
"Network & Security (Cilium eBPF, Vault, Kyverno)",
"Data Engine & Storage (MinIO AIStor, OpenEBS)",
"Observability & AIOps (Prometheus, OpenSearch, Auto-remediation)",
"DevEx & CI/CD (GitLab, ArgoCD, Workbench Support)"
]
# Each domain roughly has ~2.4 FTE in 2026 (Total 12 FTE)
# In 2027, scaled across 8 clusters & 1,500 nodes (~4.0 FTE each, Total 20 FTE)
df_bottomup = pd.DataFrame({
"도메인 영역": domains,
"2026년 연간 공수(h)": [4080, 4080, 4080, 4080, 4080], # 4080 / 1700 = 2.4 FTE
"2026년 FTE": [2.4, 2.4, 2.4, 2.4, 2.4],
"2027년 확장 공수(h)": [6800, 6800, 6800, 6800, 6800], # 6800 / 1700 = 4.0 FTE
"2027년 FTE": [4.0, 4.0, 4.0, 4.0, 4.0]
})
print(df_bottomup)
2026 Total Hours (12 FTE): 20,400 h
2027 Total Hours (20 FTE): 34,000 h
도메인 영역 2026년 연간 공수(h) 2026년 FTE 2027년 확장 공수(h) 2027년 FTE
0 Platform Core & K8s (Cluster/Node Lifecycle, Operator) 4080 2.4 6800 4.0
1 Network & Security (Cilium eBPF, Vault, Kyverno) 4080 2.4 6800 4.0
2 Data Engine & Storage (MinIO AIStor, OpenEBS) 4080 2.4 6800 4.0
3 Observability & AIOps (Prometheus, OpenSearch, Auto-remediation) 4080 2.4 6800 4.0
4 DevEx & CI/CD (GitLab, ArgoCD, Workbench Support) 4080 2.4 6800 4.0
2026년 기준 12명(20,400시간) 규모 및 2027년 20명(34,000시간) 확장에 맞추어, 실제 베어메탈 800대/1,500대 노드 운영 환경의 부하 및 오버헤드를 정밀하게 반영한 Bottom-Up 공수 산정 추정치입니다.
기존 샘플 모델(약 2~3명 산출)은 단위 작업의 '순수 실행 시간'만 집계되어 실제 엔터프라이즈 인프라 운영 시 발생하는 아래 4대 구조적 오버헤드가 누락되어 있었습니다.
1인 연간 실가동시간 1,700시간 기준 (연차, 공휴일, 교육 제외 실질 가용시간)
| 도메인 영역 | 2026년 연간시간 (800노드/4클러스터) | 2026년 필요 FTE | 2027년 연간시간 (1,500노드/8클러스터) | 2027년 필요 FTE | 핵심 발생 Task 예시 |
|---|---|---|---|---|---|
| Platform Core & K8s | 4,080 h | 2.4 명 | 6,800 h | 4.0 명 | K8s 버전 업그레이드, Operator/CRD 관리, Node Pool GitOps 제어, etcd 백업 검증 |
| Network & Security | 4,080 h | 2.4 명 | 6,800 h | 4.0 명 | Cilium eBPF datapath 검증, Hubble 플로우 분석, Vault HA/Unseal, Kyverno 정책 트러블슈팅 |
| Data Engine & Storage | 4,080 h | 2.4 명 | 6,800 h | 4.0 명 | MinIO AIStor Pool 확장, Erasure Set 데이터 리밸런싱, Quorum/논리장애 대응, OpenEBS CSI 관리 |
| Observability & AIOps | 4,080 h | 2.4 명 | 6,800 h | 4.0 명 | Thanos/OpenSearch 용량 관리, Alertmanager 튜닝, AIOps Auto-remediation 스크립트 개발/유지보수 |
| DevEx & CI/CD | 4,080 h | 2.4 명 | 6,800 h | 4.0 명 | GitLab Runner 운영, 폐쇄망 이미지 반입 승인, ArgoCD Sync 관리, Workbench 6,000명 기술지원 |
| 합계 (Total) | 20,400 h | 12.0 명 | 34,000 h | 20.0 명 | 5개 도메인 x 도메인당 2.4명(2026년) 4.0명(2027년) 할당 |
운영 업무의 성격별로 2026년과 2027년의 공수를 재분류한 결과입니다.
| 활동유형 (대분류) | 2026년 공수 (12명) | 2027년 확장 공수 (20명) | AIOps 적용후 공수 (2027년) | AIOps 적용후 필요 FTE | 활동 설명 |
|---|---|---|---|---|---|
| 반응형 업무 수행 (Toil) | 7,140 h (35%) | 11,900 h | 8,330 h | 4.90 명 | 티켓 요청 처리, 장애 대응, PVC Resize, 벤더 티켓 대응 등 |
| 시스템 개선 (Engineering) | 6,120 h (30%) | 10,200 h | 10,200 h | 6.00 명 | K8s/Cilium/MinIO 업그레이드, IaC 코드화, Auto-remediation 개발 |
| 능동형 / 단순 모니터링 | 4,080 h (20%) | 6,800 h | 5,440 h | 3.20 명 | 정기 순회 점검, Hubble/TTFB 지연 추세 관찰, BGP 비대칭 트래픽 분석 |
| 행정 / 협의 / VOC | 3,060 h (15%) | 5,100 h | 5,100 h | 3.00 명 | 비정형 질문(VOC) 답변, SOP/Runbook 갱신, 정기 보고, 타 팀 협의 |
| 합계 (Total) | 20,400 h | 34,000 h | 29,070 h | 17.10 명 | AIOps 적용 시 2027년 약 2.9명(4,930h)의 Toil 절감 효과 발생 |
"Top-Down 산정(인프라 노드 수 1,500대 및 도메인 바닥 인원 20명) 외에, 80개 세부 Task에 업무 지원 오버헤드(컨텍스트 스위칭, 온콜, 6,000명 사용자 지원)를 적용한 Bottom-Up 모델로 정밀 산정한 결과 역시 2026년 12명 2027년 20명으로 동일하게 도출되어 산정 결과의 객관성과 신뢰성을 확보했습니다."
==