오픈소스는 해크토버페스트만을 위한 것이 아니다

발행: (2025년 12월 30일 오전 02:17 GMT+9)
19 min read
원문: Dev.to

I’m happy to translate the article for you, but I’ll need the actual text you’d like translated. Could you please paste the content (or the portion you want translated) here? I’ll keep the source line exactly as you provided and preserve all formatting, markdown, and code blocks.

Hacktoberfest — 10월 이후는 어떻게 될까?

매년 10월, 개발자 커뮤니티는 Hacktoberfest 에너지로 활기를 띱니다. PR이 쏟아지고, 티셔츠를 획득하며, GitHub은 초록색으로 물듭니다.
하지만 아무도 이야기하지 않는 것이 있습니다: 11월에 무슨 일이 일어날까?

대부분의 기여자에게 답은 간단합니다: 아무것도 없습니다. 그들이 기여한 저장소는 먼 기억이 되고, 잠시 건드린 아키텍처는 탐구되지 않은 채 남으며, 유지보수자와 구축할 수 있었던 관계는 형성되지 않습니다.

저는 올해는 다르게 해보려 했습니다. Hacktoberfest에서 발견한 한 가지가 어떻게 생산‑AI 시스템에 대한 마스터클래스로 변했는지 이야기해 보겠습니다.

Hacktoberfest 역설

함정왜 문제가 되는가
피상적인 기여 함정빠른 문서 수정과 오타 교정도 가치가 있지만, 오해하지 마세요. 그것만 한다면 나무만 보고 숲을 놓치는 겁니다. 진정한 학습은 코드가 특정 방식으로 구조화된 이유를 이해할 때 일어나며, 단순히 세미콜론이 빠졌다는 것만 보는 것이 아닙니다.
성장보다 스웨그 추구티셔츠와 배지는 좋지만, 생산‑급 시스템을 만드는 방법을 가르쳐 주지는 않습니다. 10월 이후에도 남아 있는 개발자들이 가장 빠르게 성장합니다.
놓친 기회최고의 오픈‑소스 기여는 코드베이스를 깊이 이해한 기여자에게서 나옵니다. 이는 한 달 이상, 더 많은 시간이 필요합니다.

내 관점을 바꾼 프로젝트: Skyflo.ai

흥미로운 프로젝트에 기여할 기회를 찾던 중, DevOps와 클라우드‑네이티브 운영을 위한 오픈‑소스 AI 에이전트인 Skyflo.ai를 발견했습니다.

AI 엔지니어링을 적극적으로 배우고 에이전트 아키텍처를 구축하고 있는 입장에서, 이것은 단순한 기여 기회가 아니었습니다. 바로 내가 배우고 싶었던 것이었습니다:

  • LangGraph를 이용한 상태 기반 에이전트 오케스트레이션
  • **MCP (Model Context Protocol)**를 통한 표준화된 도구 실행
  • Human‑in‑the‑loop 안전 패턴
  • Kubernetes‑네이티브 배포

빠르게 PR을 제출하고 넘어가는 대신, 깊이 파고들기로 했습니다.

Skyflo.ai가 하는 일

Skyflo.ai는 자연어 인터페이스를 통해 Kubernetes 운영과 CI/CD 시스템을 통합하는 AI 코파일럿입니다. CLI 명령을 외우거나 UI를 클릭하는 대신, 원하는 작업을 간단히 말하면 됩니다:

Show me the last 200 lines of logs for checkout in production.
If there are errors, summarize them.

또는

Progressively canary‑rollout auth‑backend in dev through 10/25/50/100 steps

그 마법은 안전하게 수행하는 방식에 있습니다. 모든 변형 작업은 인간의 승인을 필요로 합니다.

Architecture Overview

1. Frontend Layer – Command Center

  • Next.js, TypeScript, 그리고 Tailwind 로 구축
  • 실시간 스트리밍: 프론트엔드에 SSE, MCP에 Streamable HTTP
  • 에이전트가 수행하는 모든 행동을 실시간으로 표시

2. Intelligence Layer – The Engine

  • FastAPI 백엔드와 LangGraph 워크플로우
  • Plan → Execute → Verify 루프 관리
  • 승인 및 체크포인트 처리
  • UI에 실시간 SSE 업데이트 제공

