학습 에이전트 — AI 두뇌 구축하기
인프런이 강의 학습 에이전트를 구축하며 겪은 기술 스택 선정, 컨텍스트·도구 설계, LLM-as-a-Judge 품질 개선, 비용 최적화 전략을 다룬다. LLM SSE 스트리밍 처리를 위해 Spring MVC + Virtual Thread + Spring AI를 선택하고, 명시적 프롬프트 캐싱으로 입력 토큰을 90% 절감하는 과정까지 실전 경험이 담겨 있다.
인프런이 강의 학습 에이전트를 구축하며 겪은 기술 스택 선정, 컨텍스트·도구 설계, LLM-as-a-Judge 품질 개선, 비용 최적화 전략을 다룬다. LLM SSE 스트리밍 처리를 위해 Spring MVC + Virtual Thread + Spring AI를 선택하고, 명시적 프롬프트 캐싱으로 입력 토큰을 90% 절감하는 과정까지 실전 경험이 담겨 있다.
인프랩이 소프트웨어 공급망 공격(Supply-Chain Attack)에 대응하기 위해 pnpm 11의 보안 설정을 활용해 조직 전체의 1차 방어선을 구축한 과정을 다룬다. 2025년 3월 Axios npm 패키지가 탈취되어 악성 코드가 게시 후 6분 만에 배포된 사례를 출발점으로, pnpm 11의 기본 보안 옵션들이 이런 공격을 어떻게 원천 차단하는지 설명한다.
인프랩 프론트엔드 팀이 20개 이상의 앱이 의존하는 Mantine 기반 디자인시스템을 v6에서 v8로 올리면서 AI 에이전트를 어떻게 활용했는지 다룬다. 단순 버전업이 아닌 스타일 기반 자체를 교체하는 작업이라 1차 시도가 실패했고, v6/v8 공존 격리 설계와 AI 에이전트 오케스트레이션으로 전사 규모 마이그레이션을 진행했다.
MFE 환경에서 공통 GNB를 개편하면 여러 프론트엔드 서비스의 배포 경계와 UI 일관성이 충돌한다.
여러 영상을 동시에 패키징할 때 Shaka Packager가 간헐적으로 파일 쓰기 실패를 내지만 애플리케이션 로그만으로 원인을 알 수 없었다.
단일 QA 환경에서는 여러 기능이 동시에 개발될 때 develop 배포가 충돌하고, 테스트 순서를 맞추는 커뮤니케이션 비용이 컸다.
인프랩의 강의 VOD 원본·다해상도·썸네일이 S3 비용을 끌어올리고 CDN 이미지 트래픽도 누적돼 클라우드 비용이 가파르게 늘고 있다.
인프런 강의실의 10개 이상 모달이 서로를 직접 호출해 조건 분기가 파일 곳곳에 흩어져 있고, 정책 변경마다 여러 컴포넌트를 동시에 수정해야 한다.
EKS 1.32 Bottlerocket AMI 의 GPU 노드(g5g.xlarge)가 생성 10~11분 후 반복 교체된다. 원인은 AMI 에 libdcgm.so 가 없어 NVIDIA DCGM 초기화가 실패, AcceleratedHardwareReady 컨디션이 False 가 돼 Karpenter Node Auto-Repair 가 노드를 unhealthy 로 처리한 것.
Google Sheets 에 정의한 taxonomy 를 보고 GTM 의 태그·트리거·변수를 수동 등록하는데, 페이지당 50개+ 이벤트 규모에서 누락과 파라미터 오타가 반복된다.
GB 단위 대용량 컨테이너 이미지를 사용하는 ML/데이터 파이프라인에서 노드가 새로 뜰 때마다 이미지 pull 과 압축 해제에 수 분이 걸려 Spot 인스턴스 비용이 낭비됐다.
팀 규모가 커지면서 코드 리뷰가 꼼꼼하게 이뤄지지 못하고, 타이핑 오류나 컨벤션 위반이 프로덕션까지 새어 나가는 경우가 늘었다.
기존 한국어 서비스에 다국어 지원을 붙이려면 수천 개의 한글 문자열을 일일이 `t()` 함수로 감싸야 했고, 개발자 며칠치 반복 작업과 키 컨벤션 합의가 필요했다.
플랫폼 성장으로 스팸 게시글이 늘면서 운영팀의 수작업 부담이 커졌고, GPT 단독 필터링은 새로운 패턴·다국어 대응이 느렸다.
팀이 커지며 VPN 요구가 진화했지만 AWS Client VPN 은 모바일 SAML 미지원, Firezone 은 오픈소스 지원 중단과 세부 권한·Split Tunnel 한계로 운영이 어려워졌다.
AWS Advanced JDBC Wrapper를 쓰는 Spring Boot 환경에서 트랜잭션 종료 시점에 "Cannot change transaction read-only property in the middle of a transaction" 에러가 간헐적으로 났다.
2인 소규모 팀으로 매년 2배 이상 성장하는 서비스에서 빠른 릴리즈와 안정성을 동시에 유지해야 했다.
레거시 VanillaJS + FxJS 시스템과 신규 React/TypeScript 시스템을 9인 팀이 동시에 운영하며 빠른 릴리즈와 코드 품질 균형을 맞춰야 했다.
빠르게 성장하는 서비스에서 레거시 JavaScript/FxJS 스택의 러닝커브, 타입 안정성 부재, IDE 지원 한계가 개발 병목이 됐다.
인프런 서비스에 3개 버전의 디자인 시스템이 혼재해 UI 일관성이 깨졌고, 컴포넌트 식별과 문서화 비용이 누적됐다. 플랫폼 팀 없는 소규모 조직(개발 10명·디자이너 5명)에서 0부터 만들 여력은 없었다.