Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
cpra — CPRA는 대규모 마이크로서비스 아키텍처를 관리하는 플랫폼 팀을 위해 설계된 고성능 인프라 모니터링 시스템입니다. ECS(Entity-Component-System) 아키텍처와 대기열 이론(Queueing Theory) 원리를 기반으로 구축된 CPRA는 SLO 목표를 충족하기 위해 자동 워커 풀 확장을 통해 1,000,000개 이상의 동시 상태 점검(health check)을 처리합니다. | Kitploit
도구/GitHubGitHub/ziad-hsn/cpra
Cloud Infrastructure SecurityGeneral Purpose UtilitiesContainer SecurityConfiguration AuditingNetwork SecurityDevSecOpsIncident ResponseAnomaly DetectionLog Analysis
GitHubziad-hsn/cpra

cpra

CPRA는 대규모 마이크로서비스 아키텍처를 관리하는 플랫폼 팀을 위해 설계된 고성능 인프라 모니터링 시스템입니다. ECS(Entity-Component-System) 아키텍처와 대기열 이론(Queueing Theory) 원리를 기반으로 구축된 CPRA는 SLO 목표를 충족하기 위해 자동 워커 풀 확장을 통해 1,000,000개 이상의 동시 상태 점검(health check)을 처리합니다.

146개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기웹사이트

CPRA - 동시 펄스-복구-알림 시스템

Go Version License Documentation

자동 복구 및 동적 작업자 확장으로 수백만 개의 서비스를 동시에 모니터링합니다.

CPRA는 대규모 마이크로서비스 아키텍처를 관리하는 플랫폼 팀을 위해 설계된 고성능 인프라 모니터링 시스템입니다. ECS(Entity-Component-System) 아키텍처와 대기열 이론 원칙을 기반으로 구축된 CPRA는 SLO 목표를 충족하기 위해 자동 작업자 풀 확장을 통해 1,000,000개 이상의 동시 상태 확인을 처리합니다.


목차

  • 왜 CPRA인가?
  • 주요 기능
  • 성능 특성
  • 아키텍처
  • 빠른 시작
  • 설치
  • 구성
  • 명령줄 옵션
  • 문서
  • 문제 해결
  • 기여
  • 라이선스

왜 CPRA인가?

다음과 같은 경우 CPRA를 사용하세요:

  • 100,000개 이상의 동시 서비스, 컨테이너 또는 엔드포인트 모니터링
  • 사람의 개입 없이 장애를 자동으로 복구
  • 부하에 따라 모니터링 인프라를 동적으로 확장
  • 감지에서 알림까지 P95 지연 시간 100ms 미만 달성
  • 모니터당 메모리 사용량 최소화 (~100바이트)

주요 기능

🚀 대규모 확장성

  • 일반 하드웨어에서 1,000,000개 이상의 동시 모니터 처리
  • 모니터당 최소 오버헤드로 선형 확장
  • 메모리 효율적인 설계: 모니터당 ~100바이트

⚡ 고성능

  • 파이프라인당 초당 10,000개 이상의 상태 확인
  • 스케줄에서 결과 처리까지 P95 지연 시간 < 100ms
  • 배치 처리 및 잠금 없는 대기열로 오버헤드 최소화

🔄 자동 복구

  • 세 가지 독립 파이프라인:
    1. Pulse: 상태 확인 (HTTP, TCP, ICMP, 사용자 정의 스크립트)
    2. Intervention: 자동 복구 (서비스 재시작, 리소스 확장, 스크립트 실행)
    3. Code: 경고 및 알림 (이메일, SMS, 웹훅, PagerDuty)

🧠 지능형 확장

  • M/M/c 대기열 이론: 최적 작업자 수 자동 계산
  • Allen-Cunneen 근사: 실제 워크로드 변동성 처리
  • SLO 기반 크기 조정: 지연 시간 목표에 맞춰 동적으로 확장

🏗️ 데이터 지향 아키텍처

  • ECS(Entity-Component-System) (mlange-42/ark 사용)
  • 캐시 친화적인 메모리 레이아웃으로 최대 성능
  • 최소 할당 및 GC 부하

🔧 프로덕션 준비

  • 디버깅을 위한 내장 pprof 프로파일링
  • 컨텍스트 취소를 통한 정상 종료
  • 디버그 모드를 포함한 포괄적인 로깅
  • 자동 GC 트리거를 사용한 메모리 관리

성능 특성

자세한 벤치마크 및 분석은 아키텍처 개요를 참조하세요.


아키텍처

CPRA는 ECS(Entity-Component-System) 원칙을 기반으로 구축된 3-파이프라인 아키텍처를 사용합니다:

ECS 아키텍처

세 개의 독립적인 처리 파이프라인

파이프라인 흐름

  1. Pulse 파이프라인: 상태 확인 실행 (HTTP 요청, TCP 연결, 사용자 정의 스크립트)
  2. Intervention 파이프라인: 모니터 실패 시 자동 복구 수행
  3. Code 파이프라인: 사고 관리 시스템으로 경고 알림 전송

