SpringCloud-CircuitBreaker(resilience4j)

Resilience4j 란? Resilience4j는 자바 언어로 개발된 내결함성 라이브러리입니다. 이 라이브러리는 분산 시스템에서 장애를 처리하고 시스템의 내결함성을 향상시키는 데 사용됩니다. Resilience4j는 일련의 내결함성 패턴을 구현하고, 이러한 패턴을 사용하여 애플리케이션을 더 견고하고 신뢰할 수 있도록 지원합니다. 주요 기능 리스트 Circuit Breaker : Circuit Breaker 패턴은 서비스 호출을 모니터링하고, 호출 실패 또는 지정된...

DDD를 위한 헥사고날 아키텍처 이해하기 1

DDD를 위한 헥사고날 아키텍처 이해하기 1 도메인 주도 개발(DDD) 를 위한 헥사고날 아키텍처를 이해하기 위한 첫번째 기록입니다. 개발 아키텍처에는 모놀리식 아키텍처 와 마이크로 서비스 아키텍처 두가지를 가지고 목표와 비즈니스 요건에 따라 다르게 설계를 하고 있습니다. 모놀리식 아키텍처(Monolithic Architecture) 에서는 어플리케이션이 거대한 하나의 아키텍처를 가지고 구성 되어 있는 구조 이기 때문에...

MockWebServer를 활용한 webClient Test

MockWebServer 를 활용 하여 RestAPI 테스트 하기 RestAPI 를 통한 어플리케이션 개발시 목적지 API 의 기능이 다 완성 되지 않았거나 미계약 등등의 사유로 API 스팩만 전달 받고 개발을 진행 할 경우가 있었습니다. 이런 경우 MockWebServer를 활용 하여 선개발을 진행 할 수 있습니다. 간단한 테스트 클래스를 작성하여 테스트 하는 방법을 알아...

Spring new instance 에 @Autowired 하려면?

스프링 new instance 에 @Autowired 하는 방법 스프링 기반의 개발 하다 보면 new instance, static class 를 사용하게 되는 경우가 있습니다. new 로 생성 되는 인스턴스의 경우에는 스프링 IoC에서 관리 되는 Bean을 주입 받지 못 하고 @Autowired 로 주입된 bean 이 null 인 것을 확인 할 수 있습니다. @Autowired 어노테이션이...

Spring AMQP 를 활용한 메시징 서비스 구축(with rabbitMQ)

AMQP(Advanced Message Queuing Protocol) AMQP(Advanced Message Queuing Protocol, 어드밴스트 메시지 큐잉 프로토콜) 은 메시지 지향 미들웨어를 위한 개방형 표준 응용 계층 프로토콜입니다. 메시지 전달의 전달 보증, 신뢰성, 라우팅을 위한 기능 입니다. 무중단 서비스, 서비스의 scale-out, MSA 등을 위해서는 MQ를 사용 하는 시스템 구조가 유용합니다. MQ 에는 여러 가지 서비스가 있으나...

스프링 배치 여러 곳에 write 를 하려면? (CompositeItemWriter)

스프링 배치 여러 곳에 write 를 하려면? 대부분의 배치서비스는 테이블 데이터를 읽어서(reader) 값을 확인 & 계산(processor) 한뒤 insert & update(writer) 하는 구성으로 되어있습니다. 하지만 1:1 구성으로 하나의 테이블 데이터를 읽어서 배치 처리를 하는 경우는 간단 하지만 하나의 테이블을 읽어서 여러 테이블에 처리를 해야 하는 경우에는 어떻게 처리를 할 것인가에 대해서...

스프링 배치 테스트 코드 작성 방법~!

스프링 배치에서 테스트 코드를 작성 하려면 어떻게 해야 할까? 대부분의 배치 서비스들은 데이터를 읽어서(itemReader) 가공(itemProcess) 하여 처리(itemWriter) 하는 로직으로 구성 되어있습니다. 배치 서비스를 개발 하다 보면 실제로 배치를 수행 해보고 DB를 확인 하여 정상적인지 확인 하는 방법으로 검증 하였습니다. 로컬 테스트시에도 배치 대상 데이터를 임의로 생성 하고 배치를 돌려서 결과가...

스프링 보안은 어떻게2?? OAuth2 인증 서버 만들기

