![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bFdzsg/btsshp6cW4O/kFelH0wN2Sy2TCTzHYCvr1/img.png)
이번에는 유지보수하기 좋은 멀티 모듈 구조를 설계하는 기준과 그에 따른 고려사항에 대해 알아보도록 하겠습니다. 아래의 내용은 절대적인 기준이 아니며, 상황에 따라 달라질 수 있음을 참고 부탁드립니다. 또한 해당 내용은 인프콘 2023에서 발표한 내용이니, 인프콘 영상을 통해서도 참고 하실 수 있습니다. 발표자료는 여기서 확인하실 수 있고, 예시로 설계된 구조는 깃허브에서 확인하실 수 있습니다. 1. 멀티 모듈 설계하기, 모듈을 나누는 기준 시스템에 독립적인 공통 코드 분리하기 서로 다른 수준(속도)의 공통 코드 분리하기 서로 다른 기능의 모듈 분리하기 서로 다른 액터의 모듈 분리하기 [ 시스템에 독립적인 공통 코드 분리하기 ] 가장 먼저 공통 코드를 분리시킬 수 있고, 공통 코드는 “시스템 종속성”을 기..
이번에는 Spring Boot3.2에 새롭게 추가될 RestClient에 대해 알아보도록 하겠습니다. 1. Spring Boot3.2에 새롭게 추가될 RestClient [ RestClient가 필요한 이유 ] Spring에서는 RestTemplate, WebClient와 같은 Http Client를 지원하고 있다. 하지만 이들은 각각 문제점을 가지고 있었다. 대표적으로 RestTemplate은 사용이 직관적이지 못하며, WebClient와 HttpInterface는 web-flux 의존성을 필요로 했다. 2009년에 Spring 3.0에 RestTemplate이 처음 도입된 이후, Template과 같은 클래스를 통해 모든 HTTP의 기능을 노출하는 것이 부담을 줄 수 있다는 것을 발견했다. 그래서 S..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bisgFc/btsmGizcOVv/fk02xhbPtI6rvDc2kPrsXK/img.png)
이번에는 GraalVM이 제공하는 네이티브 이미지(Native Image)에 대해 알아보도록 하겠습니다. 1. GraalVM의 AoT 컴파일러(Ahead-of-Time 컴파일러) [ GraalVM이 제공하는 새로운 기술 ] GraalVM은 자바와 다른 JVM 언어들로 작성된 애플리케이션의 실행을 가속화하는 동시에 JavaScript, Python 등과 같은 런타임을 제공하도록 설계된 고성능 JDK이다. GraalVM의 다국어 기능을 사용하면 단일 애플리케이션에서 여러 프로그래밍 언어를 혼합하는 동시에 다른 언어를 호출하는 비용을 제거할 수 있다. GraalVM은 자바 애플리케이션을 실행할 수 있는 두 가지 방법을 제공한다. JIT(just-in-time) 컴파일러를 이용해 런타임 중에 컴파일 및 최적화 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/sSPeY/btsmz2vrvjo/CtyZw9dmNKds5yLbKvp2Pk/img.png)
이번에는 Hotspot VM의 한계와 이를 극복하기 위한 GraalVM에 대해 알아보도록 하겠습니다. 1. Hotspot VM과 JIT 컴파일러(Just-In-Time Compiler) [ C 언어의 동작 방식 ] C, C++, GoLang, Rust 등과 같은 컴파일 언어는 컴파일 과정에서 바로 기계어로 번역하고 실행 파일을 만들어낸다. 그리고 컴파일 시에 코드 최적화까지 진행하여 처리 성능이 상당히 뛰어나다. 대신 생성된 기계어가 빌드 환경(CPU 아키텍처)에 종속적이라서, 플랫폼이 바뀐다면 다시 빌드해야 하는 문제가 있다. [ Java 언어의 동작 방식 ] 자바는 이러한 플랫폼 종속적인 문제를 해결하고자 JVM을 도입하였고, 그래서 동작 과정이 조금 다르다. 만약 우리가 자바 애플리케이션을 실행한다..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bBseVt/btskfqzNCDP/72ZbSsffcR6yVbVdMfTAtK/img.jpg)
아래의 내용은 Spring Cloud Gateway의 공식 문서를 보고 요약 정리한 내용입니다. 1. Spring Cloud Gateway 공식 문서 간단히 살펴보기 [ Spring Cloud Gateway란? ] Spring 생테계를 기반으로 하는 API Gateway를 제공해주는 프로젝트 Spring Cloud Gateway는 간단하지만 효율적인 방법으로 API를 라우팅하는 방법을 제공함 그 외에도 security, monitoring/metrics, resiliency 등과 같은 공통 관심사를 처리해줌 최신의 버전은 Spring 6, Spring Boot 3 and Project Reactor를 기반으로 동작 [ Spring Cloud Gateway의 동작 순서 ] Client는 Spring Clo..