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..
1. AI Harness(하네스) 구축을 위한 Shim 아키텍처 [ shim 아키텍처 개요 ]"shim"은 원래 목공·기계 조립에서 쓰는 일반 명사로 얇은 쐐기·끼움쇠를 뜻한다. 두 부품 사이의 미세한 틈을 메우거나 높이를 맞추기 위해 끼워 넣는 얇은 조각(나무, 금속, 플라스틱)으로, 문 경첩이 안 맞을 때 종이를 접어서 끼우는 그 동작이 바로 shim이다.마이크로소프트는 이러한 어원에 착안하여 windows 호환성 레이어를 위한 구조를 잡는 데 Shim 이라는 용어를 처음 사용하며 널리 알려지게 되었다. Windows의 Application Compatibility Toolkit (ACT) 문서에서 Microsoft는 이렇게 정의한다.A shim is a small library that transp..
운영 중인 카프카 토픽의 처리량이 증가하면 파티션을 증설하고, 그에 맞춰 컨슈머도 1:1로 함께 늘리는 경우가 많습니다. 이때 컨슈머의 auto.offset.reset 값을 어떻게 설정하느냐에 따라 메시지 유실 여부가 달라지는데, 이를 이번 포스팅에서 정리해보려고 합니다. 1. 파티션과 컨슈머의 관계, 그리고 auto.offset.reset 옵션[ 파티션과 컨슈머의 일반적인 관계 (1:1 균형 상태) ]기본적으로 컨슈머는 파티션과 1대1 관계를 유지해야 한다. 다음의 그림은 파티션 3개와 컨슈머 3대가 1:1로 매핑된 안정적인 운영 상태로, 컨슈머 그룹이 각 파티션을 균등하게 나눠 담당하므로 처리량이 잘 분산되고, 모든 파티션은 이미 자신만의 커밋된 오프셋을 가지고 있다. 만약 컨슈머의 수가 파티션의..