전체 글
들어가며2026 KB데이타시스템 사내 해커톤에서 팀 End-Gamers로 참가해서 대상을 받았다. Incident Autopsy- 여러 시스템에 흩어진 장애 로그를 AI가 교차 분석해서 원인부터 재발 방지 권고까지 자동으로 뽑아주는 운영 도구다.https://github.com/End-Gamers/incident-autopsy-public GitHub - End-Gamers/incident-autopsy-public: AI를 활용한 장애 보고서 작성 자동화 프로그램AI를 활용한 장애 보고서 작성 자동화 프로그램. Contribute to End-Gamers/incident-autopsy-public development by creating an account on GitHub.github.com 기술..
들어가며에러 디톡스 정원을 만들고 배포까지 끝냈다. 처음엔 배포 중에 겪은 문제들만 정리하려 했는데, 다시 보니 이 프로젝트는 이틀 만에 뼈대를 세우고 한 달을 Google AI studio에서 작업하고, 나흘 만에 몰아서 완성한, 꽤 특이한 리듬으로 진행됐다. 그래서 트러블슈팅 나열보다는 프로젝트 하나를 처음부터 끝까지 되짚는 회고로 남기기로 했다.1. 프로젝트 기간과 진행 리듬개발 기간은 2026년 7월 15일부터 8월 19일까지, 달력으로는 한 달이 넘는다. 근데 실제로 커밋을 남긴 날은 그중 엿새뿐이다. 1차 - 7월 15일~16일 (이틀): 첫 커밋으로 정원 뼈대를 세우고, README와 보안 헤더, 명상 타이머까지 붙여 프로토타입을 끝냈다.2차 - 7월 17일~8월 15일 (한 달): 핸드폰과..
들어가며멀티 테넌트 시리즈를 두 편 쓰고 나니, 다음 주제로 헤드리스 CMS가 궁금해졌다.이름부터 낯설었다. "헤드리스(headless)", 머리가 없다니 - 이게 대체 뭘 의미하는 건지 감이 안 잡혔다. AI와 문답을 하던 중 프론트엔드 쪽 배경지식이 얕아서 특히 중간에 많이 막히긴 했지만,프론트를 잘 모른다고 인정하고 나니 더 쉽게 이해할 수 있었다. 시작은 이 질문이었다."일반 CMS(워드프레스 같은)와 비교했을 때, 헤드리스 CMS에서 '머리(head)'가 없다는 게 무슨 의미일까?" 1. "머리"가 가리키는 게 뭘까첫 질문은 너무 추상적이어서 바로 막혔다. 더 쉬운 질문으로 다시 왔다."블로그 글 하나에는 '글의 내용'(제목, 본문, 사진)과 '화면에 보이는 모습'(글자 크기, 배경색, 레이아..
들어가며지난 글에서 Silo와 Pool, 하이브리드 모델까지 개념을 정리했는데, 개념만 알고 끝내니 뭔가 허전했다.실제로 세계에서 제일 큰 SaaS들은 이 트레이드오프를 어떻게 풀었을까? 이론과 실전 사이에 갭이 있을 것 같아서 자료를 찾아봤다. 그리고 그 과정에서 아무렇지 않게 썼던 단어 두 개, provision과 sharding이 걸렸다. 설명 없이 지나갔던 용어라 소크라테스식으로 다시 짚었다. 시작은 이 질문이었다."우리가 스스로 도출한 Silo/Pool/하이브리드 분류가 실제 시스템에도 그대로 나타날까?" 1. Salesforce - 극단적 Pool 모델의 교과서세계 최대 SaaS 중 하나인 Salesforce는 의외로 "가장 위험해 보이는" Pool 모델을 쓴다.고객마다 별도 DB나 스키마를..
들어가며멀티 테넌트(Multi-Tenant)라는 단어를 처음 들었을 때 IAM 권한 그룹부터 떠올렸다.AWS IAM에서 사용자나 그룹별로 권한을 나누는 것과 비슷한 개념이라고 생각했는데,그건 절반만 맞고 절반은 틀린 답이었다. 시작은 이 질문 하나였다."'테넌트(tenant)'는 원래 세입자라는 뜻인데, 소프트웨어 시스템에서 왜 하필 이 단어를 쓴 걸까?"1. 멀티 테넌트란?아파트 건물 하나에 여러 세입자가 사는 그림을 떠올려보라는 힌트가 왔다."IAM 권한 그룹처럼 계정을 분리하는 것과 뭐가 다를까?" IAM 권한 그룹으로 답했는데, 방향이 완전히 틀린 건 아니지만 다른 층위의 이야기였다.IAM은 하나의 AWS 계정 안에서 사람이나 역할(role)별로 권한을 나누는 것이다.멀티 테넌트는 그보다 위 층위..
들어가며AI가 로그를 보고 "X026091 사용자 거래에서 SQLException 발생"이라고 뽑아줬다. 근데 X026091이 누구인지는 모른다.계좌신규 거래인지, 결제 거래인지, 어떤 시스템이 처리하는지 - 이 맥락이 없으면 분석이 반쪽이라는 단점이 있다. AI가 이 정보를 스스로 찾아올 수 있다면 어떨까?MCP 서버를 사용하며 되지 않을까. MCP(Model Context Protocol)는 AI가 외부 도구를 직접 호출할 수 있게 해주는 표준 인터페이스다.AI가 필요하다고 판단하면 도구를 요청하고, 서버가 실행 결과를 돌려준다. 1. 왜 필요했나기존 분석 흐름은 로그 텍스트만 AI에게 넘겼다.로그 파일 → AI → "X026091 거래에서 SQLException 발생"여기서 멈췄다. X026091..
들어가며로그 업로드 버튼을 눌렀더니 브라우저가 60초 동안 빙글빙글 돈다.사용자 입장에서 이 시간은 타임아웃이 나거나, 답답해서 탭을 닫아버리기 딱 좋은 시간이다. 이 병목을 해결하기 위해 Celery를 도입하여 작업을 백그라운드로 분리하기로 결정했다. 1. 비동기로 바꾸면 뭐가 달라지나동기와 비동기의 차이는 작업의 '주도권'을 언제 클라이언트에게 돌려주느냐에 있다.[동기]클라이언트 → POST /analyze → AI 분석 (60초) → 응답 반환 ↑ 60초 동안 연결이 살아있어야 함[비동기]클라이언트 → POST /analyze → "접수됨" 즉시 응답 Celery 큐에 작업 등록 → W..
들어가며fix 커밋이 5개 나왔다.incident-autopsy에 AWS Bedrock을 붙이는 작업이었다. Claude API를 직접 쓰면 한 번에 됐겠지만,팀 환경 특성상 Bedrock을 통해야 했다. 간단할 줄 알았는데 생각보다 오래 걸렸다. 이 글은 그 5개 커밋 동안 뭘 만났는지 기록이다. 1. 설계 구조 — AI 제공사를 갈아끼울 수 있게처음부터 AI 제공사를 바꿀 수 있는 구조로 설계했다. 팀마다 쓰는 환경이 다르고, Bedrock이 안 되는 상황에서 Groq으로 빠르게 테스트해야 할 때도 있으니까.ai/base.py ← 인터페이스 정의ai/claude_client.py ← Anthropic 직접 호출ai/groq_client.py ← Groqai/bedrock_c..
"테스트 로그는 어디서 구하지..?" AI 장애 분석 도구를 만들다가 제일 먼저 막힌 게 이거였다.실제 운영 로그는 당연히 못 쓰고, 손으로 만들자니 패턴이 너무 단조로워서 AI가 제대로 학습이 안 된다. loghub같은 유익한 사이트도 있지만, 내가 원했던 제니퍼 로그나 KB 스타일의 로그가 아니었기 때문에학습용 로그를 계속해서 생성할 로그 생성기가 필요했다.https://github.com/logpai/loghub GitHub - logpai/loghub: A large collection of system log datasets for AI-driven log analytics [ISSRE'23]A large collection of system log datasets for AI-driven l..



