전체 글

   Backend · DevOps    기록을 남기고, 정보를 공유하는
반응형
AI가 코드를 빠르게 만들어 주면서 새로운 문제가 커지고 있습니다. 기능은 동작하지만 중복 코드, 불명확한 추상화, 빠진 테스트가 누적되는 현상입니다. 이런 코드를 나중에 정리하는 작업을 가리켜 “슬롭픽스”라고 부르는 사례도 등장했습니다.속도와 품질이 충돌하는 이유생성 단계의 성공 기준은 보통 “화면이 보인다”, “테스트 한두 개가 통과한다”에 머뭅니다. 하지만 운영 코드의 기준은 장애 복구, 보안, 관측성, 변경 용이성까지 포함합니다. 생성 속도만 측정하면 전체 개발 프로세스가 빨라졌는지 알기 어렵습니다.5개의 품질 게이트기능 테스트: 정상 흐름뿐 아니라 경계값과 실패 응답을 확인합니다.정적 검사: 타입, 린트, 의존성 취약점을 자동 검사합니다.리뷰: 요구사항과 실제 diff가 일치하는지 확인합니다.정..
웹 자동화는 화면을 클릭하는 단계에서, 웹사이트가 에이전트에게 구조화된 기능을 제공하는 단계로 이동하고 있습니다. 이 흐름을 이해하면 “버튼을 찾아 눌러라”라는 불안정한 자동화와 “예약을 생성하라”처럼 의미 있는 작업 호출의 차이를 볼 수 있습니다.기존 브라우저 자동화의 한계화면 기반 자동화는 레이아웃이나 버튼 문구가 바뀌면 쉽게 깨집니다. 로그인 상태, 팝업, 로딩 타이밍까지 매번 처리해야 해서 유지보수 비용도 큽니다.WebMCP가 제안하는 방향WebMCP는 웹페이지가 자바스크립트 함수나 HTML 폼 같은 구조화된 도구를 에이전트에 노출하는 방향의 제안입니다. 에이전트는 화면의 위치를 추측하는 대신, 페이지가 제공하는 입력과 결과 형식을 확인할 수 있습니다.안전한 자동화 설계읽기와 쓰기 분리: 조회 도..
AI 에이전트 한 명에게 모든 일을 맡기면 편해 보이지만, 큰 작업에서는 계획과 구현과 검증이 서로 섞이기 쉽습니다. 그래서 최근에는 역할을 나눈 멀티 에이전트 워크플로가 주목받고 있습니다.세 역할로 시작하기플래너: 요구사항을 읽고 변경 파일, 위험 요소, 검증 명령을 정리합니다.빌더: 확정된 계획 안에서 코드를 수정하고 테스트를 추가합니다.리뷰어: 계획과 실제 변경을 비교해 누락, 회귀, 보안 문제를 찾습니다.왜 역할을 나누는가역할 분리는 에이전트의 능력을 마법처럼 높이는 방법이 아닙니다. 대신 한 에이전트가 자기 변경을 스스로 정당화하는 편향을 줄이고, 작업 결과를 서로 다른 관점에서 확인하게 해 줍니다.권장 실행 순서플래너가 저장소를 읽고 작업 계획을 작성합니다.사람이 계획과 범위를 승인합니다.빌더..
AI 코딩 도구를 많이 쓰다 보면 어느 순간 속도보다 컨텍스트와 토큰 비용이 더 중요한 문제가 됩니다. 긴 대화에 파일을 계속 붙이고, 에이전트가 같은 코드를 반복해서 읽게 하면 결과는 좋아지지 않는데 사용량만 커질 수 있습니다.토큰 비용이 커지는 세 가지 이유관련 없는 파일까지 한 번에 읽는 경우완료 조건 없이 “계속 개선해 달라”고 요청하는 경우실패 로그와 이전 답변을 정리하지 않고 누적하는 경우컨텍스트를 예산처럼 나누기작업을 시작할 때 전체 예산을 정하지 않아도 좋지만, 적어도 탐색·계획·구현·검증을 분리해야 합니다. 탐색 단계에서는 구조만 읽고, 계획이 정해지면 필요한 파일만 다시 전달합니다. 구현이 끝난 뒤에는 새 대화나 새 작업으로 검증을 분리하면 불필요한 누적을 줄일 수 있습니다.효율적인 프..
바이브코딩은 끝난 것이 아니라 다음 단계로 진화하고 있습니다. 2026년의 핵심 변화는 “AI에게 코드를 만들어 달라고 말하는 것”에서 “AI 에이전트가 계획·구현·테스트·리뷰를 수행하도록 작업 시스템을 설계하는 것”으로 중심이 이동했다는 점입니다.바이브코딩과 에이전틱 엔지니어링의 차이바이브코딩은 결과물을 빠르게 확인하는 데 강합니다. 아이디어를 입력하고 화면이나 기능을 즉시 보는 방식입니다. 반면 에이전틱 엔지니어링은 저장소의 규칙, 작업 계획, 검증 명령, 리뷰 기준까지 에이전트의 작업 범위에 포함합니다.쉽게 말하면 바이브코딩이 “만들어 보기”라면, 에이전틱 엔지니어링은 “반복해서 믿을 수 있게 만들기”입니다.실전 7단계문제 정의: 원하는 화면보다 사용자 문제와 완료 조건을 먼저 적습니다.저장소 지도..
상태 이름보다 이벤트와 종료 이유를 먼저 본다Kubernetes 장애를 만났을 때 무작정 Pod를 재시작하면 중요한 증거가 사라집니다. 현재 상태, 최근 이벤트, 이전 컨테이너 로그와 리소스 사용량을 순서대로 수집한 뒤 원인을 좁혀야 합니다.공통 진단 순서kubectl get pods -n my-namespace -o widekubectl describe pod my-pod -n my-namespacekubectl logs my-pod -n my-namespace --all-containerskubectl logs my-pod -n my-namespace --previouskubectl get events -n my-namespace --sort-by=.lastTimestampdescribe의 State..
H2 테스트만으로 부족한 이유H2는 빠르고 편하지만 MySQL의 문자 정렬, JSON 타입, 인덱스, 제약조건과 SQL 문법을 완전히 재현하지 못합니다. Testcontainers는 테스트 실행 중 실제 데이터베이스 컨테이너를 띄워 로컬과 CI에서 동일한 환경을 제공합니다.준비 사항Docker 또는 호환되는 컨테이너 런타임Spring Boot 테스트 의존성JUnit JupiterTestcontainers JUnit·MySQL 모듈Gradle 의존성dependencies { testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.springframework.boot:spring-boot-t..
RSC를 지원한다면 사용하지 않아도 확인해야 한다React 팀은 2025년 말 React Server Components와 Server Functions 처리 과정의 심각한 취약점을 공개했습니다. 인증 없는 원격 코드 실행, 서비스 거부와 서버 함수 소스 코드 노출 문제가 포함됐으며, 일부 프레임워크는 직접 Server Function을 작성하지 않았더라도 영향을 받을 수 있습니다.주요 취약점CVE-2025-55182: 인증 없는 원격 코드 실행, 초기 공개 기준 CVSS 10.0CVE-2025-55184·CVE-2025-67779: 무한 루프와 CPU 사용을 유발할 수 있는 서비스 거부CVE-2025-55183: 특정 조건에서 Server Function 소스 코드 노출CVE-2026-23864: 추가..
왜 지금 CRA에서 이동해야 할까?React 팀은 2025년 신규 앱에서 Create React App 사용을 중단하도록 안내하고 프레임워크 또는 Vite 같은 빌드 도구를 권장했습니다. 기존 CRA 프로젝트가 즉시 중단되는 것은 아니지만 의존성과 빌드 구성을 최신 생태계로 옮길 계획은 필요합니다.1. 먼저 현재 상태를 고정한다git checkout -b migrate/cra-to-vitenpm cinpm test -- --watchAll=falsenpm run build기존 테스트와 빌드 결과, 환경변수 목록, 프록시 설정과 배포 경로를 기록합니다. 마이그레이션 후 결과를 비교할 기준입니다.2. Vite와 React 플러그인 설치npm install -D vite @vitejs/plugin-react현..
2026년 Copilot 비용은 사용량을 함께 봐야 한다GitHub는 2026년 6월 Copilot 요금과 사용량 관리 방식을 업데이트했습니다. 핵심은 플랜 이름만 비교하는 것이 아니라 월간 포함 AI Credits, 초과 사용 예산, 코드 리뷰가 사용하는 GitHub Actions 시간까지 함께 확인하는 것입니다.AI Credits란?AI Credits는 Copilot의 여러 AI 기능 사용량을 공통 단위로 관리하기 위한 개념입니다. 모델과 기능, 요청의 복잡도에 따라 소비량이 달라질 수 있으므로 “질문 한 번은 항상 몇 크레딧”처럼 단순 계산하면 실제 청구와 차이가 생길 수 있습니다.월간 포함량과 추가 예산각 플랜에는 월간 포함 사용량이 있고, 이를 다 사용한 뒤에도 계속 이용하려면 추가 지출 예산을..
AI 리뷰는 두 번째 리뷰어로 보는 것이 정확하다AI 코드 리뷰는 사람이 놓친 패턴을 빠르게 찾는 데 유용하지만 승인 권한을 통째로 맡길 단계는 아닙니다. 저장소의 정책, 운영 맥락과 제품 의도를 모두 아는 사람의 검토가 필요합니다. 가장 좋은 활용법은 자동 검사와 사람 리뷰 사이에서 추가 신호를 제공하는 것입니다.AI가 비교적 잘 찾는 문제명확한 null 처리 누락과 경계값 오류반복되는 보안 안티패턴수정 코드와 기존 테스트의 불일치리소스 해제와 예외 처리 누락공개 API 변경과 문서 불일치놓치기 쉬운 문제제품 요구사항 자체의 오해운영 트래픽과 데이터 분포에 따른 성능 문제여러 서비스에 걸친 계약 변경조직 내부 보안·감사 정책겉으로 통과하지만 의미가 약한 테스트리뷰 프롬프트요약보다 문제 발견을 우선해 줘..
자동화는 자주 하는 일을 정확히 반복하는 기술이다개발 자동화의 목적은 사람을 완전히 빼는 것이 아니라 반복 가능한 절차를 매번 같은 품질로 수행하는 데 있습니다. Codex Desktop에서는 정기 작업을 자동화하고, 자주 쓰는 절차를 스킬로 묶으며, 긴 작업은 목표 단위로 이어갈 수 있습니다.자동화하기 좋은 업무의존성 업데이트 후보와 보안 공지 요약테스트 실패 원인 분류주간 변경사항과 릴리스 노트 생성PR 리뷰와 누락된 테스트 확인정기 리포트와 문서 업데이트자동화 전에 먼저 수동 절차를 안정화한다매번 판단 방식이 달라지는 업무를 바로 자동화하면 실패 원인도 자동화됩니다. 입력, 단계, 성공 조건, 실패 시 보고 형식을 먼저 문서화하세요.입력: 기본 브랜치의 최근 7일 커밋단계: 변경 분류 → 사용자 영..
“잘 고쳤다”를 어떻게 측정할까?AI 코딩 도구의 데모는 대개 성공 장면만 보여 줍니다. 실제 능력을 비교하려면 같은 저장소, 같은 버그, 같은 권한과 완료 조건을 사용해야 합니다. 이 글은 누구나 자신의 프로젝트에서 재현할 수 있는 버그 5종 실험 방법을 정리합니다.실험 전 원칙정답 커밋은 별도 브랜치에 보관한다.각 도구는 동일한 시작 커밋에서 실행한다.인터넷·패키지 설치 권한을 동일하게 맞춘다.프롬프트와 제한 시간을 기록한다.기존 테스트와 새 회귀 테스트를 모두 평가한다.버그 1: 경계값 오류페이지네이션 마지막 페이지, 빈 배열, 날짜 경계처럼 한 칸 차이로 발생하는 오류를 넣습니다. 수정 코드뿐 아니라 경계값 테스트를 추가하는지 확인하세요.버그 2: 비동기 경쟁 상태검색어가 빠르게 바뀔 때 이전 요..
AGENTS.md는 프로젝트의 작업 설명서다AI 코딩 에이전트에게 매번 테스트 명령, 코드 스타일, 수정 금지 파일을 반복해서 설명하고 있다면 프로젝트 루트에 AGENTS.md를 둘 차례입니다. 이 파일은 저장소에서 작업할 때 따라야 할 장기적인 규칙을 전달합니다.어떤 내용을 적어야 할까?설치·실행·테스트·빌드 명령디렉터리별 역할과 수정 금지 영역기존 코드와 컴포넌트 재사용 원칙완료 전 반드시 수행할 검사보안 키와 개인정보 처리 원칙최소 템플릿# AGENTS.md## Commands- Install: npm ci- Test: npm test- Lint: npm run lint- Build: npm run build## Rules- 기존 컴포넌트를 우선 재사용한다.- generated/와 vendor/는 ..
두 앱은 닮았지만 출발점이 다르다Codex Desktop과 GitHub Copilot App은 모두 코드베이스를 읽고, 계획을 세우고, 파일을 수정하며, 테스트와 브라우저 검증까지 수행하는 에이전트형 개발 환경입니다. 하지만 실제 사용 흐름은 다릅니다. Codex는 로컬 프로젝트와 도구를 중심으로 작업을 끝까지 수행하는 데 강점이 있고, Copilot App은 GitHub 이슈·브랜치·PR이라는 협업 흐름에서 출발하기 쉽습니다.비교 기준새 저장소를 이해하는 속도수정 범위를 지키는 능력테스트와 빌드 실행UI 브라우저 검증Git diff와 PR 연결반복 작업 재사용1. 시작점: 로컬 프로젝트와 GitHub 작업Codex Desktop은 로컬 폴더를 열어 현재 작업을 분석하고 수정하는 흐름이 자연스럽습니다. ..
반응형
Sungwoo Koo
Koo Devlog