전체 글

책/Effective Kotlin

[이펙티브 코틀린] 아이템2: 변수의 스코프를 최소화하라

본문은 Effective Kotlin을 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 1. 스코프를 최소화하기 위한 규칙 상태를 정의할 땐 변수와 프로퍼티의 스코프를 최소화 하는 것이 좋고, 이를 위해선 다음과 같은 규칙들을 활용할 수 있다. 1) 프로퍼티보다는 지역 변수를 사용하라 2) 최대한 좁은 스코프를 갖게 변수를 사용하라 // 1. Bad var user: User // for문 외부에서도 사용 가능함 for (i in users.indicies) { user = users[i] print("User at $i is $user") } // 2. Better for (i in users.indices) { val user = u..

책/Effective Kotlin

[이펙티브 코틀린] 아이템1: 가변성을 제한하라

본문은 Effective Kotlin을 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 1. mutable의 단점 + immutable의 장점 먼저 살펴보기에 앞서 mutable의 단점과 immutable의 장점을 살펴보자. mutable의 단점을 뒤집으면 immutable의 장점이 된다. mutable 객체의 문제 상태들 간의 관계를 이해하고, 상태의 변경을 추적해야 하므로 프로그램을 이해하고 디버그하기 힘들어진다. 시점에 따라 값이 달라질 수 있으므로 코드의 실행을 추론하기 어렵다 멀티스레드 프로그램일 때 적절한 동기화가 필요하다 상태 변경이 많을수록 더 많은 조합을 테스트해야 하므로 테스트하기 어렵다 컬렉션 내의 객체가 가변 객체로..

Spring Batch

[Spring Batch] 스프링 배치4 - JobRepository와 메타 테이블

1. JobRepository란? 스프링 배치에서는 JobRepository 인터페이스 그 자체를 의미하거나, JobRepository 인터페이스를 구현해 데이터를 저장하는 데 사용되는 데이터 저장소를 의미한다. 개발자가 직접 JobRepository 인터페이스를 직접 다룰 일은 거의 없으므로 본문은 후자를 지칭한다. 이러한 JobRepository는 잡이나 스텝 등의 상태를 저장하는 데 사용되며, 실행 추세와 횟수 등을 담고 있으므로 모니터링 영역 등에서 유용하게 사용된다. 2. JobRepository 내 메타 테이블 살펴보기 RDB는 스프링 배치에서 기본적으로 사용되는 JobRepository이며, RDB를 사용할 경우 스프링 배치가 제공하는 여러 테이블을 이용해 배치 메타 데이터를 저장한다. 스키..

트러블슈팅

[트러블슈팅] org.springframework.core.io.buffer.DataBufferLimitException: Exceeded limit on max bytes to buffer : 262144

Spring Webflux 환경에서 다음과 같은 에러가 발생했다. org.springframework.core.io.buffer.DataBufferLimitException: Exceeded limit on max bytes to buffer : 262144 at org.springframework.core.io.buffer.LimitedDataBufferList.raiseLimitException(LimitedDataBufferList.java:98) Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 우선 에러의 원인은 WebClient에서 요청을 날릴 때 보내는 request body의 크기가 제한 크기(default: 2..

Spring/Spring

[Spring] feign + hystrix 사용 시 특정 예외 무시하도록 처리하기

1. 개요 서비스 중에 일부분에서 외부 API에 요청을 날리고, boolean 타입의 응답을 받는 로직이 포함되어 있었다. 만약 true이면 특별 유저로 간주하고 프론트에서 다른 화면을 보여주는 구성이었다. 간헐적으로 404 에러가 내려오는 케이스가 있었는데, 이 경우엔 fallback 메서드를 통해 false로 처리해두었다. 트래픽이 몰리자 클라이언트에서 전달받은 유저ID에 대해 유저 데이터가 없는 케이스가 늘어났고, 서킷 브레이커가 열리게 되었다. 때문에 기본 응답으로 false가 내려가면서 특별 유저라 하더라도 일반 유저가 보는 화면을 보게 되었다. hystrix는 resilience4j와 다르게 특정 예외를 골라서 무시할 수 있는 옵션이 없어서 상당히 애를 먹었다. resilience4j는 다음과..

코택
TaxFree