3. Tool Layer – MCP Server

  • FastMCP 구현을 통한 도구 실행
  • kubectl, Helm, Jenkins, Argo Rollouts 용 표준화된 도구
  • 모든 통합에서 안전하고 일관된 동작 보장

Why This Architecture Works

관심사의 분리가 아름답습니다:

  • UI 변경이 에이전트 로직에 영향을 주지 않음
  • 새로운 도구를 추가해도 인텔리전스 레이어를 건드릴 필요 없음
  • 각 구성 요소가 독립적으로 배포 및 테스트 가능

Source:

Production AI 시스템에서 얻은 주요 교훈

1. 상태를 유지하는 에이전트를 위한 LangGraph

전통적인 LLM 체인은 무상태입니다—프롬프트를 보내고 응답을 받으면 끝입니다. 실제 AI 에이전트는 다음이 필요합니다:

  • 여러 단계에 걸쳐 컨텍스트를 기억
  • 체크포인트를 통해 실패를 우아하게 처리
  • 언제든지 인간 개입을 지원

LangGraph는 이러한 모든 기능을 가능하게 하는 그래프 기반 오케스트레이션을 제공합니다. 에이전트의 워크플로는 노드와 엣지로 정의되며, 각 단계에서 상태가 지속됩니다.

예시: Skyflo.ai의 워크플로 (engine/src/api/agent/graph.py)

from langgraph.graph import StateGraph, START, END

def _build_graph(self) -> StateGraph:
    workflow = StateGraph(AgentState)

    # Define the workflow nodes
    workflow.add_node("entry", self._entry_node)
    workflow.add_node("model", self._model_node)
    workflow.add_node("gate", self._gate_node)
    workflow.add_node("final", self._final_node)

    # Define the flow
    workflow.add_edge(START, "entry")
    workflow.add_conditional_edges(
        "entry", route_from_entry,
        {"gate": "gate", "model": "model"}
    )
    workflow.add_conditional_edges(
        "model", route_after_model,
        {"gate": "gate", "model": "model", "final": "final"}
    )
    workflow.add_conditional_edges(
        "gate", route_after_gate,
        {"model": "model", "final": "final"}
    )
    workflow.add_edge("final", END)

    return workflow

이 코드는 상태를 유지하는 워크플로를 생성합니다. 에이전트는 작업이 완료될 때까지 계획(model), 실행(gate), 검증 단계 사이를 반복할 수 있습니다.

2. Model Context Protocol (MCP)

MCP는 AI 에이전트가 도구와 상호작용하는 방식을 표준화하고 있습니다. 각 도구마다 맞춤형 통합을 구축하는 “M × N 악몽” 대신, MCP는 다음을 제공합니다:

  • 도구 탐색을 위한 범용 인터페이스
  • 표준화된 호출 패턴
  • 에이전트 로직도구 구현을 명확히 분리

이를 **“AI 에이전트를 위한 OpenAPI”**라고 생각하면 됩니다.

인간이 개입하는 안전한 DevOps

DevOps 작업에서 승인 없이 자동 실행은 위험합니다. Skyflo의 패턴:

  1. 에이전트가 계획을 생성
  2. 사용자가 검토하고 승인
  3. 에이전트가 실행
  4. 에이전트가 결과를 검증
  5. 완료될 때까지 반복

Plan → Execute → Verify 루프와 인간 승인 게이트는 모든 프로덕션 AI 시스템이 채택해야 할 패턴입니다.

3. 실시간 스트리밍을 통한 투명성

사용자는 에이전트가 무엇을 하고 있는지 볼 필요가 있습니다. Skyflo.ai는 모든 행동을 실시간으로 스트리밍합니다:

  • 도구 호출
  • 중간 추론
  • 실행 결과
  • 검증 단계

에이전트가 프로덕션 인프라를 다룰 때 투명성은 필수입니다. Skyflo.ai는 엔진에서 UI로 SSE를 통해 이벤트를 스트리밍하고, 엔진은 MCP 서버와 Streamable HTTP 전송 방식을 사용해 효율적이고 저지연 데이터 흐름을 구현합니다.

