Bob-Yamong Organization Cross-Repo 분석

메인 인덱스 | bob-yamong | GitHub Org

개요

이 문서는 제가 bob-yamong 조직의 저장소들을 어떻게 연결해서 읽는지 정리한 분석 노트입니다. 중심은 youmuu이며, 이를 둘러싼 오퍼레이터, 백엔드, 프론트엔드, 인프라 레포가 어떻게 이어지는지 담고 있습니다.

저장소 목록 (31개 저장소)

핵심 플랫폼 (4개 저장소)

저장소언어목적
youmuuC/eBPFLSM hooks, tracepoints를 포함한 핵심 eBPF 엔진
gomumuGoyoumuu를 위한 Go 기반 operator/manager
docker-backPythonDocker 환경용 FastAPI 백엔드
kube-backPythonKubernetes 환경용 FastAPI 백엔드

프론트엔드 (4개 저장소)

저장소프레임워크목적
policy-webNext.js컨테이너 정책 관리 UI (v1)
policy-web-v2Next.js대시보드 및 분석 UI (v2)
yamong-fe-v3React+Vite최신 React 프론트엔드 (v3)
yamong-productionNode.js프로덕션 배포 프론트엔드

데이터 파이프라인 (6개 저장소)

저장소언어목적
kafka-alertPython알림용 Kafka consumer
kafka-sink-connectPythonKafka to PostgreSQL sink connector
youmuu-listenerPython에이전트 heartbeat listener
youmuu-analyzerPython로그 분석 및 ML 탐지
youmuu-dbSQL데이터베이스 스키마 및 마이그레이션
youmuu-syslogC/eBPFeBPF용 Syslog 통합

인프라 및 배포 (4개 저장소)

저장소유형목적
youmuu-deployDocker Compose다중 환경 배포 설정
Aws-EKS-IaCTerraformAWS EKS infrastructure as code
gomumu-web-installerGo웹 기반 설치 도구
release-downloaderGo릴리스 아티팩트 다운로더

튜토리얼 및 템플릿 (6개 저장소)

저장소언어목적
ebpf-tutorialClibbpf starter template
cilium-ebpf-starter-templateGoCilium eBPF template
libbpf-starter-templateClibbpf template
faust-tutorialsPythonFaust를 사용한 Kafka streaming 예제
sikiMarkdown시스템 콜 및 LSM hooks 문서
ldap-tutorial-LDAP 통합 튜토리얼

유틸리티 및 실험 (7개 저장소)

저장소언어목적
ipc-implementationPython프로세스 간 통신 구현
container-lifecycle-managerPython컨테이너 런타임 추상화
go-lsmGoGo 기반 LSM hooks 실험
ebpf-block-testCeBPF blocking 테스트
ML-log-detectionPythonML 기반 이상 탐지
drawio-아키텍처 다이어그램
demo-repositoryJS데모/예제

1. 의존 관계 분석 (Dependency Analysis)

1.1 핵심 엔진 의존 관계

graph TD
    subgraph "핵심 엔진 계층"
        Y[youmuu<br/>C/eBPF 엔진]
        G[gomumu<br/>Go Operator]
    end

    subgraph "런타임 추상화"
        CLM[container-lifecycle-manager<br/>Python]
    end

    subgraph "컨테이너 런타임"
        CR[containerd]
        DK[Docker]
    end

    subgraph "커널"
        K[Linux Kernel 6.8+]
        LSM[BPF LSM]
        TP[Tracepoints]
    end

    Y -->|eBPF programs| K
    Y -->|LSM hooks| LSM
    Y -->|tracepoints| TP
    G -->|manages| Y
    CLM -->|abstracts| CR
    CLM -->|abstracts| DK

주요 의존 관계:

  • youmuu → Linux Kernel BPF LSM (kernel >= 6.8 필요)
  • youmuu → libbpf, libyaml, libcurl, PostgreSQL client
  • gomumu → cilium/ebpf, containerd, k8s client-go, Kafka client
  • go-lsm → cilium/ebpf (experiment)

1.2 백엔드 의존 관계

