본문 바로가기

전체 글15

분산시스템에서 시스템간 데이터를 전송하는 법 두개 이상의 컴포넌트로 구성된 분산시스템 환경에서 데이터를 전송하는 방법에 대해 알아보자. REST API나 gRPC로 컴포넌트 간 데이터를 전송할 수 있고, 비동기로 전송하기 위해 Message Queue를 사용할 수 있다. 컴포넌트 간 네트워크로 연결되기 때문에 패킷 손실이나 네트워크 지연으로 인한 데이터 유실에 대비해야한다. 데이터 전달 보장 방법에는 세가지가 있다. at-most-once (최대 한번)메시지를 재전송하지 않는 방식이다. 네트워크 오류 등으로 전달이 실패하면 메시지가 유실될 수 있다. (fire and forget)at-least-once (최소 한번)메시지가 최소 한 번 전달되도록 재시도를 수행하는 방식이다.네트워크 장애나 응답 손실로 인해 메시지가 중복 전달될 수 있으므로 co.. 2026. 3. 7.
[MySQL] 격리수준 (isolation level) 여러 트랜잭션이 동시에 처리될 때, 하나의 트랜잭션이 다른 트랙잭션에서 조작한 데이터를 조회하는 걸 "어디까지 허용할 것인가" 하는 수준이다.격리수준이 낮을수록 데이터 부정합이 발생하고 높을수록 동시성이 떨어진다. Read uncommited한 트랜잭션이 다른 트랜잭션에서 커밋하지도 않은 데이터 변경사항을 조회할 수 있다. (Dirty read) Read commited한 트랜잭션에서 동일 데이터를 두 번 조회하는 사이에 다른 트랜잭션이 해당 데이터를 변경한 것을 커밋하면 두 번의 조회 결과가 다를 수 있다. (Non-Repeatable read) Repeatable readInnoDB에서는 MVCC(Multi Version Concurrency Control)방식으로 변경 전 데이터를 언두로그에 백업하.. 2026. 1. 10.
[JPA] entity 상속 관계 매핑 (@Inheritance) 실무에서 테이블 설계를 하다 비슷하면서도 미묘하게 다른 데이터를 다뤄야할 경우가 있다.마케팅 컨텐츠 SaaS 프로젝트를 진행하면서 요구사항이 바뀌게 되면서 초기 테이블 설계를 변경하고 상속 구조로 엔티티를 설계한 경험을 정리해보았다.이해를 돕기 위해 서비스에 대해 대략적으로 설명하자면, 여러 컨텐츠를 제공하고 클라이언트가 어드민에서 사용할 컨텐츠를 선택한다. 유저에게 노출되는 영역을 설정하고, 자사 앱에 간편하게 임베딩하여 유저의 참여와 리텐션을 올리는 서비스이다.초기에는 단일 컨텐츠만 제공하다가 요구사항이 변경되면서 여러 타입의 컨텐츠 관리가 용이하도록 테이블 구조를 변경하게 되었다.(사내 프로젝트이니 실제 구현된 내용과 다른 예시를 들었다.) 예를 들어, 초기에는 블로그형 컨텐츠만 제공했다고 해보자... 2025. 10. 23.
NewRelic 도입을 위한 분석기 사내에서 ELK으로 구축된 로깅 모니터링 시스템을 운영 중이다. 메트릭 정보나 RDB 혹은 외부 API 통신 등 트랜잭션(요청) 단위로 세밀하게 성능을 측정할 수 있기 때문에 APM 도입 검토를 하게 되었다. 로깅 모니터링 시스템과 APM은 기본적으로 데이터 수집 방법과 컨셉이 다르다. ELKNew Relic데이터 수집 방식로그 파일 기반Java agent 기반트랜잭션(요청-응답) 혹은 에러를 로그로 남겨서 로그파일에서 데이터를 수집agent에서 로그 수집, 에러 감지 및 수집, 트랜잭션(요청)과 트랜잭션 별 stack trace(span) 수집filebeat 설정에서 수집할 로그 형태를 설정하고 logstash에서 정의한 타입별로 로그를 가공하여 ElasticSearch 인덱스로 저장한다.agent에.. 2025. 10. 4.