이기종 트랜잭션과 Best-Effort Atomicity
Intro 분산 시스템의 트랜잭션 관리 복잡성 분산 시스템에서는 데이터베이스(DB), 메시지 큐(Kafka), 캐시 서버 등 이기종 시스템 간 협력이 필수적입니다. 이때 트랜잭션의 원자성(Atomicity)을 보장하는 것은 큰 과제입니다. 특히 DB 업데이트와 Kafka 메시지 발행을 동시에 수행해야 할 때, 두 시스템의 트랜잭션 경계를 일관되게 ...
Intro 분산 시스템의 트랜잭션 관리 복잡성 분산 시스템에서는 데이터베이스(DB), 메시지 큐(Kafka), 캐시 서버 등 이기종 시스템 간 협력이 필수적입니다. 이때 트랜잭션의 원자성(Atomicity)을 보장하는 것은 큰 과제입니다. 특히 DB 업데이트와 Kafka 메시지 발행을 동시에 수행해야 할 때, 두 시스템의 트랜잭션 경계를 일관되게 ...
Intro 이번 글에서는 GraphQL Federation 환경에서 Zero-Code Instrumentation 방식으로 전환한 뒤 발생한 Context 전파 문제와 이를 해결한 경험을 구체적으로 공유하려 합니다. 이 글을 통해 유사한 문제를 겪는 분들에게 실질적인 도움이 되었으면 합니다. 문제 상황 GraphQL Federation 환경에...
위상 정렬은 방향성 있는 비순환 그래프(Directed Acyclic Graph, DAG)의 노드들을 정렬하는 알고리즘으로, 모든 간선 (u, v)에 대해 노드 u가 항상 노드 v보다 앞에 오도록 정렬합니다. 위상 정렬은 주로 작업 스케줄링, 컴파일러에서의 종속성 해결 등에 사용 위상 정렬의 기본 원리 위상 정렬은 주어진 그래프의 방향성을 유지...
Intro Node.js 환경에서 개발할 때, 프로젝트별로 Node 버전을 관리하기 위해 주로 nvm을 사용했었습니다. 하지만 회사 맥북에서 nvm으로 LTS 버전을 설치하고 .nvmrc 파일에 명시해도, nvm install 실행 시 제대로 설치되지 않는 버그가 발생했습니다. 이로 인해 사용성이 크게 떨어지는 경험을 하게 되었죠. 이 문제의 대안...
1. SDKMAN 소개 SDKMAN은 JVM 기반 언어 및 프레임워크를 쉽게 관리할 수 있게 해주는 오픈 소스 도구입니다. 이 글에서는 SDKMAN의 설치 및 사용 방법에 대해 알아보겠습니다. 2. SDKMAN 설치 SDKMAN을 설치하는 방법은 간단합니다. 터미널에서 다음의 명령어를 실행하면 됩니다. curl -s "https://get.sdk...
Intro Node.js 프로젝트를 관리할 때 다양한 버전의 Node.js를 요구하는 상황에 자주 직면합니다. 대부분의 개발자들이 nvm을 사용하며 시작하지만, 저 역시 더 나은 대안을 찾기 위해 여러 도구를 시도한 끝에 fnm (Fast Node Manager) 으로 정착하게 되었습니다. Volta와 nvm의 문제점 직면 Linux와 mac...
Intro 이번 글에서는 NestJS 프로젝트에 OpenTelemetry Zero-Code Instrumentation을 적용하는 과정에서 NODE_OPTIONS 설정이 제대로 반영되지 않는 문제와 그 해결 방법에 대해 공유하고자 합니다. 문제 상황: npm run start 시 NODE_OPTIONS 무시 OpenTelemetry Zero-Cod...
Intro 마이크로서비스 아키텍처의 확산과 함께 애플리케이션의 모니터링과 트레이싱이 중요한 과제로 떠오르고 있습니다. 특히, Zero-Code Instrumentation은 기존 코드를 최소한으로 수정하면서도 효과적인 계측을 가능하게 하는 장점으로 주목받고 있습니다. 이번 글에서는 Zero-Code Instrumentation을 사용함에도 불구하고 ...