핵심 정리

  • Hacktoberfest 결승선에 머무르지 마세요. 모멘텀을 활용해 장기 학습 목표에 맞는 프로젝트에 더 깊이 뛰어들어 보세요.
  • Stateful orchestration (LangGraph) + 범용 툴 계약 (MCP) = 견고한 프로덕션 AI 스택.
  • Human‑in‑the‑loop 안전성은 프로덕션에서 선택 사항이 아니라 핵심 설계 원칙입니다.
  • 실시간 가시성은 신뢰를 구축하고 디버깅을 훨씬 쉽게 만들어 줍니다.

AI 엔지니어링 역량을 프로덕션 수준으로 끌어올릴 프로젝트를 찾고 있다면 Skyflo.ai를 살펴보고, Hacktoberfest 기여를 마스터클래스로 전환하는 것을 고려해 보세요.

Tool Execution

관찰된 주요 안전 패턴:

  • Dry‑run by default for Helm operations → Helm 작업에 대한 기본 드라이런
  • Diff‑first before any apply → 적용 전에 차이점 확인 (Diff‑first)
  • Approval gates for all mutations → 모든 변형에 대한 승인 게이트 (Approval gates)
  • Audit logging of every action → 모든 작업에 대한 감사 로그 (Audit logging)

Architecture Note

구성 요소 간 통신은 사용 사례에 최적화된 다양한 프로토콜을 사용합니다:

  • Engine → UI: 실시간 사용자 피드백을 위한 Server‑Sent Events (SSE)
  • Engine → MCP Server: 도구 실행을 위한 스트리밍 가능한 HTTP 전송

Skyflo.ai에 대한 나의 기여

기능 / 수정설명
Jenkins Build Control빌드 중지/취소 도구를 추가하여 전체 CI/CD 라이프사이클 관리 가능
Kubernetes Rollout Management롤아웃 히스토리 및 롤백 도구를 구현하여 배포 안전성 향상
Helm Template Renderinghelm_template 도구를 추가하여 배포 전 매니페스트 미리 보기
Label Selector for K8s Resourcesk8s_get 도구에 라벨 셀렉터를 강화하여 보다 정밀한 리소스 조회 가능
Chat History Search디바운스된 서버‑측 검색을 구현하여 대화 관리 개선

버그 수정 및 UX 개선

  • Message Continuity Fix: 툴 승인/거부 후 채팅 메시지가 사라지는 중요한 문제를 해결했습니다.
  • Approval Flow Refinement: 승인 작업 처리와 UI에서 메시지 최종화를 간소화했습니다.
  • Navigation Enhancements: 로고를 클릭 가능하게 만들고 네비게이션 바에 GitHub 프로젝트 링크를 추가했습니다.
  • Profile Management: 프로필 업데이트 시 버튼 상태 관리를 수정했습니다.
  • SSE Timeout Fix: Nginx 프록시 타임아웃을 늘려 60초 SSE 연결 끊김을 방지했습니다.

문서

  • 새 기여자들을 돕기 위해 CONTRIBUTING.md의 architecture‑guide 링크를 수정했습니다.

Source:

배운 교훈 및 도전 과제

도전 과제 1 – 상태 흐름 이해

문제: 처음에 워크플로우 노드들을 통해 상태가 어떻게 흐르는지 파악하지 못했습니다. 조건부 엣지와 상태 업데이트가 복잡하게 느껴졌습니다.

돌파구: engine/src/api/agent/graph.py 파일을 읽고 로컬에서 실험해 본 결과, LangGraph의 상태는 추가적이라는 것을 깨달았습니다—각 노드는 기존 상태와 병합되는 업데이트를 반환합니다. 이 패턴은 대화 컨텍스트를 유지하면서도 노드들을 독립적으로 유지할 수 있게 합니다.

도전 과제 2 – Engine / MCP Client / MCP Server 추상화

문제: 세 구성 요소로 나뉜 구조가 혼란스러웠습니다.

돌파구: 전체 흐름을 통해 도구 호출을 추적하면서 역할이 명확해졌습니다:

  1. Engine은 LLM을 통해 사용자 의도를 받습니다.
  2. MCP Client (engine/src/api/services/mcp_client.py)는 브리지 역할을 합니다.
  3. MCP Server (mcp/tools/)는 실제 kubectl/helm 명령을 실행합니다.

