1. 스프링 부트 톰캣 애플리케이션의 Graceful Shutdown 동작 방식(Spring Boot Tomcat Graceful Shutdown)[ GracefulShutdown의 필요성 ]새로운 버전의 서버를 배포하기 위해서는 기존에 실행중인 서버를 종료하는 과정이 필요한데, 이때 기존의 서버 프로세스를 바로 종료하게 되면, 처리중 혹은 대기중인 요청에 문제가 될 수 있다. 따라서 서버 애플리케이션은 기존에 처리되던 요청을 모두 마무리하고 안전하게 서버를 내릴 수 있는 GracefulShutdown 을 지원해야 한다.프로세스를 종료할 때 강제 종료(리눅스의 -9, SIGKILL)를 하지 않는 한 운영체제는 프로세스에게 종료 시그널을 전달하게 되는데, JVM은 종료 시그널을 받게 될 경우 종료 훅(sh..
1. 올바른 스프링 부트 톰캣 애플리케이션 설정 가이드 (SpringBoot Tomcat Configuration) [ 다양한 스프링 부트 톰캣 애플리케이션 설정들 ]이전 포스팅에서 설명하였듯 ThreadPoolExecutor는 자바 버전과 톰캣 버전 두 종류가 존재하는데, 실질적으로 큰 차이는 없다.톰캣의 ThreadPoolExecutor가 생성되는 코드는 다음과 같은데, 스프링 역시 이에 맞춰 해당 값을 설정할 수 있는 속성들을 제공하고 있다. 스프링 부트에서 조정 가능한 설정값은 크게 4가지가 존재하는데 각각 다음과 같다server.tomcat.max-connections설명: 서버가 동시에 수락하고 처리할 수 있는 최대 연결의 수로, 이 한도에 도달하면 운영체제가 "acceptCount" 설정..
1. 멀티 스레드 기반으로 다중 요청을 처리하는 톰캣(Tomcat)의 구조와 동작 방식[ 웹 애플리케이션 서버(WAS, Web Application Server)과 톰캣 ]스프링 MVC 프레임워크는 자바 엔터프라이즈 개발을 편리하게 해주는 경량급 오픈소스 애플리케이션 프레임워크이며, 대량의 동시 요청 처리를 수행행할 수 있도록 멀티 스레드 모델을 기반으로 하고 있다. 이때 클라이언트와의 요청을 수립하고 이를 받는 부분은 웹 애플리케이션 서버(WAS, Web Application Server)가 수행하며, 대표적으로 톰캣(Tomcat)이 이를 구현하고 있다. [ NIO 기반의 톰캣의 동작 방식 ]사용자 요청이 들어오면 OS 계층에서 TCP 3-way handshake가 발생하고, TCP 연결이 완료된다..
1. K6 부하 테스트 시나리오 작성하고 결과 지표 분석하기(K6 Load Testing)[ K6 부하테스트 스크립트 작성하기 ]과거에는 Ngrinder 또는 JMeter 등을 활용해 부하 테스트 또는 성능 테스트를 진행했었는데, 최근에는 그라파나(Grafana) 진영에서 만든 K6 역시 자주 사용되곤 한다. K6 깃허브 페이지의 Releases에 접속하여 실행 가능한 파일을 받고, 다음과 같은 실행 명령어를 통해 손쉽게 부하 테스트를 진행할 수 있다. K6의 핵심 설계 목표는 최고의 개발자 경험을 제공해주는 것이라고 하는데, 손쉬운 실행 방법에서도 이를 체감할 수 있다../k6 run --vus 3 --duration 5s script.js 위의 명령어는 가상의 사용자 3명을 기준으로 5초 동안 부하..
1. MCP(Model Context Protocol)에 대하여 알아보고 IntelliJ와 Claude를 MCP로 연동하기[ MCP(Model Context Protocol)에 대하여 ]MCP(Model Context Protocol)이란 AI 어시스턴트를 콘텐츠 저장소, 비즈니스 도구, 개발 환경 등 다양한 데이터 시스템에 연결하기 위한 새로운 오픈소스 표준이다. 대부분의 LLM(대형 언어 모델)은 학습한 데이터만을 기반으로 동작하기 때문에 실제 작업 환경에 대한 맥락이 부족하여 활용도가 떨어질 수 있다는 문제점이 대두되기 시작했다. 따라서 관련 데이터를 제공하여 LLM의 성능과 활용도를 높이고자 데이터 소스와 AI 시스템을 통합하는 단일 프로토콜이 탄생하게 되었다. 이를 통해 개발 도구(IDE, 코드..