최근 포스트

분산 시스템 이해하기

2 분 소요

근래 MSA, 쿠버네티스, 카프카 등 대규모 서비스에서 사용되는 여러가지 기술들에 대해 눈으로 보고 귀를 듣는 경우가 많아졌다. 꽤나 예전부터 학습하고자 하는 마음에 관련 포스트들을 북마크에 쟁여 놓고 있었는데 일련의 경험이 트리거가 되어 드디어 그 보따리를 풀게 되었다. 먼저, ...

Nginx 블로킹 문제점과 쓰레드풀

1 분 소요

Nginx는 이벤트 기반의 비동기-논블로킹 방식을 사용한다. 덕분에 다량의 트래픽을 빠르게 처리하는 것이 가능하다. 하지만 Nginx의 이런 동작구조에서도 ‘블로킹’ 문제가 발생하는 이벤트들이 존재하였고 이 문제를 보완하기 위해 쓰레드 풀 매커니즘을 추가하게 되었다.

Nginx. Apache와 비교하며..

4 분 소요

현재(2023년 9월 기준) 가장 인기있는 웹서버가 무엇이냐고 물어보면 단언컨대 Nginx가 빠질 수 없다. Nginx는 2004년 출시 이후 꾸준히 웹서버 시장에서 점유율을 높이기 시작했다. 2008년 모바일 시장이 본격화됨에 따라 급부상하여 현재에 이르러 시장 점유율 34% 기...

읽기, 쓰기 모델의 분리 - CQRS 패턴

1 분 소요

CQRS(Command and Query Responsibility Segreagation)는 데이터 변경과 데이터 조회를 서로 다른 모델로 처리하는 것을 의미한다. 기존의 데이터베이스 접근 방식에서 변경과 조회에 대해 같은 모델을 사용하는 것과 달리 CQRS는 변경과 조회를 분리...

Spring - 테스트 코드 작성하기

1 분 소요

테스트의 목적은 설계를 검증하기 위함이다. 어떠한 목적을 이루기 위한 비즈니스 로직을 설계하고 해당 설계가 제대로된 결과값을 내는지를 검증하기 위해 이용한다. 테스트를 작성함으로써 검증 및 예상되는 문제를 미리 확인할 수 있다는 장점이 있다.

Spring - Filter와 GenericFilterBean, OncePerRequestFilter

1 분 소요

Spring boot에서 Filter를 만들기 위한 방법에는 여러가지가 존재한다. 그 중 자주 사용하는 방식은 다음과 같다. Filter 인터페이스 이용 GenericFilterBean 추상 클래스 이용 OncePerRequestFilter 추상 클래스...

Spring - mvc 설정을 위한 다양한 방법들

1 분 소요

Spring boot를 이용한 프로젝트 도중 WebMvc 설정에 문제가 발생하였다. WebMvcConfigurationSupport와 WebMvcConfigurer를 혼용하면서 발생한 문제였다. 가까스로 문제를 해결한 후 해당 개념에 대한 지식이 부족하다고 판단하여 이에 관한 내용...

Spring - Argument Resolver와 동작원리 Deep Dive

4 분 소요

Controller의 메서드에 파라미터로 사용하는 @RequestParam, @RequestBody 는 어떻게 동작하는 것일까? Controller의 파라미터로 클라이언트의 요청정보가 아닌 추가적인 정보를 넘길 수 있을까? 이러한 의문들을 해결하기 위해 HandlerMethodAr...

Spring Security Authentication Architecture

3 분 소요

Spring Security은 인증 기능을 지원해준다. 인증방식에는 Username/Password를 이용한 방식, OAuth2.0을 이용한 방식 등 여러가지 메커니즘들이 존재하는데 Spring Security는 여러가지 인증방식에 대해 모두 지원해준다.

Spring Security Architecture

1 분 소요

Spring Security는 Spring Framwork를 기반으로 한 인증과 인가, 웹 공격에 대한 방어를 위한 기술이다. Servlet Container, Webflux 기반 모두 지원한다. 이 중 Servlet Container 기반으로 Spring Security가 동작하...