CloudeBro 오픈 프로젝트 최종 발표
- season2 5개월 진행
- 5개의 오픈 프로젝트 발표
- AI 도입은 빠르지만 AI를 위한 인프라 도입은 아직도 사람이 필요, 비용 소요
- 발표 이후의 여정
- quick start guide (각 프로젝트 설치 가이드 참가자 전원에게 발송)
- 팔로업 & 피드백
- 기업 PoC 연결
KubeAI
presentation
- https://github.com/cloudbro-kube-ai/k13d
- kubeaidashboard: AI 채팅으로 관리하는 K8S 대시보드
- upstage 근무 중
- 명령어 대신 자연어를 통해 ai로 kubectl 실행을 맡기고 결과를 분석해 사용접근성 확보
- 기존 프로젝트(kubectl-ai), 대시보드 통합기능은 없었음
- 아키텍처에서 신경쓴 부분: k9s처럼 single binary로 실행가능하는데 신경을 많이 씀
- 구성
- web ui
- ai assistant (모델은 upstage solr 이용했음. 다른 상용 ai 도 사용 가능, ollma 연동도 가능)
- 승인 감사 기능: kube cli를 누가 언제 했는지 로깅, reject / approve 기능
- llm, mcp 설정
- metric 연동 가능(promethues 등)
- admin: 전용 도메인을 만들어서 admin이 권한별로 관리 등
- keyboard shortcuts 각 항목 단축키 가능
- 실제 운영을 해보니까 웹 UI를 사용은 어려웠음
- 그래서 TUI를 제공함(like k9s)
Q&A
- 자연어 질의 ai 모델 연동 보안이슈? sqlite3에 token을 암호화 해서 저장
- 환각정도와 성능? 벤치마킹 있음. docs 참고
- 메모리 관리? web ui는 세션스토리지, tui는 메모리상에 context를 보관함
- llm이 관여할 수 있는 범위와 관한 제어? kubeconfig.conf 이용
- claude code, kiro-cli 대비 핵심 차별점?
- 고가용성? docker와 helm차트는 제공하나 고가용성은 아직 고려 안했음
- AI 모델별 차이점? 자체 테스트 결과 25B 이상이어야 쓸만했음. embedding을 이용해도 성능이 좋지 않았음
HoneyBeePF
presentation
- 모든 토큰을 추적하고 모든 유출을 막는다
- 미션: llm 사용을
- 관측가능하게
- 통제 가능하게
- 안전하게
- llm api에 관련된 4가지 subject
- visibility
- cost control
- anomaly detection
- security risk
-
모니터링기능을 모든 프로젝트에 일일히 넣어야 함
- 커널단을 이용
- application이 하는 모든 일은 kernel을 거침
- kernel을 감시하는 소프트웨어
- application의 kernel 사용하는 메시지를 캡처해 promethues에 관측값 송신
- 단순히 ai providor 수준이 아니라 각 vendor의 모델별, 팀별, pod별 각 리소스 차원에서 관측 가능
- 민감한 파일 접근을 kernel 레벨에서 관리하고 있음 -> 보안강화
Q&A
- 생략
Dr.Kube
presentation
- https://github.com/dr-kube/dr-kube
-
gitops 원칙: 변경은 git pr로만, kubectl 직접 쓰기 금지
- 기존 장애 대응의 한계: 끊어진 파이프라인
- 단순한 자동화가 아니라 gitops 기반으로 일관성있고 반복가능한 관측기반 운영환경 제공
- 장애 분석 ~ 복구 반영까지를 하나로 묶음
- 장애알림 -> slack 통보 -> AI가 수정안을 만들고 yaml 수정, pr 생성 -> 사용자 승인
- 문제는 모델이 아니라 운영 제어
- 중복 알림 폭주 -> 필터링 및 쿨다운 등 6가지
- 실무 적용 가치: 안전한 자동화 루프를 통한 MTTR 단축, 운영 피로도 감소, 변경 추적성 극대화
Q&A
- ai 환각을 줄이기 위해 langgraph를 튜닝하였는지? 튜닝 안함. kodex 5.3, gemini 3.0 사용함. 메인 기능에 집중하기 위해 배제함
- 잘못된 코드를 생성하는 등의 문제(문법은 가능하지만 지원하지 않는 옵션 적용 등)? default yaml을 이용해 제어 기대
- 검증단계에서 정상 상태로 판단하는 기준(사내 운영 표준 및 보안 문제 검증)? 저희도 문제 있다고 생각함. humain in the loop 등 향후 보완 계획.
Gopedia
presentation
- enterprise knowledge graph platform: AI Agent를 위한 지능형 지식 신경망 인프라
- 문제:
- 정보 파편화 (DB, wiki, git, confluence, 사내 문서, 게시판 등)
- 성능 충돌?
- 키워드 검색을 넘어선 검색(문맥인지 + 관계유지)
- 팔란티어의 온톨로지 등 여러 관련 문제점 해결을 위한 프로젝트 존재
- 차별점: agent-first 접근방식(사람이 아닌 AI Agent를 대상), grpc를 이용한 수평확장 가능
- 주요 용어는 나무의 용어에서 concept 따옴
- 구조
- Root: md, code, project source
- account tree(stem): ingestion + RAG extended
- hub(Rhizome): rdb, graphdb(typedb, 관계추론), vectordb(qdrant, semantic검색) 사용
- eco(Leaf & Fruit)
- 기술과 언어는 바뀔수 있음
- openstack 사용함
- 내부 구조는 파일 일기 작업에서 관련 데이터중 최소 단위를 L3, 이후 문단 문서 등 범위를 넓히는 식으로 동작
- 고려중인 workload
- 흩어진 사내 시스템들의 데이터 통합 + ontology 구축으로 업무맥락 이해
- k8s 기반의 on-prem. gopedia를 구축하여 기업의 데이터 주권 강화
- ai agent 전용 데이터 최적화로 실시간 업무 자동화 성능 툴의 극대화
- 현재는 markdown, 폴더 단위 하위 문서 연동 기능 존재
Q&A
- backstage와 기본 RAG와의 차별점? 지금 당장은 큰 차이가 없음. 온톨로지 등 넣으면 차후 달라질 거라 생각함
- openstack 위에서 테스트하는 이유? 인프라에 대한 지식이 많지는 않음. 코드기반으로 관리하기 위해 openstack과 k8s를 사용함…, 팀원에게 물어 추가
- 지식 권한관리 전략? 나중에 진행할 프로젝트에 있음. data를 넣을 때 machine id를 넣을 예정.
- L3에서 검색이 안되면 L2 검색한다 했는데 얼마 정도의 성능저하가 생기는지? 현재 실제 문서 단위 지식은 L3에 존재함. L1은 L2의 아이디 리스트 보유, L2는 L3의 아이디 리스트 보유
- IaC 레포 다 넣어도 잘 될지? 되는게 목적
KubeRCA
presentation
- kubenetes root cause analysis
- 문제
- 수동 컨텍스트 수집
- 지식 파편화(slack, wiki, notion 등)
- 경험 의존적 분석(개인 경험에 강한 의존성)
- 높은 MTTR(반복 장애도 매번 처음부터 조사하는 경우 많음)
- 구조
- alert -> ai agent가 k8s 상태와 관측데이터 수집 -> RCA 초안 생성(pgvector) + 각 채널(slack 등) 송신
- 정형화된 RCA 템플릿 + pgvector 기반 top3 유사 incident 검색
- helm 제공
- 어떻게 했는가?
- Istio bookinfo 구조 사용
- Chaos Mesh 이용해서 oomkilled, crashloopbackoff 장애 유발
- Istio fault injection -> latency 증가와 5xx 에러 주입
- load generator -> 실제 트래픽 부하 재현
- 생각해서 넣은 기능
- 초기 AI의 RCA 리포트 분석과 resolved 시점에서 다시 RCA를 만들어 비교(실제 원인이 달랐던 경우)
- RCA에 대한 코멘트 기능
- SRE/devops 팀 타겟.
Q&A
- jira ticket 자동화 생성 연동 로드맵 고려중인지? 좋은 의견. 고려하겠습니다
- llm api 비용? 테스트로 했을 때 큰 비용은 없었음. 테스트 필요해 보임
- 데모 슬랙 메시지 내용에 비즈니스 기능이 언급되면서 실제 유저가 어떤 기능에서 장애를 겪었는지 있는게 좋아보였음. 사전에 정의해둔 내용인지? 컨텍스트 제공하기 때문에 가능
- rca 분석 ai? 정해진 loop가 있으면 타겟하는 케이스에 특화임. 처음은 처음부터 분석하도록 프롬프팅 해둠
- 에러로그가 남지 않은 경우의 동작방식? 저도 error log에서 안나오는 경우가 있었음. describe랑 grafana등에서 확인함. kube rca에서는 종합적으로 판단해서 rca를 제공하게 되어있음
- 감지된 원인과 해결되었을 원인이 달랐던 실제 예시? istio에서 500번을 알아내긴 하더라
프로그램
AI 에이전트 101 현실에 수렴하는 AI의 시작(닷넷데프|Microsoft MVP)
- 현실에 수렴하는 AI에 고민해볼 필요가 있지 않겠는가
- AI의 장단점을 고려하여 나의 상황에 맞게 잘 전달을 해 주어야 한다
- AI가 기존 기술을 대체하는 것이 아니라, 기존 기술 위에 AI를 얹는 것
- 연결의 이 발표는 MCP로 보고 있음
- ai에게 resource 위치, 연결방법, cli 어떻게 쓰고 알려주면서 프롬프팅 -> 비효율
- mcp를 연결하자 (도구의 명세와 description을 이용)
- 이전에는 consice한 명세를 맞추어 개발해 왔지만, mcp 상단 description을 가지고 호출하게 되어있음
- 각 기능을 MCP 서버 형태로 발전시키자
- 요즘은 서버에 ssh로 들어가 직접설치는 잘 안함(컨테이너 기반이 일반적)
- k8s는 선언적으로 컨테이너간 연결등을 잘 관리하는데 좋지만 무조건 도입은 지양. (docker compose는 mcp에 좋은 기반)
- mcp
- let’s encrypt 초단기 ssl 인증서 무료 자동발급
- caddy: acme 기반 자동 인증서 리뉴얼
- tailscale / netbird 사이드카: 방화벽 변겨 없이 사내 시스템고 ㅏ전구간 암호화 연결
- oauth2: 최소권한원칙
- ship to productiondㅢ 본질은 끊임없는 현대화
- 과거와 단절된 혁신은 존재할 수 없음
- ai에 경도 X -> 내가 가진 에셋을 활용하자
클라우드 네이티브 데이터베이스의 완성: 아키텍트의 플레이북 - Kubernetes 환경에서 Postgres를 구축하고 운영하기 위한 완벽한 가이드
- k8s 사용은 일반적. DB는 어디에 띄우지? 에 대한 이야기를 해보려 함
- 요즘은 k8s를 거의 많이 사용함.
- DB는 stateful한 리소스. k8s로 관리 가능은 하지만 문제점
- CNPG: CNCF 프로젝트 중 DB 프로젝트가 거의 없는데 그 중 하나(?)
- Operator pattern
- PVC를 각 컨테이너에 복제해서 관리하겠다…?
- 백업은 snapshot으로
- 접근제어 가능
- rw session / ro session 자동분리(마스터 슬레이브 등)
- 그래서 어떻게 동작하냐? Operator라는 pod가 떠서 관리됨
- Operator pattern
- 해결하는 문제?
- CNPG를 통하면 offline에서 자동화 가능
- pod만 죽였다가 살리는 방식으로
- 고급 운영 제어: 비용 최적화 및 디버깅 툴
- kubectl cnpg status 등 cli도 제공
- DBA를 따로 두는 조직은 많지 않음.
- k8s는 개발자가 많이 씀
- 이건 굉장히 신박한데?
Claude Code 사용기 cloud native project 생성 중
- ai 사용에서 가장 중요한 거. 일단 비용을 써야 함
- 고객 / 사람은 눈으로 보지 않으면 모른다
- 사용하는 나도 그렇다
- 계획을 만들라 하고 나도 지적질한다
- 계획을 세우는 것은 필수이다
- harbor의 arm 버전이 없음(bitnami 사태)
- 그래서 folk로 사용 중
- 주기적 folk하지만 ci/cd 에러 나옴(주로 aws 기반)
- ai를 사용하면 기존 repo를 folk해서 사용하기 쉽다
Nullus 클릭 몇 번으로 완성하는 devops (platform engineering framework)
- 반복적인 구축의 고통과 운영 노하우를 모아 만듦
-
platform devsecops 표준화 /자동화 할수 없을까
- devsecops 파이프라인 구축에 주요 영향을 주는 부분
- 폐쇄망 / 인터넷 망
- Iaas 수준? 외부 사용 가능?
- 3개월간 devsecops를 어떻게 쉽게 구축할 수 있는지 고민함
- 통합 프레임워크 개발의 needs를 추출함
- nullus := devops를 위한 devops, platform engineering framework
- 커뮤니티의 노하우가 담긴 실용적이고 단순한 devops f/w
- 검증된 oss 조합을 선택하고, 노코드 ui로 설정하고, 원클릭으로 k8s환경에 배포
- 데모
- 리소스 추천하는 부분이 중요
- 이거 공부할 가치가 있겠다
- 특히 best practice에 맞는 yaml 자동 관심있음
- 공공 폐쇄망 등 인프라 제약이 있는 상태에서 reliance
- 다 됐고, 이 커뮤니티 들어가야겠는데
- 데모 좀 눈에 띈다 (유튜브 nullus 데뷔)
- roadmap의 마지막은 cncf sandbox
- 우리 아키텍처에 관심 있으려면 ddd, hexagonal arch. 이해요망
Start Faster on JVM & Spring Boot (한국스프링사용자모임)
- JVM과 스피링 생태계가 cloud에 어떻게 대응하고 있는가
- JIT compiler: 대포는 hotspot
- Class Data Sharing(CDS)
- 동일한 호스트에서 동작하는 JVM의 시작시간 / 메모리 사용량 감소 목적.
- 했던 기록을 cds 파일에 기록해 두고 나머지는 그 파일 참조해서 달성
- JEP310을 통해 java first party를 넘어선 third party도 지원하게 됨
- 이후에도 JEP 341, 350 등 발전함
- CRaC(Coordinated Restore at Checkpoint)
- application 상태까지 체크포인트 파일로 저장하고 스냅샷으로 복원하는 기술, linux의 Checkpoint/restore in userspace (CRIU) 기반
- 엔터프라이즈 레벨에서 사용하긴 어려운 기술. token 등이 기록됨
- Class Data Sharing(CDS)
- Ahead-of-Time Compiler
- 프로그램을 실행하기 전에 바이트코드를 네이티브 머신코드로 변환하는 컴파일러
- 단, 런타임 최적화가 이루어지지 않아서 JIT 만큼의 성능을 높이지는 않음
- PGO(Profile-Guided Optimization: 커뮤니티 edition에서 사용 불가, 24년 이후 재배포 불가한 라이센스로 사용 자체는 가능)
- 애플리케이션 실행 중에 특정 이벤트가 발생한 횟수를 계측하여 요약한 프로파일을 AOT Compiler에게 제공
- 실제로 PGO를 프로덕션과 유사한 환경을 줄수록 처리량이 올라갈 수 있으나, OOM, GC 문제도 있음
- Project Leyden
- 범용성을 먼저 챙기고 성능을 개선하자
- 실행하기 위해 Training Run
- Grall VM에서는 all or nothing 정도의 제약이었으나 이건 그정도까진 않음
- import시 globbing star를 하면 성능문제가 있음
- JEP 483: .cds 파일을 .aot로 바꾸자(뭔가 바꿈)
- JEP 514: AOT 캐시 생성 워크플로우 간소화
- JEP 515: 메서드 실행 프로파일링을 AOT 캐시에 들어간 제안
- JEP 516: leyden에서 gc 호환성 개선(zgc 등 사용 가능), grall vm의 gc 제약 해결
On-Prem to AWK: API Gateway zero-Downtime 클라우드 전환기
- AWS 한국사용자모임
- LG U plus
- 주요 대기업에서 주로 행해지고 있는 public cloud로 마이그레이션 후기
- 가장 먼저 해야 했던 거는 연결상태 확인
- IDC에서 AWS로 들어오는 흐름 확인이 굉장히 중요했음
- haproxy를 이용하여 IP 변경소요를 막았음
- haproxy 5개
- pick traffic 보임. 대부분 작업은 출퇴근시간, 9시 이후 pass사용량이 줄어듬
- 1순위가 대내 traffic을 꺾는 것, 2순위는 대외 트래픽 꺽는 것
- 빠른 롤백이 되어야 함
- 큰 고객들은 대부분 IDC를 통해 traffic이 왔어서 20%씩 바꾸니 가능했음
- 겪었던 난관: Hair-pin NAT