본문 바로가기

Spring Boot6

[MSA] spring boot에서 resilience4j 사용해보자 - RateLimiter, BulkHead, TimeLimiter 편 안녕하세요. 이번 포스팅에서는 spring boot 환경에서 resilience4j의 ratelimiter와 bulkhead, 그리고 timelimiter 패턴에 대해서 실습해보는 시간을 가져보도록 하겠습니다. RateLimiter rateLimiter는 단위 시간동안 얼마만큼의 실행을 허용할 것인지 제한할 수 있는 메커니즘을 말합니다. resiliece4j에서는 단순하게 요청의 숫자를 이용하여 제한(limit)할 수 있으며 또는 제한에 걸린 요청은 queue를 생성하여 이후에 처리하거나 하는 방법도 제공합니다. 위 이미지는 공식 docs에서 가져온 이미지입니다. rateLimiter가 어떻게 동작하는지 매커니즘을 잘 나타내고 있습니다. System.nanoTime()을 JVM 시작과 함께 일정한 단위 .. 2021. 12. 15.
[MSA] spring boot에서 resilience4j 사용해보자 - Retry, CircuitBreaker 편 안녕하세요. 이번 포스팅에서는 resilience4j를 실제로 spring boot 환경에서 사용해보는 방법에 대해서 알아보는 시간을 가져보도록 하겠습니다. 환경 먼저 오늘 실습에 사용된 환경은 아래와 같습니다. Java 11 Spring Boot 2.5.5 resilience4j 1.7.1 Spring Boot 기본적으로 resilience4j는 Spring Boot 전용이 아닙니다. 다양한 프레임워크에서 돌아갈 수 있도록 모듈이 준비되어있는데요. 그래서 Spring Boot에서 지원하는 properties 또는 Bean을 활용한 설정을 하기위해서는 Spring Boot 전용 모듈을 함께 추가해 주어야합니다. 추가해주어야하는 모듈은 아래와 같습니다. dependencies { compile "io.gi.. 2021. 12. 12.
[flyway] flyway를 통해 DDL 형상관리를 하자 - Spring Boot (Java API) 편 안녕하세요. 오늘은 flyway를 이용하여 로컬 환경에서 DDL의 형상관리를 하는 방법을 알아보도록 하겠습니다. flyway flyway는 데이터베이스의 형상관리를 목적으로 하는 툴입니다. 데이터베이스의 형상 관리란 어떤 것일까요? git을 통하여 우리가 코드를 관리하는 것의 데이터베이스 버전으로 볼 수 있습니다. git에서는 코드를 파일별로 로깅을 통해서 변화의 이력을 추적합니다. flyway는 데이터베이스의 DDL의 이력을 쌓아서 DDL이 어떻게 변화되었는지 관리하는 툴로 사용할 수 있습니다. 위 이미지는 flyway 공식 홈페이지에 나와있는 이미지로 DDL 형상관리의 이해를 위해서 가져왔습니다. 위 이미지를 보시면 Axel과 Christian이 별개로 DDL을 만들고 있습니다. 그리고 서버로 배포할.. 2021. 9. 17.
[kotlin + Spring] 코틀린, Spring Boot 환경에서 JPA 사용하기, plugin과 함께 안녕하세요. 오늘은 코틀린 그리고 Spring Boot 환경에서 JPA를 사용하는 방법에 대해서 알아보도록 하겠습니다. 환경 JDK 버전 : 1.8.0.292 kotlin 버전 : 1.4.32 spring boot 버전 : 2.4.5 gradle 버전 : 6.8.3 intellij 버전 : 2021.1.1 프로젝트 시작하기 처음에 프로젝트를 시작하는 방법과 기본적인 gradle kotlin dsl의 설정에 대해서는 이전 포스팅에서 자세히 다루었습니다. 참고해주시기 바랍니다. [kotlin + Spring] 코틀린 환경에서 Spring Boot 사용하기 gradle kotlin dsl 설정 먼저 gradle kotlin dsl 설정을 하는 법부터 알아보도록 하겠습니다. gradle kotlin dsl 설정.. 2021. 7. 30.
[Spring]DispatcherServlet Code로 분석하기 - reqeust & response process 안녕하세요. 저는 요즘 회사에서 Java로 Ethereum Client를 만들고 있습니다. 프로젝트를 진행함에 있어 Spring MVC를 사용하였는데요. 서버로 들어올때 url에 따라 분기를 쳐주는 역할을 하는 DispatcherServlet, 원리는 들어보고 알고 있었지만 이게 코드로 어떻게 구현되어 있지? 라는 생각이 들었고, 한번 파헤쳐보기로 했습니다. 오늘은 Spring MVC의 중심이라고 할 수 있는 DispatcherServlet, 그 중에서도 request를 처리하는 방법에 대해서 코드를 따라가며 분석해 보도록 하겠습니다. DispatcherServlet ? spring 공식문서에서는 DispatcherServlet을 아래와 같이 정의하고 있습니다. Spring MVC, as many oth.. 2019. 8. 30.
Spring boot를 docker와 함께 쓸 때 발생하는 에러 대처법 Windows에서 Spring boot를 docker에 자동 image가 올라가도록 만들어보고 싶어서 구글링을 해가면서 도전해 보았다... 결과적으로 잘 되긴 했지만 예상외의 오류들이 많이 발생하였고, 해당 오류의 해결법을 공유하고자한다. 1. Windows에 Docker를 설치했는데 실행이 안되요 -> 처음에 Docker를 설치하자마자 오류가 발생했다. 왜 실행이 안되는지 봤더니 Windows의 버전에 따라 설치해야하는 파일이 다른것을 알았다. 원래 Docker가 Linux Container를 근본 원리로 하고 있어서 Windows는 지원이 조금 떨어진다고 한다. - Windows10 pro 이상부터는 Windows 자체에서 가상화서버를 지원한다. 그래서 (https://hub.docker.com/ed.. 2019. 6. 20.