Skip to content

Repository files navigation

🌿 ssak (싹)

엔터프라이즈 내구성 자동화 플로우 플랫폼 (Durable Workflow Automation)

Go Version React Version PostgreSQL Docker Offline Ready MCP Ready Documentation

ssak은 Go와 React로 구축된 사내망/폐쇄망 최적화 내구성 자동화 플로우(Durable Workflow) 서비스입니다.
게시된 워크플로 버전과 실행 상태를 PostgreSQL에 고정하고,
트랜잭셔널 아웃박스(Transactional Outbox) · 분산 작업 리스(Distributed Lease) · 내구 타이머(Durable Timer)
서버 장애 및 프로세스 재시작 뒤에도 실행 상태를 영구히 보존하고 안전하게 이어갑니다.

🎬 3분 서비스 소개 영상 보기 (MP4) · 🌐 인터랙티브 웹 쇼케이스 · 📚 전체 문서 목차 · 📸 화면 갤러리


📸 주요 화면 둘러보기

📊 통합 대시보드 & 실시간 KPI 모니터링

ssak 대시보드

🎨 React Flow 기반 비주얼 워크플로 편집기

ssak 워크플로 편집기

🔍 더 많은 메뉴 화면 캡처 보기 (클릭하여 펼치기)
메뉴 / 기능 캡처 이미지
실행 상세 & 노드 모니터링 실행 상세
노드 I/O JSON 인스펙터 노드 I/O 모달
AES-256 자격증명 금고 & 키 회전 자격증명 관리
AI 플레이그라운드 (256K 토큰) AI 플레이그라운드
Scoped API 키 발급 & 최소 권한 API 키 발급
Keycloak OIDC SSO 연동 설정 Keycloak OIDC
RBAC 사용자 및 역할 관리 사용자 관리
추가 전용 불변 감사 로그 (Trace ID) 감사 로그
시스템 상태 진단 (PostgreSQL & Queue) 시스템 상태

👉 전체 14개 메뉴 상세 설명은 **기능 및 화면 가이드 (docs/features.md)**에서 확인하실 수 있습니다.


✨ 핵심 기능 및 차별점

  • 단 4개의 환경변수로 즉시 기동: 복잡한 Kafka, Redis, Vault 없이 단일 PostgreSQL로 완벽 동작
  • 100% 오프라인 & 폐쇄망 배포: 단일 Go 바이너리 내 React 정적 번들이 임베드되어 외부 의존성 제로
  • 결함 감내 내구성(Durable Execution):
    • 트랜잭셔널 아웃박스: 노드 실행과 엣지 활성화 이벤트를 1개 DB 트랜잭션으로 원자적 기록
    • 분산 작업 임대: FOR UPDATE SKIP LOCKED 기반 다중 워커 경쟁 임대 및 하트비트
    • 내구 타이머: 지연 대기, 승인 대기, 콜백 만료를 메모리가 아닌 DB 테이블에 보존
    • 멱등성 보장: (execution_id, node_id, iteration_key) 복합 키로 중복 실행 원천 차단
  • 엔터프라이즈 보안 & 자격증명 금고:
    • ENCRYPTION_KEY 기반 AES-256-GCM 봉투 암호화 및 컨텍스트 바인딩
    • 원문 재조회 불가 단방향 보호 & 무중단 키 버전 회전(Zero-Downtime Key Rotation)
    • HTTP 요청 노드의 SSRF 방지 (Loopback, Link-Local, Metadata IP 차단)
  • Keycloak OIDC SSO 연동: OIDC Discovery 자동 연동 & 그룹 클레임 기반 관리자 권한 매핑
  • AI & Model Context Protocol (MCP):
    • OpenAI 호환 API 실시간 SSE 스트리밍 채팅 (최대 256K 토큰)
    • POST /mcp Streamable HTTP 엔드포인트 제공 (list_workflows, run_workflow, get_execution)
  • 실시간 관측성 & 불변 감사 로그:
    • SSE 기반 실시간 실행 상태 스트림 (Last-Event-ID 자동 재연결)
    • 모든 설정 변경, 키 회전, 권한 부여의 Trace ID 연계 감사 로그
    • Prometheus 메트릭 수집 (GET /metrics)

🚀 빠른 시작 (Quick Start)

1. Docker 실행 (권장)

