기본 콘텐츠로 건너뛰기

라벨이 Maven인 게시물 표시

CI/CD에서 테스트 자동화 구현하기: Jenkins · Maven · JUnit 실전 가이드

CI/CD에서 테스트 자동화 구현하기 (Jenkins · Maven · JUnit 실전 가이드) 현대 소프트웨어 개발에서 CI/CD(지속적 통합/지속적 배포) 와 테스트 자동화 는 더 이상 선택이 아니라 필수입니다. 수동 테스트만으로는 서비스 출시 속도와 품질을 동시에 만족시키기 어렵기 때문에, 많은 팀이 Jenkins, GitLab CI, GitHub Actions 와 같은 CI/CD 도구에 자동화된 테스트 단계를 붙여서 운영하고 있습니다. 이 글에서는 CI/CD 파이프라인에 테스트 자동화를 어떻게 녹여 넣을 것인지 , 어떤 순서로 도입해야 하는지, 그리고 실무에서 바로 사용할 수 있는 Jenkins 파이프라인 예시 까지 단계별로 정리해 봅니다. 1. 왜 CI/CD에서 테스트 자동화가 중요한가? 전통적인 수동 테스트 방식은 다음과 같은 문제를 가지고 있습니다. 기능 추가/수정이 있을 때마다 사람이 직접 테스트해야 하므로 속도가 느림 테스트 누락, 실수 등으로 인해 버그가 프로덕션까지 흘러갈 위험 이 큼 릴리스 직전 테스트가 몰리면서 야근과 병목 이 발생 반면 CI/CD 환경에서 테스트를 자동화하면 다음과 같은 장점을 얻을 수 있습니다. 코드가 커밋되자마자 자동으로 빌드와 테스트가 실행 되어 빠른 피드백 제공 사람이 실수할 여지가 줄어들어 품질이 일관되게 유지 테스트를 신뢰할 수 있기 때문에 배포 주기를 짧게 유지 가능 장기적으로는 야근과 장애 대응 비용 감소 2. 테스트 자동화 도입 시 겪는 대표적인 어려움 많은 팀이 “테스트 자동화가 좋다는 건 알겠는데, 막상 하려면...

Java JCodec으로 동영상 썸네일(Thumbnail) 추출하기

Java JCodec으로 동영상 썸네일(Thumbnail) 추출하기 AI 생성 이미지: Java JCodec으로 동영상 썸네일(Thumbnail) 추출하기 순수 Java로 작동하는 경량 코덱 라이브러리 JCodec을 이용해 .mp4, .mov 같은 동영상 파일에서 특정 프레임을 이미지로 뽑아내는 실무용 코드를 정리합니다. Java JCodec으로 동영상 썸네일(Thumbnail) 추출하기는 파일 목록 서비스나 업로드 파이프라인에서 썸네일 생성 자동화에 특히 유용합니다. 아래 예제는 서버 부하를 줄이도록 조건부로 동작하며, 실제 운영 환경에 바로 적용할 수 있게 구성했습니다. 1. 💡 JCodec 소개 및 Maven 설정 썸네일 생성은 JCodec의 코덱 처리 모듈과 AWT 기반 이미지 처리를 제공하는 javase 모듈을 조합해 구현합니다. 안정적인 의존성 버전을 사용하면 호환성 문제를 줄일 수 있습니다. Maven pom.xml 의존성 <dependencies> <!-- JCodec Core Library (코덱 처리) --> <dependency> <groupId>org.jcodec</groupId> <artifactId>jcodec</artifactId> <version>0.2.5</version> <!-- 최신 안정화 버전 사용 권장 --> </dependency> <!-- JCodec JavaSE (AWT 유틸리티 및 이미지 처리) --> <dependency> <groupId>org.jcodec</groupId> <artifactI...

Logback & Log4j2 충돌: SLF4J 바인딩 오류 해결 가이드

Logback & Log4j2 충돌: SLF4J 바인딩 오류 해결 가이드 AI 생성 이미지: Logback & Log4j2 충돌: SLF4J 바인딩 오류 해결 가이드 Java 애플리케이션에서 로깅을 안전하게 구성하려면 SLF4J 추상화와 실제 구현체 사이의 관계를 정확히 이해해야 합니다. Logback과 Log4j2를 동시에 클래스패스에 올리면 예기치 않은 바인딩 충돌이 발생할 수 있습니다. 이 가이드는 제공된 예제 코드를 바탕으로 원인을 진단하고, 실무에서 바로 적용 가능한 해결 방법을 단계별로 안내합니다. Logback & Log4j2 충돌: SLF4J 바인딩 오류 해결 가이드의 핵심은 '하나의 로깅 구현체 선택'입니다. 1. 💥 문제 진단: 이중 바인딩 충돌 먼저 제공된 pom.xml 의존성을 확인하면 문제의 실마리가 명확해집니다. 제공된 Maven 의존성 (pom.xml) <!-- Log4j2 바인딩: SLF4J를 Log4j2로 연결 --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>2.10.0</version> </dependency> <!-- Logback (자체적으로 SLF4J 구현체를 포함) --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3...