각 파이프라인은 자체 대기열과 동적으로 확장되는 작업자 풀을 사용하여 독립적으로 작동하므로 다음이 가능합니다:

  • 파이프라인별 튜닝: 각 파이프라인을 별도로 구성
  • 결함 격리: 하나의 파이프라인 오류가 다른 파이프라인에 영향을 주지 않음
  • 독립적 확장: 파이프라인별 부하에 따라 작업자 확장

대기열 및 작업자 풀 아키텍처

대기열 및 작업자 풀

대기열 구현:

  • HybridQueue: 신뢰할 수 있는 FIFO 처리를 위한 링 버퍼 + 오버플로우 슬라이스
  • AdaptiveQueue: 가변 부하를 위한 자동 확장 링 버퍼
  • WorkivaQueue: 초저지연을 위한 잠금 없는 링 버퍼

동적 작업자 풀:

  • panjf2000/ants 고루틴 풀 기반
  • M/M/c 대기열 이론을 사용한 자동 확장
  • 최소/최대 작업자 및 SLO 목표 구성 가능

포괄적인 아키텍처 설명은 아키텍처 개요를 참조하세요.


빠른 시작

옵션 1: 로컬에서 빌드 및 실행

root@kitploit:~
# 사전 요구 사항: Go 1.25 이상
go version  # go1.25 이상이 표시되어야 함

# 소스에서 빌드
git clone https://github.com/ziad/cpra.git
cd cpra
go build .

# 예제 구성으로 실행
./cpra --yaml mock-servers/test_10k.yaml

예상 출력:

root@kitploit:~
Starting CPRA Optimized Controller for 1M Monitors
Profiling server listening at http://localhost:6060/debug/pprof/
Loading monitors from mock-servers/test_10k.yaml...
Monitor loading completed in 1.2s
[INFO] Controller started successfully
[INFO] Pulse pipeline processing 10,000 monitors
[INFO] Worker pool scaled to 143 workers (target SLO: 100ms)

설치

사전 요구 사항

  • Go 1.25 이상 (다운로드)
  • Docker (선택 사항, 컨테이너 배포용)

소스에서 빌드

  1. 저장소 복제:

    root@kitploit:~
    git clone https://github.com/ziad/cpra.git
    cd cpra
    
  2. 의존성 다운로드:

    root@kitploit:~
    go mod download
    
  3. 애플리케이션 빌드:

    root@kitploit:~
    go build .
    
  4. 설치 확인:

    root@kitploit:~
    ./cpra --help
    

Docker 배포

  1. Docker 이미지 빌드:

    root@kitploit:~
    docker build -f docker/Dockerfile -t cpra:latest .
    
  2. 컨테이너 실행:

    root@kitploit:~
    docker run -it --rm \
      -v $(pwd)/my-monitors.yaml:/app/monitors.yaml \
      cpra:latest \
      ./cpra --yaml monitors.yaml
    

구성

모니터 구성 (YAML)

상태 확인을 정의하는 monitors.yaml 파일을 만드세요:

root@kitploit:~
monitors:
  - name: "my-service-health-check"
    pulse_check:
      type: http
      interval: 30s
      timeout: 5s
      max_failures: 3
      config:
        method: GET
        url: http://my-service.example.com/health
        retries: 2
    intervention:
      action: docker
      config:
        container: my-service-container
        action: restart
    codes:
      red:
        dispatch: true
        notify: pagerduty
        config:
          url: https://events.pagerduty.com/v2/enqueue
      yellow:
        dispatch: true
        notify: log
        config:
          file: /var/log/cpra-alerts.log

테스트 구성 생성:

mock-servers/generate_monitors.py를 사용하여 원하는 수의 모니터로 테스트 구성을 생성하세요.

애플리케이션 구성

프로그래밍 방식으로 CPRA 동작을 구성하세요:

root@kitploit:~
package main

import (
    "cpra/internal/controller"
)

func main() {
    config := controller.DefaultConfig()

    // 디버그 모드
    config.Debug = true

    // 작업자 풀 설정 (세 파이프라인 모두에 적용)
    config.WorkerConfig.MinWorkers = 10
    config.WorkerConfig.MaxWorkers = 500

    // 대기열 설정
    config.QueueCapacity = 131072  // 2의 거듭제곱이어야 함

    // 성능 튜닝
    config.BatchSize = 2000
    config.SizingServiceTime = 20 * time.Millisecond  // 평균 작업 시간
    config.SizingSLO = 100 * time.Millisecond         // 목표 지연 시간
    config.SizingHeadroomPct = 0.15                   // 15% 안전 버퍼

    ctrl := controller.NewController(config)
    // ... 나머지 초기화
}

전체 구성 옵션은 API 참조를 참조하세요.


명령줄 옵션

root@kitploit:~
./cpra [OPTIONS]

예제:

root@kitploit:~
# 디버그 로깅으로 실행
./cpra --yaml monitors.yaml --debug