docker run -d --name ssak --restart unless-stopped \
  -p 8080:8080 \
  -e POSTGRES_DSN='postgres://ssak:[email protected]:5432/ssak?sslmode=require' \
  -e BOOTSTRAP_ADMIN='admin' \
  -e BOOTSTRAP_ADMIN_PASSWORD='replace-with-a-strong-password' \
  -e ENCRYPTION_KEY='replace-with-at-least-32-random-characters' \
  ssak:v0.1.0

필수 환경변수 4종:

  • POSTGRES_DSN: PostgreSQL 연결 문자열
  • BOOTSTRAP_ADMIN: 초기 부트스트랩 관리자 아이디
  • BOOTSTRAP_ADMIN_PASSWORD: 초기 관리자 비밀번호 (12자 이상)
  • ENCRYPTION_KEY: AES-256-GCM 마스터 암호화 키 (32자 이상)

2. 로컬 빌드 및 개발

# 프론트엔드 빌드
make web

# 테스트 실행
make test

# 단일 실행 파일 빌드
make build VERSION=0.1.0

# 컨테이너 이미지 빌드 및 오프라인 아카이브 생성
make image-archive VERSION=0.1.0

🏛️ 아키텍처 개요

  ┌─────────────────────────────────────────────────────────────┐
  │         React UI / REST API / SSE / MCP / Webhooks          │
  └──────────────────────────────┬──────────────────────────────┘
                                 │
                     ┌───────────▼───────────┐
                     │     Go Control API    │
                     └───────────┬───────────┘
                                 │
     ┌───────────────────────────▼───────────────────────────┐
     │              PostgreSQL Database                      │
     │  - executions (고정 버전 바인딩)                       │
     │  - node_runs / edge_runs (상태 전이)                  │
     │  - outbox_events (트랜잭셔널 아웃박스)                │
     │  - durable_timers (DB 내구 타이머)                    │
     │  - payload_objects (대용량 페이로드)                  │
     └───────────────────────────┬───────────────────────────┘
                                 │ FOR UPDATE SKIP LOCKED
                     ┌───────────▼───────────┐
                     │    Durable Workers    │
                     │  (Lease Heartbeat)    │
                     └───────────────────────┘

📖 공식 기술 문서 (PDF)

문서명 설명 PDF 다운로드 / 바로보기
📕 종합 기술 매뉴얼 완본 모든 아키텍처·기능·운영·API 통합 기술 완본 (A4 인쇄용) docs/ssak_complete_manual.pdf
🎬 3분 서비스 시연 영상 전 메뉴 기능 및 CRU 실무 동작 1080p 시연 영상 docs/ssak_overview.mp4
📸 기능 및 화면 가이드 14개 전체 메뉴별 캡처 스크린샷과 CRU 동작 가이드 PDF 바로보기 · MD
👤 사용자 실무 가이드 노드 카탈로그, 캔버스 단축키, 실행 모니터링 및 재시도 PDF 바로보기 · MD
🛠️ 관리자 운영 가이드 Keycloak OIDC 연동, RBAC 역할, 보안 정책, 시스템 진단 PDF 바로보기 · MD
🔌 API & MCP 가이드 REST API 명세, SSE 실시간 스트림, AI MCP JSON-RPC PDF 바로보기 · MD
🏗️ 실행 아키텍처 결함 감내 불변 조건 및 상태 전이 모델 PDF 바로보기 · MD
🌐 웹 쇼케이스 인터랙티브 깃허브 홍보 및 기능 둘러보기 웹페이지 쇼케이스 열기
📚 문서 허브 전체 공식 기술 문서 목차 및 시작 가이드 문서 허브 열기

⚙️ 운영 엔드포인트

경로 메서드 용도
/healthz GET Liveness 프로브 (프로세스 생존 상태)
/readyz GET Readiness 프로브 (PostgreSQL 연결 상태)
/metrics GET Prometheus 지표 (실행 수, 아웃박스 지연, 타이머)
/openapi.yaml GET OpenAPI 3.0 API 공식 계약 스펙
/mcp POST Model Context Protocol JSON-RPC 에이전트 도구 엔드포인트

📄 라이선스

본 프로젝트는 사내망 및 엔터프라이즈 환경을 위한 내부 배포 표준을 준수합니다.

About

장애에도 멈추지 않는 Durable Workflow Automation ssak은 Go와 React로 구축된 사내망용 내구성 워크플로 엔진입니다. PostgreSQL 트랜잭셔널 아웃박스, 분산 작업 리스, 내구 타이머로 프로세스 재시작 뒤에도 실행을 안전하게 이어갑니다.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages