1. 에러 스택 트레이스 최적화를 도와주는 -XX:+OmitStackTraceInFastThrow(사라진 예외 스택 트레이스)[ OmitStackTraceInFastThrow 옵션이란? ]-XX:+OmitStackTraceInFastThrow 옵션은 JVM이 동일한 위치에서 반복해서 예외를 던질 경우, JIT 컴파일러가 스택트레이스와 메시지가 없는 싱글턴 예외로 바꿔 던지는 최적화 기법이다. 이는 JDK 1.4부터 기본 활성화되어 있는 상태이다.예외 생성 비용의 대부분은 fillInStackTrace() 메서드로 콜스택을 훑어 프레임 배열을 만드는 작업이다. 스택이 깊으면 예외 하나당 수 ms씩 소요되곤 하는데, 같은 지점에서 뻔한 예외가 수천 번 반복되면 매번 스택을 뜨는게 낭비이다. 따라서 JIT이 ..
1. MCP 서버의 인증 과정에 대한 이해(MCP Authorization flow)[ MCP 인증의 필수 유무 ]MCP 공식 문서에 따르면, MCP 인증은 선택 사항이다. 하지만 다음의 상황에는 MCP 인증이 강하게 요구된다고 한다.user-specific한 데이터에 접근하는 경우누가 어떤 행동을 했는지에 대한 감사가 필요한 경우사용자 동의가 필요한 API에 대한 접근 권한 관리가 필요한 경우엄격한 권한 통제가 필요한 enterprise 환경을 위해 개발하는 경우사용자 단위로 rate limit 구현 혹은 사용량 트래핑이 필요한 경우 따라서 필요에 맞게 MCP 인증은 반드시 필요한 상황이 올테니, 알아둘 필요가 있다. [ MCP 인증 플로우 ]만약 MCP 인증을 도입했다면, MCP 인증 플로우는 ..
1. CLI를 위한 2가지 인증 방식, Authorization Code Flow와 Device Authorization Flow [ Authorization Code Flow와 PKCE이란? ]PKCE(Proof Key for Code Exchange, "픽시")는 OAuth 2.0의 인증 코드 가로채기 공격을 막기 위한 보안 확장이다. 기존의 OAuth 2.0의 인증 코드 플로우(Authorization Code Flow)에서는 인증 서버가 리디렉션을 통해 인증 코드를 클라이언트에 돌려주면, 클라이언트가 그 코드를 활용해 액세스 토큰으로 교환한다.이를 위해 사용자는 인증 코드를 돌려받을 본인 서버의 리디렉션 전용 URI를 인증 서버에 사전에 등록을 해두어야 한다. 그러면 인증 서버는 인증 코드를 쿼리..
1. 클래스 패스 섀도잉(Classpath Shadowing)이란?[ 클래스 패스란? ]JVM이 자바 애플리케이션을 실행하기 위해서는 .java 파일을 JVM이 이해할 수 있는 형태로 컴파일한 .class 파일이 필요하다. 그리고 클래스 파일은 .class와 같이 단건으로 저장될 수 있고, .jar와 같이 여러 클래스들이 압축 파일로 뭉쳐진 형태로도 존재할 수 있다.JVM은 .class과 .jar 파일 등을 탐색하여 메모리 위에 올리게 되는데, 이때의 탐색 경로를 클래스 패스(Classpath)라고 부른다. 즉, “우리가 만든 코드를 실행할 때 필요한 클래스들을 어디서 찾아야 하나?”를 JVM에게 알려주는 것이라고 볼 수 있다. 클래스 패스에는 보통 다음이 들어가며, 그 외에도 사용하는 도구에 따라 다양..
서버를 운영하다 보면 가장 먼저 마주치는 결정 중 하나가 “메트릭을 어떻게 수집할 것인가” 입니다. 이번 포스팅에서는 프로메테우스(Prometheus)가 채택한 pull 방식과 그 대척점에 있는 push 방식이 무엇이고 어떤 차이가 있는지 정리해보도록 하겠습니다. 1. 프로메테우스에 대하여(About Prometheus)[ 프로메테우스란? ]프로메테우스는 SoundCloud에서 2012년부터 개발한 오픈소스 시계열 모니터링 시스템이다. 이후 Kubernetes에 이어 CNCF의 두 번째 졸업 프로젝트가 되면서 사실상 클라우드 네이티브 환경의 표준 모니터링 도구로 자리잡았다. 프로메테우스의 특징들로는 다음과 같은 것들이 있다.시계열 데이터베이스(TSDB) 내장 — 별도 외부 저장소 없이 자체 저장Pro..