왜 Run Analyzer인가
AWS HealthOmics Run Analyzer는 이미 끝난 워크플로 실행(run)의 태스크별 리소스 사용량을 분석해서, 실제 사용량을 기준으로 CPU·메모리 요청값을 다시 산정해 주는 오픈소스 CLI 도구입니다.
유전체 분석 워크플로는 수십 개의 태스크로 이루어져 있고, 각 태스크마다 CPU와 메모리를 따로 지정합니다. 처음 파이프라인을 만들 때는 실패가 무서워서 넉넉하게 잡아두는 경우가 대부분이고, 그 설정이 그대로 프로덕션까지 따라갑니다. 샘플이 수백, 수천 개로 늘어나면 이렇게 과다 할당된 리소스가 고스란히 비용이 됩니다.
문제는 실제로 얼마나 남는지 파악하기 어렵다는 점입니다. 관리형 서비스라 서버에 접속해 직접 측정할 수 없고, 태스크별 로그를 모아 계산하기도 번거롭습니다. Run Analyzer는 이 작업을 자동화합니다.
HealthOmics와 Run Analyzer 한눈에 보기
Run Analyzer는 HealthOmics가 실행마다 남기는 run manifest 로그를 읽어서 태스크 단위의 사용량 지표를 계산합니다. 별도 에이전트를 설치할 필요가 없고, AWS 자격 증명과 CloudWatch Logs 읽기 권한이 갖춰져 있다면 끝난 실행의 Run ID로 분석할 수 있습니다.
AWS HealthOmics는 유전체를 비롯한 생물학 데이터를 저장하고 분석하는 관리형 서비스입니다. WDL, Nextflow, CWL로 작성한 프라이빗 워크플로를 올리면 인프라 걱정 없이 실행할 수 있고, 각 태스크는 omics.c.large, omics.m.4xlarge 같은 HealthOmics 전용 인스턴스 타입 위에서 돌아갑니다.
Run Analyzer의 동작 방식은 단순합니다.
워크플로 실행이 끝나면 HealthOmics가 태스크별 리소스 사용 정보를 run manifest 로그로 CloudWatch에 남깁니다.
Run Analyzer가 Run ID를 받아 이 로그를 읽고, 태스크마다 25개 지표(실행 시간, CPU, 메모리, GPU, 스토리지 사용률 등)를 계산합니다.
사용률을 바탕으로 적정 CPU와 메모리, 인스턴스 타입을 추천하고, AWS 정가 기준으로 현재 비용과 절감 가능 금액을 추정합니다.
결과는 CSV, 인터랙티브 타임라인 HTML, Nextflow 설정 파일 같은 형태로 나옵니다.
Run Analyzer는 aws-healthomics-tools 저장소에 포함된 오픈소스 CLI이고, PyPI로도 배포됩니다. 이 최적화는 직접 작성한 프라이빗 워크플로에만 해당하고, AWS가 리소스를 관리하는 Ready2Run 워크플로에는 적용되지 않습니다.
Run Analyzer가 알려주는 것들
Run Analyzer는 태스크마다 요청한 리소스와 실제 사용량을 비교하고, 그 차이를 줄이면 비용이 얼마나 내려가는지 계산합니다.
기능
무엇을 보여주나
어디에 쓰나
과다 할당 탐지
CPU, 메모리가 과하게 잡힌 태스크와 더 작은 추천 인스턴스
비용 절감
병목 평가
CPU·메모리 사용률이 높아 병목 가능성이 있는 태스크
성능 개선
비용 추정
태스크별 예상 비용과 추천 적용 시 절감액
우선순위 결정
타임라인 뷰
태스크 실행 순서와 소요 시간
의존성 검증, 장시간 태스크 발견
스토리지 추천
실행 스토리지 파일시스템 크기
스토리지 비용 조정
프로비저닝 시간
태스크 시작까지 걸린 시간
큰 컨테이너 이미지 문제 발견
2025년 6월 업데이트에서 다음 기능들이 추가됐습니다.
같은 워크플로라도 샘플마다 필요한 리소스가 다릅니다. 커버리지가 높거나 변이가 많은 샘플은 메모리를 더 씁니다. --batch 옵션으로 여러 실행을 묶어 분석하면 태스크별 실행 횟수, 실행 시간의 평균·최댓값·표준편차, CPU·메모리 사용률과 비용의 평균·최댓값, 추천 리소스 등 17개 열이 나옵니다. 실행 한 번만 보고 메모리를 줄였다가 큰 샘플에서 OOM이 나는 경우를 피하려면 이 모드로 먼저 확인해 보는 게 좋습니다. 다만 배치 모드는 공식 README에 아직 실험적(experimental) 기능으로 표시되어 있어서 출력 형식이 바뀔 수 있습니다.
--headroom 옵션은 추천값에 여유분을 더합니다. --headroom 0.2를 주면 피크 사용량에 20%를 더한 값으로 추천합니다. 공격적으로 비용을 줄이려면 낮게, 입력 데이터 편차가 크거나 OOM 위험을 줄이려면 높게 잡습니다.
-P 옵션을 주면 태스크별 실행 구간을 그린 HTML 타임라인이 만들어지고 브라우저에서 열립니다. AWS 블로그의 nf-core/rnaseq 예시에서는 오래 걸리는 태스크 하나 때문에 뒤의 태스크들이 기다리는 구간이 타임라인에 그대로 나타났습니다.
--write-config 옵션은 추천 CPU, 메모리 값을 넣은 Nextflow 설정 파일을 만들어 줍니다. 분석 결과를 설정 파일에 손으로 옮기지 않아도 됩니다.
동적 실행 스토리지(dynamic run storage)나 콜 캐싱(call caching)을 쓴 실행도 이제 분석할 수 있습니다.
직접 써보기
실행하려면 AWS 자격 증명과 함께 HealthOmics 실행 기록, CloudWatch Logs를 읽을 권한이 필요합니다.
설치
PyPI에 패키지가 올라와 있습니다. 소스로 설치하려면 Python 3.10 이상이 필요합니다. 예전 패키지 이름인 amazon-omics-tools로 소개된 자료도 많은데, 지금은 aws-healthomics-tools로 이름이 바뀌었습니다.
pip install aws-healthomics-tools분석할 실행 찾기
Run ID를 모른다면 최근에 끝난 실행 목록부터 뽑아볼 수 있습니다. 아래는 최근 5일간 완료된 실행을 나열하는 예시입니다.
aws-healthomics-tools run_analyzer -t5d단일 실행 분석
결과는 CSV로 저장되어 스프레드시트에서 그대로 열립니다. 같은 번호의 Run ID가 여러 개라 모호할 때는 run-id:run-uuid 형식으로 지정하면 됩니다.
aws-healthomics-tools run_analyzer <run-id> -o analysis.csv옵션 조합 예시
# 여러 샘플 실행을 묶어서 통계 보기
aws-healthomics-tools run_analyzer <run1> <run2> <run3> --batch
# 20% 여유분을 둔 추천값
aws-healthomics-tools run_analyzer <run-id> --headroom 0.2
# 브라우저용 타임라인 리포트 생성
aws-healthomics-tools run_analyzer -P timeline_output/ <run-id>
# 추천값이 반영된 Nextflow 설정 파일 생성
aws-healthomics-tools run_analyzer <run-id> --write-config=optimized.config마지막 명령으로 만든 설정 파일은 아래와 같은 형태이고, 프로세스 이름별로 cpus와 memory 값이 들어갑니다.
process {
withName: 'alignment' {
cpus = 4
memory = '16 GB'
}
}결과를 볼 때
비용과 절감액은 도구를 실행한 시점의 AWS 정가 기준 추정치입니다. 할인, 크레딧, 별도 가격 계약이 반영된 실제 청구액과는 다를 수 있습니다. 또 minimumUSD는 추천 인스턴스로 바꿔도 실행 시간이 그대로라고 가정한 값입니다. CPU를 줄인 뒤 실행 시간이 늘어나면 실제 절감액은 그만큼 작아집니다.
AWS 공식 문서도 추천 내용을 검토해서 맞는 것만 적용하고, 적용한 뒤에는 다시 실행해 확인하라고 안내합니다. 실행 한두 번만 보고 메모리를 줄이면 큰 샘플에서 실패할 수 있으니, 여러 샘플을 묶어 배치 모드로 보는 편이 안전합니다.
모니터링 도구와 함께 쓰기
Run Analyzer는 끝난 실행의 로그를 분석하기 때문에, 실행 도중에 생기는 문제는 CloudWatch 같은 모니터링 쪽에서 봐야 합니다.
2026년 6월에는 워크플로 엔진 로그 실시간 스트리밍이, 9월에는 OpenTelemetry 기반 실행 지표가 CloudWatch에 추가됐습니다(HealthOmics 리소스). 실행 지표를 받으려면 실행 역할(run role)에 cloudwatch:PutMetricData 권한이 있어야 합니다. 실행 중에는 CloudWatch를 보고, 실행이 끝나면 Run Analyzer로 리소스 설정을 다시 잡습니다. AWS의 모니터링 관련 블로그에는 Run Analyzer 결과 일부를 대시보드에 넣어 실행 성능과 비용을 추적하는 사례가 있습니다.
AI 에이전트에서 분석하고 싶다면 HealthOmics MCP 서버를 연결하면 됩니다. 실행 성능 분석, 실패 진단, 타임라인 생성 기능이 들어 있습니다.
적용할 때 참고할 점
최적화는 워크플로 코드와 로직이 어느 정도 확정된 뒤에 하는 게 좋습니다. 개발 중에 리소스를 줄여두면 코드가 바뀔 때마다 다시 맞춰야 하고, AWS 문서도 이 점을 여러 번 짚고 있습니다.
리소스는 인스턴스 크기에 맞춰 요청하는 편이 낫습니다. HealthOmics는 요청한 vCPU와 메모리를 수용할 수 있는 가장 작은 인스턴스 타입을 기준으로 과금합니다. 예를 들어 15 vCPU와 33 GiB를 요청하면 omics.m.4xlarge(16 vCPU, 64 GiB) 요금 구간에 매핑되지만, 태스크에 제공되는 리소스는 요청한 15 vCPU와 33 GiB입니다. 그래서 인스턴스 경계에 맞지 않는 요청은 비용 효율이 떨어집니다.
CSV를 비용 순으로 정렬해서 비싼 태스크부터 조정하면 효과를 빨리 볼 수 있습니다. 짧은 태스크가 여러 개 이어진다면 하나로 합치는 것도 방법입니다. HealthOmics는 태스크당 최소 1분을 과금하기 때문입니다.
워크플로 정의나 들어오는 샘플의 특성이 바뀌면 Run Analyzer를 다시 돌려 추천값을 갱신해야 합니다.
마무리
HealthOmics를 사용 중이라면 최근 실행 하나부터 분석해 보면 됩니다. 결과를 비용순으로 정렬하면 어떤 태스크부터 손봐야 할지 쉽게 고를 수 있습니다.
일반 서비스에서 모니터링 데이터를 보고 인스턴스를 조정하듯, Run Analyzer는 유전체 파이프라인의 태스크 크기를 실측 데이터에 맞게 다시 잡아줍니다.
참고 자료
Reduce Genomic Discovery Time and Costs with AWS HealthOmics Run Analyzer (AWS for Industries 블로그, 2025년 6월)
Run optimization for a private HealthOmics workflow (AWS HealthOmics 개발자 가이드)
aws-healthomics-tools (PyPI)
Enhance monitoring and observability for AWS HealthOmics workflows (AWS for Industries 블로그)