본문 바로가기

전체 글375

Docker Compose 구성요소 Docker Compose는 여러 개의 Docker 컨테이너를 정의하고 함께 실행할 수 있도록 구성하는 도구입니다. Docker Compose 구성 파일은 주로 docker-compose.yml 형식으로 작성되며, 주요 구성 요소는 아래와 같습니다.1. versionCompose 파일 형식의 버전을 지정합니다.Docker Compose는 다양한 버전이 있으며, 사용하는 Docker 버전에 따라 호환되는 버전을 선택해야 합니다.최신 버전인 3.9은 다양한 기능을 지원하며, 대부분의 최신 Docker 버전과 호환됩니다.예시:version: '3.9'사용 이유: 파일 구문과 동작 방식의 호환성을 유지합니다. 최신 버전을 사용하면 새로운 기능을 활용할 수 있습니다.2. services실행하려는 컨테이너를 정의하.. 2024. 12. 15.
폴백(Fallback) 폴백(Fallback)은 Resilience4j에서 복원력을 제공하기 위한 핵심 메커니즘 중 하나입니다. 폴백은 주요 작업(예: API 호출, 데이터베이스 쿼리 등)이 실패하거나 예외가 발생했을 때 대체 동작을 정의하여 서비스의 가용성을 유지하는 데 사용됩니다.1. 폴백의 주요 특징대체 동작 제공: 특정 작업이 실패했을 때 예외를 던지지 않고 미리 정의된 대체 로직을 실행합니다.최종 방어선: 회로차단기, 재시도, 벌크헤드 등 모든 복원력 기능을 통과했음에도 실패했을 때 작동합니다.사용자 정의 로직: 기본값 반환, 캐시된 데이터 제공, 알림 전송 등 사용자 정의 로직을 구현할 수 있습니다.2. 폴백의 동작 방식서비스 호출:특정 메서드 호출 시 장애가 발생하거나 예외가 발생합니다.Resilience4j 동작.. 2024. 12. 13.
Resilience4j Resilience4j란? Resilience4j는 Spring Boot 애플리케이션에서 회복력 있는 마이크로서비스를 구축하기 위해 설계된 경량 라이브러리입니다. Circuit Breaker, Rate Limiter, Retry, Bulkhead, Time Limiter와 같은 주요 패턴을 제공합니다. 각 패턴은 별도로 구현되며, 원하는 모듈만 선택해서 사용할 수 있는 장점이 있습니다. 주요 기능Circuit Breaker (회로 차단기)서비스 호출 실패가 반복되면 회로를 열어 추가 실패를 방지하고, 일정 시간이 지나면 재시도를 허용합니다.Rate Limiter (속도 제한기)호출 횟수를 제한하여 서비스 과부하를 방지합니다.Retry (재시도)실패한 요청을 재시도하여 잠재적 네트워크 문제를 해결합니다.B.. 2024. 12. 13.
Java의 Executor 인터페이스 (스레드풀) Java의 Executor 인터페이스Executor는 Java의 멀티스레드 프로그래밍을 단순화하기 위해 설계된 인터페이스입니다. 이 인터페이스는 스레드 생성을 개발자가 직접 처리하지 않고, 작업 제출 및 실행을 처리할 수 있도록 추상화된 방법을 제공합니다.특징작업 제출과 실행 전략 분리: Executor를 사용하면 작업을 스레드 풀이나 특정 실행 정책에 맞게 실행할 수 있습니다.스레드 관리 최적화: 스레드 풀을 사용하면 스레드의 재사용과 리소스 관리를 효율적으로 처리할 수 있습니다.비동기 작업 처리: 작업 실행이 비동기로 처리될 수 있습니다.Executor 인터페이스 정의@FunctionalInterfacepublic interface Executor { void execute(Runnable co.. 2024. 12. 13.
2024.12.11(수) { PostgreSQL, 로우데이터&비정형데이터, Spring Cloud Bus와 Spring Cloud Vault } PostgreSQL은 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)입니다. 고급 SQL 쿼리 기능을 제공하며, ACID(원자성, 일관성, 격리성, 지속성)를 보장하는 트랜잭션 처리 시스템을 갖추고 있어 신뢰성 높은 데이터베이스 관리 시스템으로 널리 사용됩니다.주요 특징오픈 소스:PostgreSQL은 자유롭게 사용할 수 있는 오픈 소스 소프트웨어입니다. 다양한 운영 체제에서 사용 가능하며, GPL 라이선스로 제공됩니다.고급 SQL 지원:표준 SQL을 따르며, 트랜잭션, JOIN, 서브쿼리, 인덱스, 뷰, 트리거 등을 지원합니다. 또한, 복잡한 쿼리, 집합 연산자 및 사용자 정의 함수 등을 사용하여 고급 데이터 처리 및 분석을 할 수 있습니다.확장성:PostgreSQL은 매우 확장성이 뛰어나며, 사.. 2024. 12. 11.
allow-bean-definition-overriding allow-bean-definition-overriding는 Spring Framework에서 사용되는 설정으로, 빈 정의 덮어쓰기를 허용할지 여부를 설정합니다. 이 설정은 주로 Spring 애플리케이션의 application.properties 또는 application.yml 파일에서 구성되며, 여러 @Bean 정의가 있을 때 하나의 빈 정의가 다른 빈 정의를 덮어쓰는 것을 허용할지 여부를 제어합니다.1. 기본 동작 (기본값)기본적으로, Spring은 빈 정의 덮어쓰기를 허용하지 않습니다. 즉, 같은 이름을 가진 두 개 이상의 빈이 정의되면 애플리케이션이 시작될 때 예외가 발생합니다. 이는 빈 이름의 충돌을 방지하고 의도치 않은 동작을 막기 위한 안전 장치입니다.2. allow-bean-definit.. 2024. 12. 11.