graph TD
    subgraph "API 백엔드"
        KB[kube-back<br/>FastAPI]
        DB[docker-back<br/>FastAPI]
    end

    subgraph "데이터베이스"
        PG[(PostgreSQL)]
    end

    subgraph "메시지 큐"
        KF[Kafka]
    end

    subgraph "컨테이너 오케스트레이션"
        K8S[Kubernetes API]
        CD[containerd API]
    end

    KB -->|SQLAlchemy| PG
    DB -->|SQLAlchemy| PG
    KB -->|async| K8S
    DB -->|docker SDK| CD
    KB -->|kafka-python| KF
    DB -->|kafka-python| KF

주요 의존 관계:

  • kube-back → Kubernetes API (k8s >= 1.28), PostgreSQL, Kafka
  • docker-back → Docker/containerd SDK, PostgreSQL, Kafka
  • 두 백엔드 모두 공유: SQLAlchemy ORM, Alembic migrations, FastAPI

1.3 프론트엔드 의존 관계

graph TD
    subgraph "프론트엔드 애플리케이션"
        PW[policy-web<br/>Next.js]
        PW2[policy-web-v2<br/>Next.js]
        YF3[yamong-fe-v3<br/>React+Vite]
    end

    subgraph "백엔드 API"
        KB[kube-back:8000]
        DB[docker-back:8000]
    end

    subgraph "UI 라이브러리"
        R[React 18]
        RD[Recharts]
        RR[React Router]
        RC[Recoil]
    end

    PW -->|axios| KB
    PW -->|axios| DB
    PW2 -->|axios| KB
    PW2 -->|axios| DB
    YF3 -->|axios| KB

    PW --> R
    PW2 --> R
    YF3 --> R
    PW2 --> RD
    YF3 --> RD
    YF3 --> RR
    PW2 --> RC
    YF3 --> RC

주요 의존 관계:

  • 모든 프론트엔드 → 백엔드 API (REST)
  • policy-web-v2 → axios, recharts, recoil, radix-ui
  • yamong-fe-v3 → vite, d3, framer-motion, styled-components

2. 데이터 흐름 분석 (Data Flow Analysis)

2.1 컨테이너 보안 이벤트 흐름

sequenceDiagram
    participant K as Linux Kernel
    participant Y as youmuu (eBPF)
    participant L as youmuu-listener
    participant KF as Kafka
    participant KS as kafka-sink-connect
    participant PG as PostgreSQL
    participant KB as kube-back
    participant PW as policy-web-v2

    K->>Y: 시스템 콜 / LSM 이벤트
    Y->>L: IPC/unix socket을 통해 전송
    L->>KF: Kafka topic에 게시

    par Kafka Consumers
        KF->>KS: 이벤트 소비
        KF->>KA: kafka-alert (Discord)
        KF->>YA: youmuu-analyzer (ML)
    end

    KS->>PG: 데이터베이스에 삽입
    PG->>KB: SQLAlchemy를 통해 쿼리
    KB->>PW: REST API 응답
    PW->>PW: 대시보드 렌더링

2.2 정책 배포 흐름

sequenceDiagram
    participant PW as policy-web-v2
    participant KB as kube-back
    participant PG as PostgreSQL
    participant KF as Kafka
    participant L as youmuu-listener
    participant Y as youmuu (eBPF)

    PW->>KB: POST /api/v2/policy
    KB->>PG: 정책 저장
    KB->>KF: 정책 업데이트 게시
    KF->>L: PolicyConsumer 수신
    L->>L: 정책을 파일에 저장
    L->>Y: 정책 재로드 (SIGHUP/IPC)
    Y->>Y: eBPF maps 업데이트

2.3 Heartbeat 및 모니터링 흐름

sequenceDiagram
    participant L as youmuu-listener
    participant HP as HeartbeatProducer
    participant KF as Kafka
    participant KS as kafka-sink-connect
    participant PG as PostgreSQL
    participant KB as kube-back

    loop N초마다
        L->>HP: 컨테이너 메트릭 수집
        HP->>KF: heartbeat 전송
        HP->>KF: 시스템 정보 전송
    end

    KF->>KS: heartbeat 소비
    KS->>PG: Heartbeat 테이블에 저장
    KS->>PG: SystemInfo 테이블에 저장
    KB->>PG: 상태 쿼리

2.4 Kafka Topics