# 사용자 정의 pprof 포트로 실행
./cpra --yaml monitors.yaml --pprof.addr localhost:8080

# 프로파일링 비활성화
./cpra --yaml monitors.yaml --pprof=false

문서

종합 가이드

  • 아키텍처 개요 - 시스템 설계, 다이어그램 및 성능 분석
  • API 참조 - 함수 시그니처를 포함한 전체 API 문서
  • 유형 참조 - 데이터 구조 및 컴포넌트 정의
  • 빠른 시작 튜토리얼 - 5-10분 내에 시작하기
  • 일반 작업 - 일반적인 작업을 위한 방법 가이드

추가 리소스

  • 시작하기 - 상세 설정 및 배포 가이드

문제 해결

일반적인 문제

문제: YAML file not found

root@kitploit:~
Warning: YAML file monitors.yaml not found, starting without loading monitors

해결 방법: 파일 경로가 올바른지 확인하세요. 절대 경로 또는 바이너리를 실행하는 위치 기준 상대 경로를 사용하세요:

root@kitploit:~
./cpra --yaml $(pwd)/monitors.yaml

문제: Build fails with Go version error

root@kitploit:~
go.mod requires go >= 1.25

해결 방법: Go를 버전 1.25 이상으로 업그레이드하세요:

root@kitploit:~
go version  # 현재 버전 확인
# https://go.dev/dl/ 에서 Go 1.25+ 다운로드

문제: High memory usage 해결 방법: pprof로 메모리 사용량을 확인하세요:

root@kitploit:~
# CPRA 실행 중 pprof에 접근
go tool pprof http://localhost:6060/debug/pprof/heap

# 상위 메모리 소비자 보기
(pprof) top

구성에서 메모리 제한을 조정하세요:

root@kitploit:~
config.WorkerConfig.MaxWorkers = 200  // 최대 작업자 수 줄이기
config.QueueCapacity = 65536          // 대기열 크기 줄이기

문제: Worker pool not scaling 해결 방법: 디버그 로깅을 활성화하여 확장 결정을 확인하세요:

root@kitploit:~
./cpra --yaml monitors.yaml --debug

대기열 이론 매개변수를 확인하세요:

root@kitploit:~
config.SizingServiceTime = 50 * time.Millisecond  // 작업 시간이 더 오래 걸리는 경우 증가
config.SizingSLO = 200 * time.Millisecond         // 필요한 경우 SLO 완화

문제: Monitors not executing 해결 방법: 모니터 구성 형식을 확인하고 로그를 확인하세요:

root@kitploit:~
./cpra --yaml monitors.yaml --debug 2>&1 | grep ERROR

YAML 구문 검증:

root@kitploit:~
# YAML 검증기 사용
python -m yaml monitors.yaml

도움 받기

  • 문서: 자세한 가이드는 docs/ 폴더를 확인하세요
  • 이슈: 버그 또는 기능 요청은 이슈 열기
  • 토론: GitHub Discussions에서 질문하고 아이디어를 공유하세요
  • 로그: 문제 보고 시 항상 로그를 제공하세요 (--debug 플래그 사용)

기여

커뮤니티의 기여를 환영합니다! CPRA는 오픈 소스 프로젝트이며 다음을 환영합니다:

  • 🐛 버그 신고 및 수정
  • ✨ 기능 요청 및 구현
  • 📖 문서 개선
  • 🧪 테스트 커버리지 향상
  • 💡 성능 최적화

시작하기:

  1. good first issue 레이블이 있는 이슈를 찾으세요
  2. 저장소를 포크하고 풀 리퀘스트를 제출하세요

개발 리소스:

  • 아키텍처 개요 - 시스템 설계 이해
  • API 참조 - 함수 시그니처 및 사용법

라이선스

이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.


감사의 말

CPRA는 뛰어난 오픈 소스 라이브러리 위에 구축되었습니다:

  • mlange-42/ark - 고성능 Entity-Component-System
  • panjf2000/ants - 동적 확장이 가능한 고루틴 풀
  • Workiva/go-datastructures - 잠금 없는 데이터 구조
  • uber-go/zap - 구조화된 로깅

문서 • 아키텍처 • 이슈

대규모 인프라를 관리하는 플랫폼 팀을 위해 ❤️로 제작되었습니다

도구 다운로드
메트릭값
최대 동시 모니터1,000,000개 이상
처리량파이프라인당 초당 10,000개 이상의 검사
지연 시간 (P95)< 100ms (SLO를 통해 구성 가능)
모니터당 메모리~100바이트
총 메모리 (1M 모니터)~100MB + 작업자 풀 오버헤드
작업자 확장동적 (M/M/c 기반)
옵션유형기본값설명
--yamlstringinternal/loader/replicated_test.yaml모니터 YAML 파일 경로
--configstring-구성 파일 경로 (선택 사항)
--debugboolfalse디버그 수준 로깅 활성화
--pprofbooltruepprof 프로파일링 서버 활성화
--pprof.addrstringlocalhost:6060Pprof 서버 수신 주소