컨퍼런스&기술블로그
글또
-
커스텀 메트릭 사용해보기
들어가며 안녕하세요.이번 글에서는 모니터링에 대해 다뤄보려고 합니다. 최근 회사에서 여러 서비스와 연동되는 기능을 개발하던 중, 기능 테스트 과정에서 “테스트 과정에서 보이는 수치들을 시각화할 수 있다면 검증이 훨씬 수월하겠다”는 생각을 하게 되었습니다.우선 1차적으로는 그라파나를 활용해 모니터링 환경을 구축했습니다. 각 DB에 직접 연결해 SQL을 조회하고, Mixed 패널을 통해 여러 DB 데이터를 한 화면에서 확인할 수 있도록 했습니다. 하지만 이 방식에는 빈틈이 있었습니다. 구현 상 DB에서 하드 딜리트된 데이터는 로그로만 남아 검증에서 누락되는 경우가 있었고, 이를 추적하기가 까다로웠습니다.이 문제를 해결하기 위해 로그로 남는 정보들을 메트릭화할 수 없을까 고민하다가 알게 된 것이 바로 커스텀 ..
-
높은 트래픽 환경에서의 현재 재고 처리 구조 고민
들어가며안녕하세요.이번 글에서는 가상의 시나리오를 통해 회사의 아키텍처를 어떻게 개선할 수 있을지 고민해 보고자 합니다. 저희 회사에는 주문 서비스와 창고 서비스가 존재합니다.이커머스에서 재고를 관리해 주문 수량을 제한하는 건 흔한 패턴입니다.하지만 저희 시스템은 고객이 주문할 때 재고를 실시간으로 확인하지 않습니다.이는 "무조건 배송"이라는 비즈니스 모델을 반영한 설계입니다.그렇다면, 만약 주문 시점에 재고를 체크해야 하고, 동시에 높은 트래픽이 몰린다면 어떤 문제가 발생할까요? 현재 구조현재 주문은 주문 서비스에 누적되며, 당일 주문 마감 시간이 되면 그제야 창고 서비스로 전달되어 배송 작업이 시작됩니다.창고 서비스는 사용자 트래픽을 직접 받지 않기 때문에 특정 시간 제외하고 트래픽으로부터 안전합니..
-
카프카 부하 분산: 동적 쓰로틀링과 캐시
들어가며안녕하세요.이번 글에서는 카프카 기반 쓰로틀링에 대해 이야기 해보려합니다. 서비스 특성상 특정 시간대에 카프카 트래픽이 집중되며 DB 병목이 발생하는 문제가 있었습니다.단순히 서버를 증설하는 방식보다는 현재 가지고 있는 자원을 활용해 문제를 해결하고자 했습니다. 해결 전략일반적으로 부하 해결을 위해 자주 사용하는 방법은 캐시, DB 읽기/쓰기 분리, 쓰로틀링 적용입니다.저희 서비스에는 아직 글로벌 캐시를 적용하지 않았습니다.또 트래픽이 항상 높은 게 아니라 특정 시점에만 몰리는 구조였기 때문에, 상시 유지되는 캐시는 오히려 불필요한 관리 포인트 증가라고 생각했습니다.결국, 현재 리소스 내에서 문제를 해결할 수 있는 방법으로 동적 쓰로틀링 전략을 선택하게 되었고, 필요에 따라 캐시를 결합해 트..
-
글또 10기 소감
안녕하세요.이번에는 글또 10기를 마무리하며 몇 자 적어보려 합니다. 벌써 지난 7기, 8기, 9기를 지나 10기를 마무리하는 시간이 다가왔습니다. 시간이 참 빠릅니다.10기를 시작할 때 “좋은 기술 글을 쓰자”는 목표를 품었지만, 실제로 기술 글은 많이 쓰지는 못했습니다.그럼에도 불구하고 열심히 글을 작성하면서 많은 배움이 있었고 만족감을 느낍니다.회사에서는 다양한 문제 상황이 발생할 때마다 이를 해결하는 과정을 기록하는 것을 좋아합니다.새로운 기술이나 이론을 찾아 정리하는 것도 물론 의미가 있지만, 실제로 겪은 문제를 해결하는 과정을 글로 남기며 공부하는 것이 더 효과적이라 생각하기 때문입니다.이번에도 회사에서 발생한 DB 장애, 애플리케이션 장애 등 여러 가지 문제 상황에 대해 글을 작성하였고, 그..
-
DB 장애 분석: Galera Cluster Segfault
들어가며안녕하세요.이번에는 DB장애 분석 글을 써보려합니다.현재 저희 회사에서 가장 큰 이슈는 DB 장애 문제였고, 이를 해결해 보면 좋겠다고 생각했습니다. 제가 문제를 해결하기 위해 시도한 방법과 과정을 써보고자 합니다. 글의 순서는 다음과 같습니다.문제 상황의심 사례 분석메모리 부족, 많은 스레드 부하: 부하 테스트 (Sysbench 활용)특정 시각의 배치 작업, 시나리오 테스트 (K6 활용)개선점마무리 문제 상황 저희 회사는 MariaDB를 EC2에서 구동하며 Galera Cluster를 사용하고 있습니다.그중 일부 노드가 간헐적으로 다운되는 현상이 발생했습니다.Cluster 내 3개 노드 중 일부가 장애를 일으켜도 동작은 가능했지만, Segmentation Fault(Segfault) 에러..
최신 글
-
2025.10.16 쿼리 튜닝, 인덱스TIL 2025.10.16 23:53
2024.07.10~11 Query Tuning쿼리 튜닝을 해야 하는 일이 있다. 쿼리에서 불필요한 join이 있는지 확인하고 삭제 처리를 하자.group by 절까지 삭제가 가능할 수 있다.임시 테이블 사용 가능성이 있어 삭제할 수 있음 하자group bgisungcu.tistory.com 2025.04.16 huge table어제 이야기했던 것을 마저 이야기해 보겠습니다.로우가 많아져서 느려지는 원인에 대한 이야기를 했습니다.조회 검색 시 데이터를 읽을 때, 가령 인덱스가 커서 버퍼 풀에 전부 적재되지 않아gisungcu.tistory.com 이전에도 몇 번 다뤘던 주제.인덱스의 데이터 타입이 클수록 한 데이터 페이지(보통 16KB)에 들어가는 인덱스 수가 줄어들어 더 많은 i/o 발생할 수 있다...
-
2025.09.10 북마크 정리 3TIL 2025.10.02 00:01
빅뱅 배포, QA는 어떻게 살아 남았나: GMS 프로젝트 테스트 전략 백서 | 올리브영 테크블로그물류 시스템 구축 성공의 열쇠: 설계부터 E2E 테스트, 실시간 품질 모니터링까지oliveyoung.tech 제로베이스 WMS 구축기: Kafka 기반 분산 물류 시스템 설계와 Out-of-Order Events 해결 | 올리브영 테크해외 고객에 이븐하게 K-뷰티를 보급하기 위한 자체 글로벌 물류 시스템의 기술적 여정oliveyoung.tech 올리브영 물류 시스템의 진화 - 고객 경험의 시작과 끝을 함께하다 | 올리브영 테크블로그올리브영의 물류와 재고 그리고 배송 이야기oliveyoung.techOMS, WMS 등 물류에 대해서 이야기하고 있다.WMS내제화에 대한 이야기가 많은데, 같은 도메인이라 재미있..
-
2025.09.06 쿼리 튜닝 / Virtual ColumnTIL 2025.09.06 18:04
MySQL :: MySQL EXPLAIN ANALYZEMySQL 8.0.18 was just released, and it contains a brand new feature to analyze and understand how queries are executed: EXPLAIN ANALYZE. What is it? EXPLAIN ANALYZE is a profiling tool for your queries that will show you where MySQL spends time on your quedev.mysql.com 쿼리 실행계획을 볼 때 Explain만 사용했다가.ANALYZE를 알게 되었다.실제 실행을 통해 몇 번의 loop를 도는지 where절이 언제 실행되는지를 알 수 있어서 병목 ..
-
2025.09.04 북마크 정리 2TIL 2025.09.04 23:59
이번 북마크 정리는 트래픽과 대용량 구성이다.예전에는 많은 트래픽을 겪어보고 싶다는 생각을 가졌다. 그러다 현재 회사 구조에서 어떻게 대규모 트래픽을 핸들링해야 할지 혼자 고민하고 글을 써보니, 막연했던 것이 할만하다는 생각을 했다.그래서 지금은 그걸 쫒기보다는 모든 일에 재미만 있으면 해보고 싶다는 마음이 드는 것 같다.다는 못 읽고 일단 카테고리별로 모아보았다. '대규모 트래픽 경험' 이라는 환상 - 1부어떤 기대가 있었는지는 모르겠지만, 다 듣고나면 환상이 깨질지도velog.io 지루한 코드로 10억 웹 요청을 처리한 경험 | GeekNews미국 메디케어 건강보험 플랜 비교 시스템을 재구축하며, 검증된 기술(Postgres, golang, React 등) 로만 구성된 단순한 구조로 10억 건 ..