TopicProducerConsumer목적
heartbeatyoumuu-listenerkafka-sink-connect에이전트 상태 확인
system-infoyoumuu-listenerkafka-sink-connect시스템 메트릭
container-logyoumuukafka-sink-connect, kafka-alert보안 이벤트
lsm-logyoumuukafka-sink-connectLSM 정책 위반
network-flowyoumuufaust-tutorials네트워크 모니터링
policykube-back/docker-backyoumuu-listener정책 업데이트
alertkafka-alert-Discord 알림

3. 배포 아키텍처 (Deployment Architecture)

3.1 Docker Compose 배포 단위

graph TB
    subgraph "Manager 계층"
        MFE[manager/frontend<br/>registry.yamong.dev/yamong_frontend]
        MBE[manager/backend<br/>registry.yamong.dev/yamong_backend]
        MDB[manager/postgres<br/>registry.yamong.dev/yamong_db]
        MG[manager/grafana]
        MK[manager/kafka]
        MZ[manager/zookeeper]
    end

    subgraph "Agent 계층 (per host)"
        AEB[agent/ebpf<br/>registry.yamong.dev/yamong_ebpf]
        AL[agent/listener<br/>registry.yamong.dev/yamong_listener]
    end

    subgraph "분석 계층"
        ASVM[analyze/svm<br/>registry.yamong.dev/yamong_svm_detector]
        AAN[analyze/analyzer<br/>registry.yamong.dev/youmuu-analyzer]
        AML[analyze/mlp<br/>registry.yamong.dev/yamong_mlp_detector]
    end

    subgraph "데이터 파이프라인"
        KC[kafka-sink-connect<br/>registry.yamong.dev/kafka_sink_connect]
        KA[kafka-alert<br/>registry.yamong.dev/alert_server]
    end

    AEB -->|IPC| AL
    AL -->|Kafka| MK
    MK -->|topics| KC
    KC -->|SQL| MDB
    MBE -->|SQL| MDB
    MFE -->|REST| MBE
    KC -->|metrics| ASVM
    KC -->|logs| AAN

3.2 Kubernetes 배포

graph TB
    subgraph "EKS 클러스터 (AWS)"
        subgraph "Control Plane"
            EKS[Amazon EKS]
        end

        subgraph "Worker Nodes"
            subgraph "youmuu DaemonSet"
                DS[youmuu eBPF<br/>privileged]
            end

            subgraph "백엔드 서비스"
                KB[kube-back Deployment]
                KL[kube-listener DaemonSet]
            end

            subgraph "데이터 서비스"
                KF[Kafka StatefulSet]
                PG[PostgreSQL StatefulSet]
            end
        end
    end

    subgraph "External"
        S3[(S3 Buckets)]
        CW[CloudWatch]
    end

    DS -->|eBPF| KF
    KL -->|consume| KF
    KB -->|query| PG
    KF -->|sink| PG
    EKS -->|logs| CW

3.3 다중 환경 설정

환경사용된 저장소배포 도구
개발docker-back, policy-web, youmuuDocker Compose
Kuberneteskube-back, youmuu, gomumukubectl/helm
AWS 프로덕션Aws-EKS-IaC, youmuu-deployTerraform
모니터링youmuu-deploy/managerDocker Compose

4. 공통 인프라 (Shared Infrastructure)

4.1 공통 의존 관계

# Python Stack (kube-back, docker-back, kafka-*, youmuu-*)
Python: "3.10+"
Framework: "FastAPI 0.100+"
ORM: "SQLAlchemy 2.0+"
Database: "PostgreSQL 15+"
MessageQueue: "Kafka 3.5+"
Migrations: "Alembic"
Testing: "pytest"
 
# Go Stack (gomumu, go-lsm, release-downloader)
Go: "1.23+"
eBPF: "cilium/ebpf v0.17+"
K8s: "k8s.io/client-go v0.32+"
Container: "containerd v1.7+"
 
# Frontend Stack
Node.js: "18+"
React: "18+"
Next.js: "14+"
State: "Recoil"
Charts: "Recharts"
Styling: "TailwindCSS"
 
# eBPF Stack
Kernel: ">= 6.8"
LSM: "BPF_LSM=y"
libbpf: "latest"
clang/llvm: "15+"

4.2 공유 데이터베이스 스키마

다음 테이블은 여러 서비스에서 공유됩니다:

erDiagram
    Server ||--o{ Container : hosts
    Server ||--o{ SystemInfo : metrics
    Container ||--o{ ContainerSysInfo : metrics
    Container ||--o{ InternalContainerId : identities
    Container ||--o{ PolicyContainer : policies
    Policy ||--o{ PolicyContainer : assigned
    Policy ||--o{ LsmFilePolicy : file_rules
    Policy ||--o{ LsmNetPolicy : network_rules
    Policy ||--o{ LsmProcPolicy : process_rules

    Server {
        uuid string PK
        name string
        created_at datetime
    }

    Container {
        id bigint PK
        host_server bigint FK
        runtime string
        name string
        created_at datetime
    }

    Policy {
        id bigint PK
        name string
        api_version string
        predefined boolean
    }

    Heartbeat {
        id bigint PK
        uuid string
        timestamp datetime
        survival_container_cnt int
    }

4.3 CI/CD 워크플로우

모든 저장소는 Jenkins를 CI/CD에 사용합니다:

graph LR
    subgraph "Jenkins 파이프라인 패턴"
        A[Git Push] -->|Webhook| B[Jenkins]
        B --> C[이미지 빌드]
        C -->|Tag| D[registry.yamong.dev]
        D --> E[배포 트리거]
    end

표준 Jenkinsfile 패턴:

IMAGE_NAME = "registry.yamong.dev/<service_name>"
// 빌드 → 테스트 → 레지스트리에 푸시

4.4 공유 네트워크 설정

네트워크유형서비스
yamong_networkExternal DockerKafka에 연결된 모든 서비스
app-networkBridge단일 스택 배포
npmExternal프론트엔드 reverse proxy

5. 서비스 상호작용 매트릭스 (Service Interaction Matrix)

서비스의존 대상제공 대상
youmuuLinux Kernel, libbpfyoumuu-listener (IPC)
gomumuK8s API, Kafkagomumu-web-installer
kube-backPostgreSQL, K8s API, Kafkapolicy-web* (REST)
docker-backPostgreSQL, Docker API, Kafkapolicy-web* (REST)
youmuu-listenerKafka, youmuu (IPC)youmuu (정책 파일)
kafka-sink-connectKafka, PostgreSQLPostgreSQL
kafka-alertKafka, PostgreSQLDiscord Webhook
youmuu-analyzerKafka, PostgreSQL-
policy-web-v2kube-back/docker-backEnd users

6. 아키텍처 개요 (Architecture Overview)

6.1 고수준 아키텍처

graph TB
    subgraph "표현 계층"
        WEB[policy-web-v2<br/>React/Next.js]
    end

    subgraph "API 게이트웨이 계층"
        KB[kube-back<br/>FastAPI]
        DB[docker-back<br/>FastAPI]
    end

    subgraph "컨트롤 플레인"
        GM[gomumu<br/>Go Operator]
        YD[youmuu-deploy<br/>Compose/IaC]
    end

    subgraph "데이터 계층"
        PG[(PostgreSQL)]
        KF[Kafka Cluster]
    end

    subgraph "에이전트 계층 (per node)"
        Y[youmuu<br/>eBPF Engine]
        YL[youmuu-listener<br/>Agent]
    end

    subgraph "커널 계층"
        LSM[BPF LSM Hooks]
        TP[Tracepoints]
    end

    WEB -->|HTTPS/REST| KB
    WEB -->|HTTPS/REST| DB
    KB -->|SQL| PG
    DB -->|SQL| PG
    KB -->|정책| KF
    DB -->|정책| KF
    GM -->|K8s API| KB
    YL -->|Heartbeat/Logs| KF
    Y -->|Events| YL
    Y -->|eBPF| LSM
    Y -->|eBPF| TP

6.2 보안 모니터링 파이프라인

flowchart LR
    A[커널 이벤트] -->|eBPF| B[youmuu]
    B -->|Unix Socket| C[youmuu-listener]
    C -->|Kafka Producer| D[Kafka Topics]
    D -->|Consumer| E[kafka-sink-connect]
    D -->|Consumer| F[kafka-alert]
    D -->|Consumer| G[youmuu-analyzer]
    E -->|INSERT| H[(PostgreSQL)]
    F -->|Webhook| I[Discord/Slack]
    G -->|ML Model| J[이상 탐지]
    H -->|Query| K[kube-back/docker-back]
    K -->|REST| L[웹 대시보드]

7. 주요 발견사항 (Key Findings)

7.1 강점

  1. 명확한 관심사 분리 - Docker와 Kubernetes 백엔드가 별도로 존재
  2. 이벤트 기반 아키텍처 - Kafka가 느슨한 결합을 제공
  3. eBPF-first 설계 - 최신 커널 보안 기능 활용
  4. 모듈식 배포 - 다양한 환경을 위한 Compose 파일
  5. 일관된 기술 스택 - 백엔드는 Python/FastAPI, 프론트엔드는 React

7.2 통합 지점

  1. Kafka가 중추 신경계 - 모든 데이터가 Kafka topics를 통해 흐름
  2. PostgreSQL이 단일 진실 공급원 - 모든 영구 데이터가 공유 스키마에 저장
  3. REST API가 프론트엔드 통신 - 두 백엔드가 유사한 엔드포인트를 노출
  4. IPC가 에이전트 통신 - youmuu와 listener 간 Unix sockets

7.3 잠재적 개선사항

  1. 통합 백엔드 - kube-back과 docker-back을 런타임 추상화와 함께 병합 고려
  2. API 버전 관리 - 현재 v1 (docker)와 v2 (kube)가 불일치
  3. 프론트엔드 통합 - 세 개의 프론트엔드 버전이 유지보수 오버헤드를 유발할 수 있음
  4. 서비스 메쉬 부재 - Istio/Linkerd가 서비스 간 통신에 없음

8. 저장소 의존 관계 그래프 (Repository Dependencies Graph)

graph TD
     Backends
    KB[kube-back]
    DB[docker-back]

     Data Pipeline
    YL[youmuu-listener]
    KS[kafka-sink-connect]
    KA[kafka-alert]
    YA[youmuu-analyzer]

     Databases
    PG[(PostgreSQL)]
    KF[Kafka]

    %% Dependencies
    Y -.->|이벤트 생성| YL
    YL -->|게시| KF
    KB -->|소비| KF
    DB -->|소비| KF
    KS -->|읽기| KF
    KS -->|쓰기| PG
    KA -->|읽기| KF
    YA -->|읽기| KF
    KB -->|쿼리| PG
    DB -->|쿼리| PG
    PW2 -->|API 호출| KB
    PW2 -->|API 호출| DB
    YD -->|배포| Y
    YD -->|배포| YL
    YD -->|배포| KB
    EKS -->|프로비저닝| KB
    G -->|관리| Y

Appendix A: 전체 저장소 목록

#저장소카테고리주요 언어상태
1youmuu핵심C/eBPFActive
2gomumu핵심GoActive
3docker-back백엔드PythonActive
4kube-back백엔드PythonActive
5policy-web프론트엔드TypeScript/Next.jsLegacy
6policy-web-v2프론트엔드TypeScript/Next.jsActive
7yamong-fe-v3프론트엔드TypeScript/ReactActive
8yamong-production프론트엔드Node.jsActive
9kafka-alert데이터 파이프라인PythonActive
10kafka-sink-connect데이터 파이프라인PythonActive
11youmuu-listener데이터 파이프라인PythonActive
12youmuu-analyzer데이터 파이프라인PythonActive
13youmuu-db데이터 파이프라인SQLActive
14youmuu-syslog데이터 파이프라인C/eBPFActive
15youmuu-deploy인프라YAMLActive
16Aws-EKS-IaC인프라TerraformActive
17gomumu-web-installer인프라GoActive
18release-downloader인프라GoActive
19ebpf-tutorial튜토리얼CReference
20cilium-ebpf-starter-template튜토리얼GoTemplate
21libbpf-starter-template튜토리얼CTemplate
22faust-tutorials튜토리얼PythonReference
23siki문서MarkdownReference
24ldap-tutorial튜토리얼-Reference
25ipc-implementation유틸리티PythonLibrary
26container-lifecycle-manager유틸리티PythonLibrary
27go-lsm실험GoExperimental
28ebpf-block-test테스트CTesting
29ML-log-detectionMLPythonActive
30drawio문서-Reference
31demo-repository예제JavaScriptDemo

문서 생성일: 2026-03-23 bob-yamong 조직의 31개 저장소 분석