Home
Jun
Cancel

외부 API 문서화

글을 작성하게 된 계기 외부 API 문서화에 대해 정리하기 위해 글을 작성하게 되었습니다. 1. 외부 API 문서화, 자동화의 필요성 외부 API 문서화는 단순한 문서 작업이 아니라, 팀 전체의 생산성을 높이는 방법 입니다. 외부 API 스펙을 자동으로 문서화하기 위해서는 외부 API를 문서화해야 하는 케이스 와 외부 API 문서화 방...

Exception

최근 로그를 잘 남기는 것에 관심이 많아졌는데요, 이를 위해 자바의 예외(Exception)를 한 번 더 정리하고 싶어 글을 작성하게 되었습니다. 1. 자바의 예외 자바에서는 예외 처리를 위해 Exception 과 Error 두 가지 클래스를 제공합니다. 이들은 모두 Throwable의 하위 클래스로, 실행 중 발생할 수 있는 오류나 예...

올바른 장애 대응 문화에 대한 생각 정리

글을 작성하게 된 계기 전사 차원의 장애를 보고 겪으며, 생각을 정리하기 위해 글을 작성하게 되었습니다. 1. 장애에 대한 생각 변화 입사 후 몇 차례 전사적인 장애를 겪으면서, 처음에는 단순한 기술적 결함이나 실수라고만 생각했습니다. 하지만 꽤 큰 비용을 들이고 모니터링을 강화 했음에도 비슷한 문제가 반복 되는 것을 보며, 장애는 단...

대량 쓰기 작업에서의 멱등성은 어떻게 보장할까?

글을 작성하게 된 계기 회사에서 대량의 데이터를 쓰기 작업 하면서 멱등성 있게 처리 하는 방법에 대해 고민하게 되었고, 이 과정에서 알게 된 내용을 정리하기 위해 글을 작성하게 되었습니다. 1. 왜 멱등성이 필요할까? 대량 데이터를 다루는 작업에서는 종종 네트워크 오류, 시스템 장애, 휴먼 에러 등의 이유로 일부 요청이 실패하는 상황이...

감사 이력 관리 방법 비교

글을 작성하게 된 계기 PG사는 대부분의 변경 작업에 대해 감사 이력을 남겨야 하는데요, 이 과정에서 여러 가지 방법을 비교하며 생각을 정리하기 위해 글을 작성하게 되었습니다. 1. 히스토리 관리 방법 고민했던 히스토리 관리 방법에는 크게 Trigger, Jpa Envers, 직접 INSERT, 로그 정도가 있었습니다. 각 방식의 장/...

MySQL 벌크 UPDATE에 대한 오해: Row-by-Row

글을 작성하게 된 계기 회사에서 벌크 업데이트를 사용하며 새롭게 알게된 내용 과 벌크 업데이트를 할 때 주의할 점 에 대해 정리 하기 위해 글을 작성하게 되었습니다. 1. 무엇을 잘못 알고 있었을까? MySQL에서 하나의 트랜잭션으로 여러 Row를 업데이트 하면 쿼리가 한 번만 실행 되는 줄 알았는데, 실제로는 InnoDB가 각 Row...

대량 배치 작업 전, 백업의 중요성과 적절한 방법

글을 작성하게 된 계기 영중소 차액 정산 프로젝트를 하면서 작게는 몇만 건, 많게는 수천만 건의 데이터를 다루고 있습니다. 그러다 보니 배치 처리를 할 때, 어떻게 멱등성을 보장하고, 실패 시 롤백을 가능하게 하는 것에 대해 고민하게 되었고, 이 과정에서 알게 된 내용을 정리하기 위해 글을 작성하게 되었습니다. 1. 백업 데이터의 필요성과 ...

복합키 업데이와 중복 키 오류

글을 작성하게 된 계기 회사에서 복합키를 가진 테이블을 업데이트 하던 중, 아래와 같은 오류가 발생했습니다. 이 과정에서 알게 된 내용을 정리하기 위해 글을 작성하게 되었습니다. ERROR 1062 (23000): Duplicate entry '1-200' for key '{TABLE}' 1. 문제 상황 재현 예를 들어, 다음과 같...

글로벌 락이 없는 레디스의 노드 재분배: REBALANCING

글을 작성하게 된 계기 레디스 클러스터의 리밸런싱(REBALANCING) 에서 글로벌 락이 필요하지 않은 것을 알게 되었고, 이를 정리하기 위해 글을 작성하게 되었습니다. 1. 레디스 클러스터의 리밸런싱과 락 레디스 클러스터 환경에서는 리밸런싱 작업을 수행할 때, 글로벌 락이 필요하지 않습니다. 이는 레디스가 해시 슬롯 기반으로 데이터...

의존성을 가급적 단 방향으로

글을 작성하게 된 계기 회사에서 한 서비스 레이어가 너무 많은 다른 서비스 레이어에 의존 하게 되었습니다. 처음에는 큰 문제가 없었지만, 요구사항이 복잡해지며 순환 참조까지 발생하게 되었고, 이 과정에서 서비스 간 의존성을 줄이는 방법 을 고민하며 알게 된 내용을 정리하기 위해 글을 작성하게 되었습니다. 1. 문제 상황 서비스 레이어가...