글또
-
실시간 리더보드 만들어보기글또 2024. 11. 9. 21:59
이 글은 아래의 글을 바탕으로 작성하였습니다. Design a Real-Time Leaderboard system for millions of usersUnpacking Challenges, Assumptions, and the Scope of Real-Time Leaderboard Designmedium.com 들어가며 안녕하세요. 오늘은 Medium 글에서 흥미로운 주제를 발견하여 직접 따라 해보고, 이에 대해소개하고자 합니다. 이번에 다룰 주제는 게임이나 검색어 분야에서 흔히 사용되는 '랭킹 시스템 구축'입니다.게임 유저의 점수를 실시간으로 수집하여 랭킹을 보여주는 시스템을 설계하고 이를 유저에게 보여줘야합니다. 이 과정을 통해 랭킹 시스템 설계의 핵심 개념과 실제 구현 방법에 대해 설명하겠습니..
-
글또10기 삶의 지도글또 2024. 10. 12. 17:44
삶의 지도라는 것은 제가 붙인 이름이며, 자신이 어떤 사람이고 어떤 성격을 가지고 있고, 어떤 사건으로 지금의 내가 되었는가에 대해 작성한 내용입니다. - 글또 10기 모집 내용 중 안녕하세요. 이번 글또 10기를 시작하며 글을 남깁니다. 어느덧 네 번째인 글또 10기, 7, 8, 9기를 지나 시간이 이렇게 흘렀습니다. 2022년 처음 참여했는데, 벌써 2025년이 다가오고 있다니, 시간이 참 빠르게 느껴집니다. 삶의 지도글또에 처음 지원할 때 작성하게 되는 주제 중 하나가 ‘삶의 지도’라고 알고 있습니다. 저는 이전 기수부터 참여했기에 이 주제로 글을 써본 적이 없지만, 이번 기회에 저만의 삶의 지도를 그려보려 합니다. 글의 형식이 정해져 있다고 생각하지 않기에, 자유롭게 제 이야기, 생각을 풀어보겠습..
-
HikariCP와 Slow Query로 인한 Commit 성공과 Rollback 실패글또 2024. 9. 19. 13:36
0. 들어가며 안녕하세요.이번 글에서는 회사에서 겪었던 DB 관련 이슈에 대해 이야기해보려 합니다.문제는 Spring Boot, HikariCP, MariaDB 환경에서 발생했으며, HikariCP와 Slow Query로 인해 트랜잭션 실패가 발생한 사례를 다룹니다. 원인을 분석하고, 이에 대한 해결책을 함께 고민해보겠습니다.중간중간에 부가설명은 접은글(더보기)로 작성했습니다. 문제 상황트랜잭션 사후 처리대응마무리 1. 문제 상황저희 서비스는 MSA 구조로 되어있으며, 각 서비스는 동기와 비동기 통신으로 소통합니다. 이번 문제는 A 서비스와 B 서비스 간 동기 통신 중 발생했습니다. A 서비스는 B 서비스에 업데이트를 요청하고, B 서비스에서 성공적으로 업데이트가 반영되면 성공을 반환합니다.A 서비스는 ..
-
Lock에 대해 알아보기: Gap Lock글또 2024. 9. 1. 13:55
0. 들어가며 안녕하세요. 오늘은 Gap Lock에 대해 알아보려고 합니다.Gap Lock에 관심을 갖게 된 이유는 재고 관련 Locking을 공부하다가 궁금한 점이 생겼기 때문입니다. 재고 정합성을 위해 SELECT FOR UPDATE를 사용하고 있었는데, 이에 대해 참고 자료를 살펴보던 중 SELECT FOR UPDATE를 사용할 때 발생할 수 있는 Deadlock에 관한 설명을 보았습니다.이 Deadlock은 단순한 자원 경합에 의한 것이 아니라, MySQL의 고유한 Lock 특성으로 인해 발생하는 것이었습니다. 그래서 이 문제의 원인인 Gap Lock에 대해 더 깊이 알아보고 공부해 보려고 합니다. Gap Lock 이란 무엇인가?Gap Lock 의 필요이유는 무엇인가?PK, UK예제당근 글 분석 ..
-
Lock에 대해 알아보기: Gap Lock 2글또 2024. 8. 30. 00:37
0. 들어가며이전 글에서 Gap Lock에 대해 알아보았습니다.단순 INSERT 문은 Gap Lock을 걸지 않는다는 것을 알게 되었습니다.다만, INSERT 문은 Gap에 대해 Insert Intention Lock을 건다는 사실도 확인했습니다.Insert Intention Lock은 Gap Lock과 유사하지만, 범위가 겹치지 않는다면 INSERT가 가능한 Lock입니다. 공식 문서를 살펴보던 중, INSERT로 인해 Deadlock이 발생하는 예제를 발견했습니다. INSERT가 Gap Lock을 사용하지 않는다고 알고 있었는데, 어떤 이유로 문제가 발생했는지 궁금해졌습니다. 오늘은 공식 문서의 예시를 통해 이 문제를 이해해보도록 하겠습니다 💡 LOCK_MODE 데이터 확인S, X : 넥스트 키..
-
재고 정합성이 걱정되어서 써보는 글(MVCC)글또 2024. 8. 21. 23:36
0. 들어가며안녕하세요.이번에는 회사에서 개발하고 있는 재고 시스템에서 고민했던 점을 써보려고 합니다.내용적으로는 MVCC와 lock에 대한 이야기입니다. 전체적인 개념이 아닌 제가 궁금했던 점만 기술하니 참고 바랍니다.이 글은 MySql 5.6의 기본설정인 innodb와 repeatable read를 전제로 합니다. 갑자기 궁금해졌다MVCC의 목적Update Where... / Delete Where... (Consistent Nonlocking Reads)우리의 재고 정합성을 위해 무엇을 해야 하는가 1. 갑자기 궁금해졌다.새로 개발하고 있는 재고 관리 시스템에서 여러 명이 동시에 재고를 이동시키면 문제가 없을까? 문제가 없는 경우는 유저가 한 명이고 순차적으로 기능을 실행시켜야만 가능한 이야기입니..
-
WMS 프로젝트글또 2024. 7. 18. 23:43
0. 들어가며 안녕하세요.지금부터 8개월간 준비하고 게시한 WMS 서비스를 소개하려 합니다.저희 회사 풀필먼트 개발팀이 WMS를 오픈하기까지의 내용과 개발적인 도전에 대한 내용들의 설명이며 프로젝트를 끝내고 돌아보며 회고하기 위해서 작성한 글입니다. WMS란?WMS 개발 이전에 회사는 어떻게 재고 관리를 하고 있었을까요?내제화개발적인 도전마무리 1. WMS란? WMS(Warehouse Management System, 창고 관리 시스템)는 물류센터의 전반적인 작업을 시스템화한 것입니다.반복되는 수작업을 시스템화하여 효율적으로 운영할 수 있도록 돕습니다.물류센터 내 다양한 작업을 시스템화하고 있으며, 재고 및 상품 관리와 같은 작은 작업에서부터 입고 및 출고와 같은 큰 작업까지 창고 내의 모든 작업을 총..
-
IP White List: 보안 취약점과 강화 방안글또 2024. 6. 19. 01:32
이전 글 spring security white list 어노테이션 만들기안녕하세요. 이번에는 spring security의 PreAuthorize를 커스텀한 이야기를 해보려 합니다. 목표는 인증인가 없이도 white list에 등록된 ip라면 자원에 접근이 가능하도록 하는 것입니다. 먼저 이게 필요gisungcu.tistory.com 0. 들어가며안녕하세요.이번에는 이전에 만들었던 IP white list 어노테이션을 보강하는 글을 써보고자 합니다.IP white list 기능을 도입하기 전에 IP 변조가 마음에 걸렸고 이 부분을 해결하고자 했습니다. 글의 순서는 다음과 같습니다. 1. spring에서 forward-headers-strategy 설정2. IP white list에 사용하는 IP가 어..