Jenkins

Jenkins (4) - Pipeline으로 Spring Boot 테스트 자동화하기

1. 개요 Freestyle Job은 빠르게 시작할 수 있지만, 화면에서 바꾼 빌드 절차는 애플리케이션 코드와 함께 리뷰하거나 버전을 비교하기 어렵다. Jenkins Pipeline은 빌드·테스트·배포 순서를 코드로 작성하고 Jenkinsfile 로 저장소에 커밋하는…

·6분
Jenkins

Jenkins (5) - Docker 이미지 빌드와 로컬 배포하기

1. 개요 앞선 글에서는 Jenkins Pipeline으로 Spring Boot 프로젝트를 테스트했다. 이번에는 테스트를 통과한 JAR를 Docker 이미지로 만들고, 기존 컨테이너를 새 이미지로 교체해 로컬에서 실행한다. 이 글의 Jenkins는 Docker Desk…

·8분
Backend

ddl-auto: update에서 Flyway로 옮기기

1. 개요 Spring Boot 프로젝트를 처음 만들면 JPA의 ddl auto: update 로 테이블을 만드는 경우가 많다. 엔티티만 고치면 개발용 DB 구조가 따라오므로 시작하기 편하다. 하지만 프로젝트가 커지고 개발·테스트·운영 DB가 나뉘면, 같은 코드라도 D…

·14분
GitHub Actions

GitHub Actions (5) - SSH로 EC2에 Spring Boot 배포하기

1. 개요 앞선 글에서는 테스트를 통과한 Spring Boot 애플리케이션을 Docker 이미지로 만들어 Docker Hub에 푸시했다. 이미지를 저장소에 올리는 것만으로는 EC2에서 실행 중인 컨테이너가 바뀌지 않는다. 이 글에서는 main 브랜치에 푸시하면 테스트,…

·9분
Backend

MockMvcTester로 좌석 조회 API 통합 테스트하기

1. 개요 GET /schedules/{scheduleId}/seats 는 컨트롤러만 정상이라고 해서 충분하지 않다. 요청 경로가 컨트롤러에 연결되고, 서비스가 회차와 좌석을 조회하고, JPA가 DB에서 데이터를 읽고, 마지막으로 JSON 응답까지 만들어져야 한다. 이…

·9분
GitHub Actions

GitHub Actions (2) - Spring Boot 단위 테스트 자동화하기

1. 개요 첫 워크플로가 실행되는 것을 확인했다면, 실제 Spring Boot 프로젝트의 테스트를 연결할 차례다. 이 글에서는 서비스 클래스의 JUnit 단위 테스트를 예시로, main 브랜치에 푸시하거나 풀 리퀘스트를 열 때마다 Gradle의 test 태스크를 실행한…

·4분
GitHub Actions

GitHub Actions (1) - Workflow와 Spring Boot 첫 CI 만들기

1. 개요 코드를 원격 저장소에 올린 뒤 매번 직접 빌드와 테스트를 실행하면 확인을 빼먹기 쉽다. GitHub Actions는 push , 풀 리퀘스트 같은 이벤트가 발생할 때 저장소의 작업을 자동으로 실행하는 도구다. 이 글에서는 GitHub Actions의 구성 요…

·5분
Backend

도메인 예외를 ProblemDetail HTTP 응답으로 변환하기

1. 개요 공연 예매 API의 GET /schedules/{scheduleId}/seats 는 회차의 좌석 목록을 돌려준다. 그런데 없는 회차 ID로 요청하면 어떻게 응답해야 할까? 처음 구현에서는 서비스가 IllegalArgumentException 을 던졌고, 이를…

·16분
토비의 스프링부트 - 이해와 원리

토비의 스프링부트 정리 (2) - 독립 실행형 스프링 애플리케이션 만들기

1. 개요 앞 글에서는 내장 Tomcat과 서블릿을 직접 만들고 연결했다. 이 방식은 웹 요청이 처리되는 원리를 이해하기에 좋지만, 애플리케이션이 커질수록 객체를 만들고 연결하고 서버를 시작하는 코드가 main() 에 계속 쌓인다. 이 글에서는 이 작업을 스프링 컨테이…

·8분
Kafka

Spring Kafka (1) - Spring Boot로 Kafka Producer와 Consumer 이해하기

Kafka를 애플리케이션에 연결하려면 Producer와 Consumer의 클라이언트 설정, 직렬화 방식, 리스너 실행 등을 준비해야 한다. Spring Kafka는 이 과정을 Spring의 빈과 애노테이션으로 구성할 수 있게 해 주는 프로젝트다. 이번 글에서는 Spri…

·11분