CI/CD는 YAML 작성이 아니라 안정적인 배포와 복구를 설계하는 과정이었다
새로운 프로젝트를 시작하거나 기존 시스템을 개선할 때, 개발자들이 가장 먼저 구축하고 싶어 하는 것 중 하나가 바로 CI/CD 파이프라인입니다. 코드를 푸시하기만 하면 마법처럼 테스트가 돌고 서버에 최신 코드가 반영되는 모습은 언제 봐도 짜릿하니까요. 하지만 돌이켜보면, 처음 CI/CD를 접했을 때 저의 관심사는 온통 “GitHub Actions Y...
새로운 프로젝트를 시작하거나 기존 시스템을 개선할 때, 개발자들이 가장 먼저 구축하고 싶어 하는 것 중 하나가 바로 CI/CD 파이프라인입니다. 코드를 푸시하기만 하면 마법처럼 테스트가 돌고 서버에 최신 코드가 반영되는 모습은 언제 봐도 짜릿하니까요. 하지만 돌이켜보면, 처음 CI/CD를 접했을 때 저의 관심사는 온통 “GitHub Actions Y...
1. 배포 실패를 main에서 발견했던 경험 이전에는 기능을 구현하고 PR을 만든 뒤, main 브랜치에 머지하고 배포하는 흐름을 자연스럽게 생각했다. PR은 주로 코드 리뷰를 받기 위한 공간이라고 봤고, 실제 문제가 있는지는 배포 과정에서 확인되는 경우가 많았다. 그런데 한 번은 기능 구현을 마친 뒤 main에 머지하고 배포를 진행했는데, 배포 ...
JWT를 사용하는 프로젝트를 진행하면서 인증 필터(OncePerRequestFilter 등)를 구현할 기회가 많았습니다. 필터 내부에서는 클라이언트가 보낸 토큰이 유효한지 검증하고 문제가 없으면 Spring Security의 SecurityContext에 인증 객체를 설정합니다. 처음 코드를 작성할 때는 단순히 중복을 제거하고 코드를 짧게 만드는 데...
k6로 성능 테스트를 코드로 관리하기 핵심 요약 이번에 k6를 공부하면서 가장 크게 느낀 점은 기능 테스트와 성능 테스트는 확인하는 문제가 다르다는 것이다. 기능 테스트는 API가 의도한 결과를 반환하는지 확인한다. 예를 들어 /api/products 요청을 보냈을 때 200 OK가 내려오고 상품 목록이 반환되는지 확인한다. 하지만 실제 서비스...
오늘 생각을 정리하게 된 계기 AI 시대에 전문성이 어떻게 변하는지 다룬 발표를 보고 나서, 한동안 머릿속을 맴도는 문장이 하나 있었다. AI 시대의 전문성은 “직접 만드는 능력”에서 “AI가 만든 결과를 검증하고, 방향을 정하고, 책임지는 능력”으로 이동한다. 처음엔 당연한 얘기 아닌가 싶었다. 그런데 최근 프로젝트에서 AI로 코드를 만...
최근 AI 코딩 에이전트를 사용하면서 단순히 “이 기능 구현해줘”라고 요청하는 것만으로는 부족하다는 생각이 들었다. 작은 실험이라면 에이전트가 어느 정도 알아서 판단해도 괜찮다. 하지만 팀 프로젝트에서는 이야기가 달라진다. 요구사항이 명확하지 않으면 에이전트가 빈칸을 임의로 채우고 정책이나 예외 케이스, API 경계가 문서마다 다르게 흩어질 수 있다...
오늘 학습한 이유 AI 브라우저 에이전트라는 말을 처음 들었을 때, 나는 단순히 “브라우저 창 안에서 동작하는 챗봇”을 떠올렸다. 웹페이지에 채팅창이 붙어 있고 거기서 질문을 하면 답변을 주는 형태 정도라고 생각했다. 그런데 조금씩 찾아보다 보니 내가 이해한 것과는 꽤 달랐다. 핵심은 답변이 아니라 행동이었다. 이번 TIL은 그 관점을 중심으로 정...
최근 팀 프로젝트를 하면서 개발 속도는 올리되 시스템 안정성은 지키는 방법을 오래 고민했습니다. 내 기능만 돌아가게 만드는 단계를 넘어 다른 팀원의 작업과 어떻게 맞물릴지, 변경에는 얼마나 유연하게 대응할지 고민한 과정을 TIL로 정리합니다. 1. 구현체 없이 먼저 달리기: 인터페이스와 가짜 객체 활용 협업을 하다 보면 모든 기능이 동시에 완성되지는...
기능을 추가하는 것보다 더 오래 고민한 부분은 각 기능의 목적과 책임을 어디까지 분리할지 결정하는 일이었습니다. 이번 Spring Boot Todo 과제에서는 검색, 매니저 등록 요청 로그, 실시간 채팅을 도전 기능으로 구현했습니다. 겉으로 보면 서로 다른 기능이지만 구현 과정에서 반복해서 마주한 질문은 비슷했습니다. “기존 구조를 재사용하는 편...
단순히 기능을 완성하는 것을 넘어 왜 이 기술을 사용하고 어떤 원리로 동작하는지 고민하는 과정이 더 중요합니다. 이번 Spring Boot Todo 과제를 진행하며 필수 기능을 구현하는 과정에서 마주했던 기술적 고민들과 그에 따른 선택의 이유를 정리해 보았습니다. 단순히 API가 동작하게 만드는 데서 그치지 않고 Spring 프레임워크와 JPA, ...