전체 글631 Jmeter를 이용한 Spring MVC Vs. Webflux 성능 비교 간단한 예제 코드 MVC @SpringBootApplication @RestController @RequiredArgsConstructor public class MvcApplication implements ApplicationListener { private final RedisTemplate redisTemplate; private final UserRepository userRepository; public static void main(String[] args) { SpringApplication.run(MvcApplication.class, args); } @GetMapping("/health") public Map heatlh() { return Map.of("health", "ok"); }.. 2023. 10. 21. Spring webflux - R2DBC, Redis R2DBC DB 동기처리의 문제 비동기 어플리케이션에서는 처리 절차 중간에 동기가 포함되면 병목 -> 성능 저하 2번 부분까지 보았을 3번 db 커넥션 부분에서 jdbc 혹은 orm을 사용하면, 1번 2번이 비동기로 처리하더라도 3번을 동기로 처리하면 3번 응답이 올 때까지 해당 스레드는 4번까지 처리를 못하고 기다리게 된다. 즉, 처리 흐름에서 하나라도 동기가 있게 되면 전체적인 성능에 문제 이러한 문제를 해결하기 위해 나온 것이 R2DBC R2DBC 데이터베이스 async 처리 reactice stream nonblocking 라이브러리지만 일종의 오픈 스택 -> 벤더 사에서 제공하는 것이 -> 일반적 SPI(Service Provider Interface) Spring Webflux 생태계와 어울림.. 2023. 10. 21. Spring Webflux - 배경, 개념 Cpu bound vs I/O Bound, block vs non-block, mvc vs webflux Cpu bound vs I/O Bound 스프링 웹플럭스는 대량의 트래픽을 처리하는데 특화되어 있고 I/O 바운드에 가깝다. CPU Bound CPU를 중점적으로 다루는 작업들 암호화 압축화 주로 CPU 계산 능력에 따라 성능이 좌우되는 것들 단일 CPU 코어에 두 개의 작업을한다면 어떨까? 동시간 대에 하나의 명령만 실행하기 때문에 실제로는 app1과 app2가 번갈아가면서 실행하게 된다. 이렇게 실행되는 과정에서 Context Switing이 일어나고 성능 저하가 발생. 메모리 -> CPU : register 컨텍스트 스위칭은 Register 과정을 초기화한다. 즉, 2번 앱 정보를 가져와서 실행. -> 성능상 오버헤드 발생 해결 방법은 ? multi core를 활용 -> 병렬 처리를 한다. IO B.. 2023. 10. 16. 스프링 웹 환경에서 요청 응답 플로우 (request, filter, interceptor, controller, exceptionHandler) Request - Response 흐름 사용자의 요청이 서버에 도착하면, DispatcherServlet이 해당 요청을 처리한다. 이때, 요청과 응답에 대한 정보는 각각HttpServletRequest와 HttpServletResponse에 저장. Filter Filter는 요청과 응답에 대한 전처리와 후처리를 담당. LoggerFilter는 요청과 응답에 대한 로깅을 수행. 요청과 응답의 헤더 정보, 바디 정보 등을 로그로 남긴다. Interceptor Interceptor는 컨트롤러의 실행 전후에 특정 로직을 실행. AuthorizationInterceptor 는 요청 URL의 로그를 남기고, 특정 HTTP 메소드나 리소스에 대한 요청이면 통과시킨다. Controller 실제 비즈니스 로직을 처리하는.. 2023. 10. 16. [독서 기록] 만들면서 배우는 클린 아키텍처 클린 아키텍처 우리 모두는 낮은 개발 비용으로 유연하고 적응이 쉬운 소프트웨어 아키텍처를 구축하고자 한다. 그러나 불합리한 기한과 쉬워보이는 지름길은 이러한 아키텍처를 구축하는 것을 매우 어렵게 만든다. 이 책에서는 전통적인 계층형 아키텍처(layered architecture) 스타일과 이 스타일의 단점을 논하는 것부터 시작해, 로버트 마틴(Robert C. Martin)의 클린 아키텍처(clean architecture)와 알리스테어 콕번(Alistair Cockburn)의 육각형 아키텍처(hexagonal architecture)에서 이야기하는 도메인 중심 아키텍처의 장점에 대해 이야기한다. 그러고 나서 실제 코드에서 어떻게 육각형 아키텍처를 구현하는지를 보여주기 위한 실습 단원으로 넘어가, 실습을.. 2023. 10. 13. 이전 1 ··· 34 35 36 37 38 39 40 ··· 127 다음