OAuth2 토큰 발급 이전 포스팅에서 SpringBoot OAuth2 를 이용하여 소셜 에서 인증을 받아서 나의 사이트에 로그인을 하는 기능을 살펴 보았습니다. 이번에는 third party 앱에서 나의 사이트에 접속하여 토큰을 발급 받고 인증을 할 수 있는 서버 기능을 추가 해보겠습니다. 환경 구성 기본 환경 Spring-boot 2.2.1.RELEASE JDK 1.8 이상 Maven 사용 가능한...

스프링 보안은 어떻게2?? OAuth2를 이용한 소셜 로그인

OAuth2 ?? OAuth2 란 Open Authorization , Open Authentication 를 뜻하는 것으로 Third party 에게 자원을 공유하거나 인증을 처리 해주는 표준 프로토콜 입니다. OAUth2에는 크게 토큰을 발급 할수 있는 서버 기능과 토큰을 이용한 인증 기능을 하는 기능으로 나뉘게 됩니다. 이번 시간에는 앞서 스프링 시큐리티에서 로그인 기능을 구현 하였기 때문에 해당...

스프링 보안은 어떻게?? 로그인 만들어보기 (Spring Security)

스프링 시큐리티?? 스프링 시큐리티는 어플리케이션의 보안을 위해 권한(Authorization)과 인증(Authentication) 에 대한 기능을 제공 합니다. 권한(Authorization)은 URL을 사용할 수 있는 권한을 말하며 인증(Authentication) 은 어플리케이션에 로그인 할 수 있는 기능을 말합니다. 허용되지 않은 페이지에 사용자가 접근 할 경우 스프링 시큐리티는 페이지 호출 전에 인증이 되어있는 지를 체크 하고 페이지에 접근 할...

스프링으로 예약 작업 만들기(Spring Scheduling)

이번에는 스프링을 이용해서 예약 작업을 만드는 방법에 대해서 정리 해보겠습니다. 예약 작업은 특정 시간이나 반복되는 시간에 업무를 처리하는 어플리케이션입니다. 스프링에서는 예약 작업 기능을 제공함으로서 예약 작업을 편리하게 만들 수 있습니다. 환경 구성 기본 환경 Spring-boot 2.2.1.RELEASE JDK 1.8 이상 Maven 사용 가능한 IDE H2 Database 예제 소스 : https://github.com/ParkHyeokJin/SpringRepo/tree/master/Spring-Scheduler 기능...

스프링 배치 어플리케이션 만들기(Spring Batch)

오늘은 매우 쉽고 간단한 스프링 배치 어플리케이션을 만들어 보겠습니다. 배치는 매우 중요한 서비스 입니다. 실시간으로 처리 하지 못하는 대량의 업무를 배치로 처리를 하고 있기 때문에 배치 개발을 알아 두는 것은 필수입니다. 환경 구성 기본 환경 Spring-boot 2.2.1.RELEASE JDK 1.8 이상 Maven 사용 가능한 IDE H2 Database 예제 소스 : https://github.com/ParkHyeokJin/SpringRepo/tree/master/JPA-Exam12-Batch...

스프링 RestAPI 로 웹 서비스 만들기

스프링 RestAPI를 통하여 회원 가입, 확인, 삭제 기능을 웹서비스를 만들어서 스프링 RestAPI 에 대한 사용 방법을 배워 보겠습니다. 스프링부트 웹서비스 만들기(RestAPI) 기본 환경 Spring-boot 2.2.1.RELEASE JDK 1.8 이상 Maven 사용 가능한 IDE 예제 소스 : https://github.com/ParkHyeokJin/SpringRepo/tree/master/JPA-Exam11-RestApi 기능 정의 회원 등록 기능(PUT) 회원 확인 기능(GET) 회원 삭제 기능(DELETE) pom.xml <dependencies> <dependency>...

스프링 + JPA 웹사이트 만들기(로그인편)

이번에는 앞서 공부 했던 JPA 와 스프링부트를 이용해서 웹사이트 로그인 부분을 만들어 보도록 하겠습니다. 매우 기본 적인 기능으로 로그인과 회원 가입 기능을 JPA 를 이용해서 사용 해보도록 하겠습니다. 스프링부트 + JPA 웹사이트 로그인 만들기 기본 환경 기본 환경은 앞선 포스팅 참조 : https://parkhyeokjin.github.io/jpa/2019/11/08/JPA-chap11.html 예제 소스 : https://github.com/ParkHyeokJin/SpringRepo/tree/master/JPA-Exam10 기능 정의 로그인...