이 분리 덕분에 에이전트 로직을 건드리지 않고도 도구를 교체할 수 있어 훌륭한 아키텍처가 됩니다.

도전 과제 3 – 승인 게이트

문제: 언제, 어떻게 승인 게이트가 트리거되는지 명확하지 않았습니다.

돌파구: 게이트 노드는 도구가 승인을 필요로 하는지 확인한 뒤 ApprovalPending을 발생시켜 실행을 중단합니다. 상태는 체크포인트로 저장되고, 사용자가 승인 또는 거부하면 워크플로우가 정확히 중단된 지점에서 재개됩니다. 이는 프로덕션 수준의 오류 처리 방식입니다.

Hacktoberfest 요약

Hacktoberfest는 환상적인 촉매제입니다. 진입 장벽을 낮추고 평소에는 발견하지 못했을 프로젝트들을 소개해 줍니다. 이를 목적지가 아니라 출발점으로 활용하세요.

실제 학습은 다음과 같이 할 때 일어납니다:

  1. 전체 코드베이스를 읽기, 변경하고 있는 파일만 보는 것이 아니라.
  2. Discord/Slack 토론에 참여해 로드맵을 이해하기.
  3. 복잡한 이슈를 선택해 도전하기, 두려움을 극복하기.
  4. 아키텍처 결정에 대해 질문하기.

연중: 유지관리자가 되기

일관된 기여는 신뢰를 쌓습니다. 시간이 지나면 다음을 하게 됩니다:

  • 다른 기여자들의 PR을 검토합니다.
  • 설계 결정에 대한 의견을 요청받습니다.
  • 프로젝트의 향후 방향을 형성합니다.
  • 지속적인 전문 관계를 구축합니다.

기여자 마인드셋

1. 배우고 싶은 프로젝트를 선택하세요

쉬운 PR만 고르지 마세요. 여러분이 마스터하고 싶은 기술을 사용하는 프로젝트를 선택하세요. 제가 Skyflo.ai에서 작업하면서 얻은 경험은 어떤 튜토리얼보다도 프로덕션 AI 시스템에 대해 많이 가르쳐 주었습니다.

2. 다양한 방식으로 기여하기

  • 기능 구현 및 버그 수정
  • 문서 개선
  • 테스트 커버리지
  • 코드 리뷰
  • 커뮤니티 지원

모든 기여는 가치가 있습니다—다양하게 섞어보세요.

3. 관계 구축

오픈소스는 코드만큼 사람과도 관련이 있습니다. 오늘 만나는 유지보수자와 기여자들이 내일 여러분의 전문 네트워크가 됩니다.

4. PR만이 아니라 성장도 추적하세요

진정한 지표는 병합된 PR이 아니라, 얻은 기술, 배운 패턴, 그리고 쌓인 자신감입니다.

행동 계획

  1. 배우고자 하는 목표에 맞는 프로젝트를 찾으세요.
  2. 기여 가이드라인과 행동 강령을 읽으세요.
  3. 로컬에 개발 환경을 설정하세요.
  4. 이슈가 아니라 코드베이스부터 시작하세요—기여하기 전에 이해를 먼저 하세요.
  5. 커뮤니티에 참여하세요 (Discord, Slack, Discussions).
  6. 첫 번째 이슈를 선택하고 착수하세요.
  7. 첫 번째 PR이 병합된 후에도 계속 활동하세요.

리소스

  • Skyflo.ai GitHub:
  • Skyflo.ai Discord:
  • LangGraph Docs:
  • Model Context Protocol:

나와 연결하기

저는 AI‑엔지니어링 여정, 오픈‑소스 기여, 그리고 개발자 생산성 팁을 공유하고 있습니다:

  • YouTube: @sachin-chaurasiya
  • 블로그:
  • 링크드인:
  • X (Twitter): @sachindotcom
  • Dev.to: sachinchaurasiya

예상치 못한 것을 가르쳐준 프로젝트가 있나요? 댓글을 남겨 주세요, 듣고 싶어요!

Back to Blog

관련 글

더 보기 »

이 문서 인프라에 대하여

문서 구조 모든 문서는 GitHub 저장소의 ./documentation 디렉터리에 Markdown 파일로 저장됩니다. 이는 유일한 진실의 출처입니다.