컨퍼런스&기술블로그
글또
-
장애 해결: 부하 원인 찾기
들어가며안녕하세요.앞으로 두 편의 글에서는 Kafka를 기반으로 한 서비스에서 특정 시각에 트래픽이 집중되면서 발생하는 장애 현상과 그 해결 방법에 대해 이야기해보려 합니다.현재 장애 복구를 위한 retry 정책은 적용되어 있지만, 근본적인 문제 해결을 위해서는 보다 구조적인 접근이 필요했습니다. 오늘은 그 원인을 분석해보겠습니다. 문제 상황A 서비스의 데이터가 B, C 서비스로 전달되면서 데이터베이스(DB)에 저장되는 과정에서 부하가 발생합니다. 이러한 구조에서는 DB가 전체 시스템의 병목이 될 수 있으며, 실제로 부하로 인해 쿼리 처리 속도가 늦어지고 timeout 현상이 발생하는 문제가 관찰되었습니다.특히 slow 쿼리 로그에서 커밋이 다수 노출되었는데, 이는 DB에 많은 요청이 몰리면서 커밋..
-
DB 장애 분석: Galera Cluster Segfault
들어가며안녕하세요.이번에는 DB장애 분석 글을 써보려합니다.현재 저희 회사에서 가장 큰 이슈는 DB 장애 문제였고, 이를 해결해 보면 좋겠다고 생각했습니다. 제가 문제를 해결하기 위해 시도한 방법과 과정을 써보고자 합니다. 글의 순서는 다음과 같습니다.문제 상황의심 사례 분석메모리 부족, 많은 스레드 부하: 부하 테스트 (Sysbench 활용)특정 시각의 배치 작업, 시나리오 테스트 (K6 활용)개선점마무리 문제 상황 저희 회사는 MariaDB를 EC2에서 구동하며 Galera Cluster를 사용하고 있습니다.그중 일부 노드가 간헐적으로 다운되는 현상이 발생했습니다.Cluster 내 3개 노드 중 일부가 장애를 일으켜도 동작은 가능했지만, Segmentation Fault(Segfault) 에러..
-
개발자를 위한 커리어 관리 핸드북
해당 리뷰는 한빛미디어의 후원으로 책을 받아 작성합니다. 들어가며안녕하세요.오늘은 책 한 권을 읽고 느낀 점을 적어보려고 합니다.운 좋게 한빛미디어에서 책을 후원해 주셔서 읽게 되었습니다.여러 후보 중에서 이 책을 선택한 이유는 다음과 같습니다."내가 잘하고 있는 걸까? 앞으로 나의 커리어가 정체되지는 않을까?"책을 읽고 나니 답변을 얻기보다는 질문이 바뀌었습니다."나에게 정말 중요한 것은 무엇일까?" 개발자를 위한 커리어 관리 핸드북 - 예스241:1 멘토링하듯 알려주는 커리어 관리 노하우* 네이버, 배민, 토스, 틱톡, 트위니 등 국내 개발자 10인의 커리어 이야기 수록커리어가 어느 시점에 이르면, 코드를 다루는 것보다 중요하고 복잡한www.yes24.com 이직의 신호제가 생각하는 회사의 일은..
-
2024 회고
들어가며안녕하세요.이번 글에서는 2024년 한 해를 돌아보며 정리하고, 내년을 계획해보려 합니다. 매번 느끼지만, 시간은 정말 빠르게 흐른다고 생각합니다.2023년 회고 글을 작성한 게 엊그제 같은데 벌써 2024년 회고를 작성하고 있습니다.올해를 돌아보며 커리어, 취미, 그리고 개인적인 성장을 정리해보고자 합니다. 커리어작년 회고에서 언급했던 신규 프로젝트를 성공적으로 릴리스한 한 해였습니다.재고와 출고를 관리하는 WMS 프로젝트로, 회사에서 중요한 역할을 담당하는 프로그램입니다.스타트업의 장점 중 하나는 경력이 적더라도 큰 프로젝트를 맡아볼 기회가 많다는 점입니다.저에게 연이어 큰 프로젝트를 경험할 기회가 주어진 것은 행운이라 생각합니다.또 , 이번 프로젝트를 통해 기존에 막연히 사용하던 기술을 더..
-
Galera Cluster 알아보기
0. 들어가며안녕하세요.이번에는 Galera Cluster에 대해 알아보려고 합니다.회사 내부에서 Galera Cluster를 사용하고 있는데, 사용해 보니 특색 있는 Clustering 방식이며 잘 모르고 사용해서는 안 되는 기술이라는 생각이 들어서 공부하게 되었습니다.제가 궁금했던 점과 에러를 파악하며 공부했던 내용을 정리합니다. 글의 순서는 다음과 같습니다.Galera cluster 소개Replication 방법인증 복제비동기 복제DeadLockLarge TransactionDDL 복제 방식 (Schema Upgrades)Cluster join 시 이뤄지는 일들 (State Snapshot Transfers)SST, ISTCrash 대응 방안Health check마무리 1. Galera clust..
최신 글
-
장애 해결: 부하 원인 찾기글또 2025.03.02 23:21
들어가며안녕하세요.앞으로 두 편의 글에서는 Kafka를 기반으로 한 서비스에서 특정 시각에 트래픽이 집중되면서 발생하는 장애 현상과 그 해결 방법에 대해 이야기해보려 합니다.현재 장애 복구를 위한 retry 정책은 적용되어 있지만, 근본적인 문제 해결을 위해서는 보다 구조적인 접근이 필요했습니다. 오늘은 그 원인을 분석해보겠습니다. 문제 상황A 서비스의 데이터가 B, C 서비스로 전달되면서 데이터베이스(DB)에 저장되는 과정에서 부하가 발생합니다. 이러한 구조에서는 DB가 전체 시스템의 병목이 될 수 있으며, 실제로 부하로 인해 쿼리 처리 속도가 늦어지고 timeout 현상이 발생하는 문제가 관찰되었습니다.특히 slow 쿼리 로그에서 커밋이 다수 노출되었는데, 이는 DB에 많은 요청이 몰리면서 커밋..
-
2025.02.24 spring kafka ThrottlingTIL 2025.02.24 22:57
카프카 컨슈머에 동적 쓰로틀링 적용하기 | 우아한형제들 기술블로그이 글은 카프카(Kafka)를 사용하는 스프링 환경에서 메시지 처리 속도를 동적으로 조절해야하는 상황과 여러 쓰로틀링 기법들을 소개합니다. 카프카를 사용하는 스프링 프레임워크 환경에 익숙techblog.woowahan.com 마침 비슷한 상황에서 글을 읽게 되었다.spring kafka에서는 레코드 리스너와 배치 리스너를 제공하는데, 디폴트는 레코드 리스너이다.ackmode에서도 record와 batch가 있는데, 리스너들과 어떻게 엮이냐에 따라 동작이 다르다.ackmode는 언제 커밋하겠다는 의미이다. 디폴트인 batch는 max-poll-records만큼 다 소비하고 커밋하겠다는 거고, record는 max-poll-records를 레코..
-
2025.02.22 spring transactionalTIL 2025.02.22 14:10
https://hyperconnect.github.io/2025/02/10/spring-transactional-rollback.html Spring Transactional Rollback Deep DiveSpring Transactional Rollback 이 되는 케이스를 심층적으로 살펴보고 예시로 확인해봅니다.hyperconnect.github.io롤백 마크는 많이들 알고 있을 것이다. 우형 글로도 많이 유명하다. 하이퍼커넥트의 글은 트랜잭션 전파 속성까지 설명하고 있다.REQUIRES_NEW는 기존 트랜잭션에서 분리되어 새로운 트랜잭션을 만드는 전파속성입니다.이를 활용해 트랜잭션 안에서도 작은 단위로 트랜잭션을 나눌 수 있게됩니다. 굳이 나눠야하는 이점이 있을까요? 애초에 트랜잭션으로 묶이는 작..
-
2025.02.19 spring kafka kafkaListenerContainerTIL 2025.02.19 23:33
https://docs.spring.io/spring-kafka/reference/kafka/receiving-messages/listener-annotation.html @KafkaListener Annotation :: Spring KafkaWhen using manual AckMode, you can also provide the listener with the Acknowledgment. To activate the manual AckMode, you need to set the ack-mode in ContainerProperties to the appropriate manual mode. The following example also shows how to use a differendocs...
-
2025.02.19 line 장애대응TIL 2025.02.19 10:07
https://engineering.linecorp.com/ko/blog/line-failure-reporting-and-follow-up-process-culture LINE의 장애 보고와 후속 절차 문화들어가며 소프트웨어를 개발하고 사용하는 곳이라면 어느 곳이든 장애가 없을 수 없을 것입니다. 사용자가 많고 트래픽 규모가 크고 연관된 서비스가 많은 복잡한 소프트웨어일수록 장애가 여engineering.linecorp.com프로세스로 정립하는 것이 좋다.그래야 장애발생 시 당황을 덜 하게 된다.