Yun Blog

기술 블로그

HTTP Client 책임 분리하기

해당 코드는 Github 공개되어 있습니다. 일반적으로 특정 요구사항을 만족하기 위해서는 다른 서비스들과의 통신을 통하여 진행합니다. 가장 대표적인 통신은 HTTP으로 쉽고 간결하게 연결이 가능하여 많이 사용합니다. HTTP Client를 개발할 때 적절한 책임과 역할을 부여하는 방법에 대해서 이번 포스팅에서 다루려고 합니다. 보편적으로 이렇게 책......

MSA 환경에서 Error Response 서버로 전달하기

해당 코드는 Github 공개되어 있습니다. Spring Guide - Exception 전략 이전에 API Server에 Exception handling에 대해서 정리한 적 있습니다. 이번 포스팅에서는 여러 서버를 호출해서 예외가 발생하는 경우 Exception handling에 대한 포팅입니다. A API -> B API -> C ......

인텔리제이 플러그인 String Manipulation

String Manipulation Plugin에 사용법에 대한 포스팅입니다. Increment 기능 특정 값에 대해서 자동으로 증가시켜 중복되지 않는 값으로 설정할 수 있습니다. 위 이미지와 같은 FK 참조하는 값에 대한 SQL을 작성하는 경우 매우 효율 적입니다. 이전에 Sql을 통해서 테스트 코드를 쉽게 작성하자 포스팅도 참고하시면 좋을 거 ......

Resilience4j를 이용한 서킷 브레이커 기초

Resilience4j 이론적인 설명은 스프링으로 하는 마이크로 서비스 구축을 참조했습니다. 마이크로 서비스 사이의 통신이 이루어지는 대규모 시스템 환경에서 느리거나 응답하지 않은 다운스트림 서비스가 발생했을 때 그 피해를 최소화시키는 것이 서킷 브레이커의 가장 큰 핵심이라고 할 수 있습니다. 대표적으로 마이크로 서비스의 응답이 늦거나 전혀 응답하......

Sql을 통해서 테스트 코드를 쉽게 작성하자

데이터베이스와 의존성이 있는 테스트를 진행하는 경우 given 절에 해당하는 데이터를 set up 한 이후에 로직에 대한 검증을 진행하는 것이 일반적입니다. 이때 given 절에 대한 데이터 set up을 *.sql 파일 기반으로 작성하는 것입니다. @Sql 사용법 123456789101112131415// /src/test/resources/paym......

Spring Cloud Config & Cloud Bus 정리

카프카를 이용한 Config 변경사항 전파

해당 코드는 Github에서 확인할 수 있으며 Spring Config Server 정리 글과 이어지는 글입니다. Spring Config Server 정리를 통해서 Config Server에 대해서 알아봤습니다. 이번 포스팅에서는 Config Client를 알아보겠습니다. 각 서비스 애플리케이션은 해당 애플리케이션이 구동시 Config Serve......

Spring Cloud Config Server 정리

Config Server를 활용 설정파일 중앙화

해당 코드는 Github에서 확인할 수 있습니다. 스프링 Config Server는 각 애플리케이션에의 Config 설정을 중앙 서버에서 관리를 하는 서비스입니다. 중앙 저장소로 Github Repository뿐만 아니라 아래와 같은 저장소 환경을 제공해 주고 있습니다. Git(Github) JDBC REDIS AWS S3 등등… 본 포스팅은......

Elasticsearch APM 기본설정

Elasticsearch은 모니터링 시스템으로 APM을 지원해 주고 있습니다. Spring 기반 웹서버에서 편리하게 구성할 수 있게 Elastic APM Agent를 제공하고 있습니다. 해당 포스팅에서는 스프링 기반의 웹서버를 Elasticsearch, Kibana를 이용해서 APM 연결하는 내용입니다. APM의 자세한 내용은 다음 포스팅에서 진행해보......

Redis Getting Started

해당 코드는 Github 공개되어 있습니다. Redis에 대한 내용을 최대한 간략하게 설명한 포스팅입니다. Redis 설치 (Docker) 123456789version: '3.7'services: redis: image: redis:6.2 command: redis-server --requirepass 1234 --......

Isolation Repeatable Read을 보장 하기 위한 JPA JPQL의 동작 원리

JPA로 살펴보는 Isolation 동작 방식

JPQL 조회 방식 findById() 같은 경우는 영속성 컨텍스트를 먼저 찾고 영속성 컨텍스트에 해당 엔티티가 있으면 그 값을 바로 리턴합니다. 이를 1차 캐시라고 말합니다. 반면 JPQL은 영속성 컨텍스트를 먼저 조회하지 않고 데이터베이스에 Query 하여 결과를 가져옵니다. 그리고 아래와 같은 흐름으로 영속성 컨텍스트를 저장을 시도합니다. J......