Yun Blog

기술 블로그

DataGrip 살펴 보기

DataGrip은 JetBrains에서 만든 데이터베이스 및 SQL 용 크로스 플랫폼 IDE입니다. 자세한 소개는 DataGrip에서 확인 가능합니다. 다양한 제품들이 있지만 저는 DataGrip 선호하며 애용하고 있는 제품입니다. 공식 자료에서도 충분히 다양한 기능들을 소개해 주고 있지만 개인적으로 DataGrip에 좋은 기능들을 정리해 보겠습니다.......

Spring Cloud Gateway Error Handling & Filter

Spring Cloud Gateway를 활용하여 여러 API를 서비싱 하는 경우 해당 API들은 이전에 포스팅한 Spring Guide - Exception 전략으로 통일된 Error Response를 갖게 할 수 있습니다. 하지만 게이트웨이 내부에서 발생한 예외에 대한 Error Response를 핸들링하지 않게 되는 경우는 통일된 메시지를 갖지 못......

Exposed 추가 정리

이전 포스팅 Exposed: 경량 ORM에서 소개한 적이 있습니다. 이번에는 실제 자주 사용하는 기능들 위주로 다루어 보겠습니다. Table Object 123456789101112131415object Writers : LongIdTable("writer") { val name = varchar("name", 150) val em......

Sleuth 분산 환경 트래킹 With Fuel

Spring Cloud Sleuth는 분산 환경에서 일련의 Request에 대한 상관관계를 표시하여 서비스 간 호출에 대한 추적을 지원해 주는 모듈입니다. Sleuth는 RestTemplate, Feign, WebClient와 같은 스프링 진형의 HTTP Client 모듈을 사용하는 경우 Sleuth 의존성을 추가하는 것으로도 설정이 자동적으로 동작하......

Spring Batch HTTP Page Item Reader

Spring Batch로 애플리케이션을 작성하는 경우 내부 데이터가 아니라 외부의 데이터를 가져와서 가공해야 하는 경우 데이터 파이프라인은 어떻게 구축해야 할지 결정해야 합니다. 예를 들어 데이터베이스에 직접 연결해서 필요한 데이터를 쿼리 하여 가져올 것인지, 아니면 csv 등 파일을 주고받는 방식, HTTP API를 통해서 가져오는 방식 등등 여러 ......

Elasticsearch APM 분산 트랜잭션 추적

분산 환경에서는 한 요청이 여러 서비스들의 호출로 이루어집니다. 이런 경우 여러 서비스 사이의 트랜잭션, 로그의 모니터링과 요청에 대한 순차적인 연결이 중요합니다. 분산 트랜잭션 추적 유저의 본인 정보와 본인이 주문한 목록을 조회하는 플로우 입니다. API Gateway -> User Service(유저 정보 조회) -> Order Ser......

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