Fredko Dev Log

SIGNOZ - 보안 제약 환경에서의 OpenTelemetry 기반 자체 모니터링 시스템 구축하기

Intro 보안 제약 환경에서 OpenTelemetry를 기반으로 자체 로깅 및 계측 시스템을 구축한 경험을 공유하고자 합니다. 클라우드 서비스 제공자(CSP) 환경에서 보안 규정을 준수하면서 효과적인 시스템 모니터링 체계를 만드는 것은 쉽지 않은 과제입니다. 이번 글에서는 제가 겪었던 문제 상황부터 솔루션 선택, 구축 과정, 그리고 운영까지 도입 ...

이벤트를 통한 비동기 처리와 오류 사례

Intro 이 글에서는 이벤트 처리를 통한 비동기 처리가 왜 필요하고 비동기 처리시에 발생할 수 있는 대표적인 문제 상황을 공유하면서 꼭 지켜야할 원칙에 대해서 알아보고자 글을 작성하였습니다. 코드 응집도와 Transaction의 중요성 소프트웨어 개발에서 코드 응집도는 모듈 내의 요소들이 얼마나 밀접하게 관련되어 있는지를 나타내는 개념입니다. ...

Kotlin Spring Clean Architecture에서의 익셉션 처리 전략

Intro 클린 아키텍처(Clean Architecture)는 애플리케이션의 각 계층 간 의존성을 명확히 분리하여 비즈니스 로직의 독립성과 유연한 확장성을 보장합니다. 이런 아키텍처를 Kotlin과 Spring 환경에서 구현할 때, 익셉션(Exception) 처리는 단순히 오류 메시지를 반환하는 것을 넘어, 각 계층의 책임과 경계를 명확히 하며 에러...

Kotlin - 스코프 함수 (Scope Functions)

Intro 코틀린에서는 let, apply, run, with, also 같은 스코프 함수를 활용하여 코드를 더 간결하고 읽기 쉽게 만들 수 있습니다. 하지만 이 함수들은 목적과 반환값이 다르기 때문에 올바르게 사용하지 않으면 가독성과 유지보수성이 오히려 저하될 수 있습니다. 이 글에서는 각 스코프 함수의 차이점, 실제 개발에서 활용할 수 있는 패...

이기종 트랜잭션과 Best-Effort Atomicity

Intro 분산 시스템의 트랜잭션 관리 복잡성 분산 시스템에서는 데이터베이스(DB), 메시지 큐(Kafka), 캐시 서버 등 이기종 시스템 간 협력이 필수적입니다. 이때 트랜잭션의 원자성(Atomicity)을 보장하는 것은 큰 과제입니다. 특히 DB 업데이트와 Kafka 메시지 발행을 동시에 수행해야 할 때, 두 시스템의 트랜잭션 경계를 일관되게 ...

Opentelemetry - Zero-Code Instrumentation MSA 환경에서 Context 전파 문제와 해결 경험 공유

Intro 이번 글에서는 GraphQL Federation 환경에서 Zero-Code Instrumentation 방식으로 전환한 뒤 발생한 Context 전파 문제와 이를 해결한 경험을 구체적으로 공유하려 합니다. 이 글을 통해 유사한 문제를 겪는 분들에게 실질적인 도움이 되었으면 합니다. 문제 상황 GraphQL Federation 환경에...