본문 바로가기
반응형

SpringBoot34

SpringBoot3 CircuitBreaker Resilience4j 알아보기 CircuitBreaker Fault Tolerance(=장애 허용 시스템) 에서 사용되는 대표적인 패턴으로 서비스에서 타 서비스 호출 시 에러, 응답지연, 무응답, 일시적인 네트워크 문제 등을 요청이 무작위로 실패하는 경우에 Circuit를 오픈하여 장애가 다른 서비스로 전파되지 못하도록 방지하고 미리 정의해놓은 Fallback Response를 보내어 서비스 장애가 전파되지 않도록 하는 패턴이다. CircuitBreaker를 사용하는 목적은 애플리케이션의 안정성과 장애 저항력을 높이는 데 있다. 상태 정상 Client -> Service A -> Circuit Breaker (정상 상태: Bypass Traffic) -> Service B 장애상황 Client -> Service A Circuit B.. 2023. 10. 8.
Kafka 구성 및 SpringBoot 연동 SpringBoot에 kafka 연동을 적용해보면서 kafka에 대한 기본 개념과 springboot와 연동 방법을 알아본다 Kafka 개요 매우 높은 처리량과 낮은 지연시간(latency) 높은 확장성 고가용성: 클러스터 내 Replication 각 메세지들을 여러 개로 복제해서 카프카 클러스터 내 브로커들에 분산시키는 동작 ex. 토픽 생성시 --replication-factor 3 으로 지정하면 원본을 포함하여 총 3개의 replication 생성 Topic 자체를 복제하는 것이 아닌 Topic의 파티션을 복제를 하는 방식 내구성: acks 옵션, 메시지 디스크 저장 개발 편의성: Producer와 Consumer의 분리 다양한 기능과 3rd Party 를 통해 관리 편의성 kafka 구성 주키퍼(.. 2023. 3. 13.
SpringBoot3 - GraalVM Native Image Support ㅁ이번에 SpringBoot3 릴리즈 관련 내용을 보면서 Native Image Support, GraalVM, AOT 관련된 내용이 있어서 한번 찾아보고 간단히 테스트 해봤다. 간단히는 Java기반의 SpringBoot 어플리케이션 실행 시 Java에 대한 종속성 없이(빌드 결과물이 jar가 아님) 독립 실행 가능하도록 해주는 것으로 얘기할 수 있다. java도 go처럼 빌드하고 실행할 수 있다는 것을 처음 알게되었는데 몇 년전부터 spring-native라는 프로젝트로 진행이 되고 있었다가 이번에 정식 Support로 포함이 된 것이라 한다. GraalVM Native Image 컴파일된 Java 애플리케이션을 미리 처리(Ahead Of Time)하여 생성할 수 있는 독립 실행형 실행 파일입니다(JV.. 2023. 2. 1.
SpringBoot RabbitMQ 활용(Simple Queue, Pub/Sub) 비동기 통신에 오래전부터 많이 활용되는 RabbitMQ를 SpringBoot에서 활용하는 방법을 알아본다. 간단한 Simple Queue 방식, Pub/Sub 구현 방식 이렇게 2가지를 정리해보자. RabbitMQ RabbitMQ에 대해 간단히 정리하면 AMQP를 따르는 오픈소스 메세지 브로커이다. (AMQP: Advanced Message Queuing Protocol, Application과 Middleware Broker와의 메세지를 주고 받기 위한 프로토콜) RabbitMQ에서 주요한 개념은 아래와 같다. 1. Producer: 메시지 발행 주체 2. Consumer: 메시지 수신자 3. Queue: 메시지가 Consumer에 의해 소비되기 전까지 보관되는 장소 4. Exchange: Produc.. 2022. 12. 23.
SpringBoot Redis 활용 - Pub/Sub Redis는 DB,Cache 기능 외에 Pub/Sub기능을 제공한다. SpringBoot에서 Redis의 Pub/Sub을 어떻게 활용하는지 알아보고자 한다. Redis Pub/Sub의 특징을 간단히 다음과 같다 - 가볍고 빠르다 - 메시지 전송에 대한 보장을 못한다(Subscriber가 실시간으로 메시지를 받지 못하면 그 메시지는 버려진다) - 간단하고 가벼운 실시간 pub/sub 처리에 적합 SpringBoot에서 Redis Pub/Sub을 사용하기 위한 설정부터 알아보자 1. SpringBoot 설정 build.gradle에 redis 의존성을 추가한다. implementation 'org.springframework.boot:spring-boot-starter-data-redis' applicati.. 2022. 12. 16.
SpringBoot Redis 활용 - RedisTemplate, RedisRepository SpringBoot에서 Redis에 접근하기 위한 2가지 방법을 제공하는데 RedisTemplate, RedisRepoitory 이다. 이 2가지를 설정하고 테스트를 실행해보면서 SpringBoot에서 Redis 활용방법을 알아본다. 1. SpringBoot Redis 설정 먼저 Redis를 사용하기 위해 의존성 및 빈 설정을 진행한다. build.gradle에 redis 의존성을 추가한다. implementation 'org.springframework.boot:spring-boot-starter-data-redis' application.yml에 redis 접속정보를 설정한다. spring: redis: host: 127.0.0.1 port: 6379 # password: 'xxxx' # 비밀번호 있.. 2022. 12. 16.
SpringBoot Redis 세션 사용 SpringBootd에서 간단한 설정만으로 메모리 기반의 세션관리에서 Redis 기반의 세션관리로 적용이 가능하다. 세션 Storage로 Redis를 사용하면 토큰을 사용하지 않는 환경에서도 세션 공유에 대한 부담없이 유연하게 어플리케이션의 Scale-Out이 가능하다. Redis 구성 Redis를 자체를 테스트하는 것이 아님으로 간단하게 Docker로 구성한다. 아래 명령으로 Redis 컨테이너를 실행한다. docker run --name redis -p 6379:6379 -d redis 테스트용 Redis 준비는 이걸로 끝이다. SpringBoot 설정 의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-data-redis' imp.. 2022. 9. 6.
SpringBoot SpringDoc(OpenAPI)을 이용한 Swagger 그룹화, 전역인증&Parameter 설정 SpringDoc OpenAPI를 사용하여 Swagger에 표시되는 API들을 그룹화 시키는 방법과 JWT 인증을 전역으로 설정하는 방법을 알아본다. API 그룹화 API가 많아질수록 Swagger 표시되는 API가 많아져서 가독성이나 관리가 힘들어지는 부분이 있다. 이럴 경우 API들을 package나 url path를 기준으로 그룹화 시킬 수 있다. 먼저 그룹화하기 전에는 swagger에서는 일반적으로 아래와 같이 표현된다 그리고 그룹화를 group1, group2로 나눠서 적용하면 아래와 같이 표현된다. 우측 상단에 그룹을 선택할 수 있는 SelectBox가 뜨고 그룹에 따라 필터링해서 API를 조회가 가능해진다 아래는 그룹 적용을 위한 Bean 설정이다. 그룹화를 정의할 개수에 따라 Grouped.. 2022. 8. 3.
반응형