전체 글
[Spring] Redisson tryLock 동작 과정
[Redis] Redisson TryLock 동작과정 살펴보기어플리케이션을 개발하다보면 Redis 를 이용해 DistributedLock 을 구현하다보면 Redisson 라이브러리를 많이 사용하는데요.Redisson 은 pub/sub, lua script 를 이용한다와 같은 특징이 있습니다. 이번에는 좀 더 자세히 락을 획득하는 tryLock 메소드에 대해 어떻게 동작하는지그리고 위 특징들이 어떻게 동작하는지 한번 살펴보려 합니다. DistributedLock 이 어떤건지 잘 모르시겠다면 제가 작성한 아래 글을 참고해보시는것을 추천드립니다.풀필먼트 입고 서비스팀에서 분산락을 사용하는 방법 - Spring Redisson[Spring] Redisson 라이브러리를 이용한 Distribute Lock 동시성..
[Spring] @Async 사용 방법 및 TaskExecutor, ThreadPool
예제 및 테스트 코드는 github 에서 확인 가능합니다.[Spring] @Async 비동기 처리 및 스레드 풀 설정 안녕하세요 이번에는 스프링에서 비동기처리를 할 수 있는 @Async 에 대해 알아보겠습니다.해당 어노태이션을 통해 실행된 비동기 함수는 별도의 스레드로 실행이 되게 됩니다.그렇기에 비동기 함수를 호출한 main 스레드에서는 해당 함수를 기다릴 필요가 없게됩니다.그리고 비동기 함수를 실행하는 별도의 스레드는 스레드 풀을 통해 설정할 수 있습니다.@Asyncpublic void asyncMethod() { // ...} @Async 의 리턴 타입@Async 의 리턴 타입은 Void, Future, ListenableFuture, CompletableFuture 가 있습니다.(현재 Lis..
[Spring] Spring Event 를 이용한 비동기 이벤트 처리
예제 및 테스트 코드는 github 에서 확인 가능합니다.[Spring] Spring Event 를 이용한 비동기 이벤트 처리Spring Event 는 스프링에서 제공하는 이벤트 기반 프로그래밍을 지원하기 위한 기능입니다.이벤트는 이벤트를 발행하는 주체(publisher) 와 이벤트를 처리하는 주체(listener) 로 나누어 집니다. 이벤트를 이용하면 코드에 대한 의존성을 분리할 수 있고 특정 작업 이후에이벤트를 통해 추가적인 작업을 의존성 없이 진행할 수 있다는 장점이 있습니다. 예를 들면, 회원가입 이후 가입 완료에 대한 메일을 발송하는 경우 메일서버에 장애가 발생해도 회원가입은 정상적으로 이루어져야 합니다.이때, 회원가입과 메일발송에 대한 의존성을 분리하는데 이벤트를 사용할 수 있습니다. Appl..
[Network] Telnet 설치 및 사용법 (MAC 기준)
Telnet 간단 사용법안녕하세요 이번엔 Telnet 에 대해 간단한 사용법을 알아보려합니다.개발을 진행하다보면 내부망에서 외부 서비스와 연동을 한다던지 AWS 방화벽 및 보안그룹 설정 등을 통해 타 서비스와 연동이 필요한 경우가 간혹 존재하는데요. 이때, 로컬PC 혹은 서버에서 연동할 서비스와 연결이 가능한 상태인지 (통신이 되는 상태인지) 확인하는 방법으로Telnet 을 이용하면 간단하게 확인할 수 있습니다. Telnet 이란?Telnet 은 원격지의 컴퓨터에 접속할 때에 지원되는 인터넷 표준 프로토콜입니다.Telnet 은 다음과 같은 특징을 가지고 있습니다.TCP/IP 기반의 프로토콜23번 Port 를 기본포트로 사용원격 터미널 접속 서비스그럼 Telnet 을 이용해 원격지 서비스와 통신이 가능한 ..
[Spring] ContextCaching 으로 Test 성능 개선하기 (@MockBean, @SpyBean)
예제 및 테스트 코드는 github 에서 확인 가능합니다. Spring Test 에서 ApplicationContext 캐싱하기안녕하세요 Spring 환경에서 테스트시에 테스트 코드가 늘어남에 따라 테스트 수행시간이 오래걸리는 경우를 한번쯤 겪어보셨을텐데요.일반적으로는 테스트시 @SpringBootTest 를 이용하게 되면 스프링의 ApplicationContext 에 있는 모든 Bean 을 띄우게 됩니다. 이 과정에서의 소요시간이 상당합니다. 만약 테스트마다 ApplicationContext 를 새로 띄우게 되면 그만큼 시간이 더 오래 소요될텐데요. 스프링에서는 이런 문제가 없기 위해 Context Caching 이라는 개념이 존재합니다.테스트시 ApplicationContext 를 캐싱해서 재사용하는..