JIB는 Java 애플리케이션을 컨테이너 이미지로 빌드하고 배포할 수 있도록 도와주는 도구입니다. JIB는 Google에서 개발한 오픈 소스 Gradle 및 Maven 플러그인으로, Java 개발자들이 컨테이너 이미지를 만들 때 Dockerfile이나 도커 명령어를 직접 작성하지 않고도 쉽게 이미지를 생성할 수 있도록 도와줍니다.JIB의 주요 특징Docker 환경이 필요하지 않음:JIB는 도커 데몬이 필요하지 않기 때문에, Docker가 설치되지 않은 환경에서도 사용할 수 있습니다. 이것은 CI/CD 파이프라인을 구성할 때 유용하며, 복잡한 도커 환경 설정 없이도 컨테이너 이미지를 생성할 수 있다는 장점이 있습니다.효율적인 이미지 빌드:JIB는 레이어 캐싱(layer caching)을 사용하여 빌드 시간..
멀티 모듈(Multi-Module) 프로젝트는 하나의 큰 프로젝트를 여러 개의 작은 모듈로 나누어 구성하는 방식입니다. 각각의 모듈은 독립적으로 빌드, 테스트, 배포될 수 있으며, 다른 모듈과 협력하여 전체 애플리케이션을 구성합니다. 주로 Gradle, Maven 같은 빌드 도구를 사용하여 멀티 모듈 프로젝트를 관리합니다.멀티 모듈 프로젝트의 장점모듈화와 재사용성: 코드를 기능별로 분리하여, 필요한 모듈만 재사용하거나 독립적으로 개발할 수 있습니다. 이를 통해 유지보수가 용이해집니다.독립적 개발 및 배포: 각 모듈은 독립적으로 개발, 테스트, 빌드, 배포가 가능하여 CI/CD 파이프라인을 효율적으로 구축할 수 있습니다.효율적인 의존성 관리: 공통된 기능이나 라이브러리를 별도의 모듈로 분리하여 여러 모듈에..
@RestControllerAdvice를 이용하여 REST API의 모든 응답을 변환해주는 작업을 하려고 합니다. ResponseBodyAdvice 인터페이스를 구현하여 beforeBodyWrite 를 오버라이드하면 됩니다. 이것으로 API의 메서드 결과를 변환해서 새로운 결과를 응답하기 때문에 응답처리를 중앙화할 수 있다는 장점이 있습니다. 하지만 API의 메서드 반환값이 String일 경우에는 변환된 결과를 String class로 형변환을 할 수 없다는 예외를 발생시키기도 합니다. 문제의 코드는 AbstractMessageConverterMethodProcessor.writeWithMessageConverters 의 아래 표시된 영역이며, 형변환할 수 없다는 예외를 발생시킵니다. String이 ..
서킷 브레이커(Circuit Breaker) 패턴은 소프트웨어 시스템에서 오류를 격리하고 실패를 방지하기 위해 사용되는 디자인 패턴입니다. 주로 마이크로서비스 아키텍처에서 많이 사용되며, 외부 서비스 호출 시 발생할 수 있는 오류나 성능 저하를 관리하는 데 유용합니다.서킷 브레이커 패턴의 개념과 원리서킷 브레이커 패턴은 전기 회로의 서킷 브레이커와 유사한 방식으로 동작합니다. 전기 회로에서 과부하나 단락이 발생하면 서킷 브레이커가 회로를 열어 전류를 차단하듯이, 소프트웨어 시스템에서는 외부 서비스 호출에서 오류가 반복적으로 발생하면 서킷 브레이커가 호출을 차단하여 전체 시스템의 실패를 방지합니다.서킷 브레이커는 주로 세 가지 상태를 가집니다:Closed (닫힘): 서비스 호출이 정상적으로 이루어지는 상태..