Java Gson으로 JSON을 VO 객체로 변환하기 (역직렬화)

Java Gson으로 JSON을 VO 객체로 변환하기 (역직렬화) AI 생성 이미지: Java Gson으로 JSON을 VO 객체로 변환하기 (역직렬화) Java 프로젝트에서 JSON을 객체로 바꾸는 일은 반복적으로 등장합니다. Java Gson으로 JSON을 VO 객체로 변환하기 (역직렬화)는 특히 API 응답, 로그 파싱, 데이터 교환 등에서 자주 필요하며, Google의 Gson 라이브러리는 그 과정에 실무적인 해법을 제공합니다. 1. 🔑 Gson Maven 의존성 설정 프로젝트의 pom.xml 에 Gson 의존성을 추가하면 간단히 시작할 수 있습니다. Java Gson으로 JSON을 VO 객체로 변환하기 (역직렬화) 작업을 하려면 안정된 최신 버전을 사용하는 것을 권장합니다. pom.xml 의존성 <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.10.1</version> <!-- 최신 안정화 버전으로 업데이트 --> </dependency> 2. 📝 데이터 매핑을 위한 VO (Value Object) 클래스 JSON 구조와 1:1로 대응하는 Java 클래스를 설계해야 합니다. 필드 이름이 JSON 키와 일치해야 기본 매핑이 자연스럽게 동작하고, 필요한 경우 어노테이션으로 세밀하게 제어할 수 있습니다. `BaseVO.java` 클래스 import java.util.ArrayList; public class BaseVO { // JSON 키와 이름...

Java 텔레그램 봇으로 알림 메시지 발송하기 (pengrad API)

📱 [자동화 필수] Java 텔레그램 봇으로 알림 메시지 발송하기 (pengrad API) 📱 [자동화 필수] Java 텔레그램 봇으로 알림 메시지 발송하기 (pengrad API) 시스템 모니터링, 알림, 또는 자동화된 정보를 사용자에게 즉시 전달할 때 **텔레그램 봇**은 매우 효과적입니다. Java 프로젝트에서 **`pengrad/java-telegram-bot-api`** 라이브러리를 사용하여 텔레그램 메시지를 발송하는 방법을 단계별로 안내합니다. 1. 🔑 준비 사항: Bot Token 및 Chat ID 획득 메시지 발송을 위해서는 두 가지 핵심 정보가 필요합니다. Bot Token (`botToken`): @BotFather 를 통해 봇을 생성하고 발급받는 고유 식별 키입니다. Chat ID (`telegramNo`): 메시지를 수신할 채팅방(개인, 그룹, 채널)의 고유 ID입니다. 보통 @userinfobot 등을 통해 얻을 수 있습니다. 2. 📦 Maven 의존성 설정 프로젝트의 pom.xml 파일에 `pengrad` 라이브러리를 추가합니다. pom.xml 의존성 <dependency> <groupId>com.github.pengrad</groupId> <artifactId>java-telegram-bot-api</artifactId> <version>6.8.0</version> <!-- 최신 안정화 버전 사용을 권장합니다. (예: 6.8.0) --> </dependency> ...

BitMEX API 연동을 위한 Maven pom.xml 설정 예제 (XChange + Lombok + SLF4J)

BitMEX API 연동을 위한 Maven pom.xml 설정 예제 (XChange + Lombok + SLF4J) 자바로 암호화폐 거래소(BitMEX) API 에 연동하려면 가장 먼저 Maven 프로젝트 설정(pom.xml) 이 제대로 잡혀 있어야 합니다. 이 글에서는 org.knowm.xchange 라이브러리를 활용해 BitMEX에 연동하는 실전 pom.xml 예제 를 분석하고, 각 의존성이 어떤 역할을 하는지 자세히 설명합니다. 📚 목차 프로젝트 개요 및 pom.xml 전체 구조 빌드 설정: maven-compiler-plugin과 JDK 버전 XChange BitMEX 연동 관련 의존성 기타 공통 유틸/로그 관련 라이브러리 전체 pom.xml 코드 정리 1. 프로젝트 개요 및 pom.xml 전체 구조 이 예제는 BitMEX 거래소 시세/주문 연동 을 목표로 한 bitmexXchange 라는 Maven 프로젝트의 pom.xml입니다. groupId : bitmexXchange artifactId : bitmexXchange version : 0.0.1-SNAPSHOT (개발 중인 초기 버전) build : 소스 디렉터리와 컴파일러 플러그인 설정 dependencies : XChange(BitMEX), Lombok, SLF4J, commons-lang3 등 즉, 이 pom.xml 하나로 BitMEX API 연동 + 로그 출력 + 유틸리티 사용 을 위한 기본적인 개발 환경이 갖춰지도록 설계되어 있습니다. 2. 빌드 설정...