전체 글 137

구글에서 14년간 배운 21가지의 교훈, 21 Lessons from 14 Years at Google

구글 소프트웨어 엔지니어가 쓴 글인데 내용이 좋아 정리했습니다. 긱뉴스에 번역본이 올라왔지만 몇 문장이 어색하게 느껴져서, AI로 다시 번역한 내용을 아래에 첨부합니다. 번역이 어색하게 느껴질 때는 원문도 함께 보시면 좋습니다. 🙇‍♀️ 원문: https://addyo.substack.com/p/21-lessons-from-14-years-at-google 21 Lessons from 14 Years at GoogleOn code, careers, and the human side of engineeringaddyo.substack.com 긱뉴스 번역: https://news.hada.io/ GeekNews - 개발/기술/스타트업 뉴스 서비스개발 뉴스, 기술 관련 새소식, 스타트업 정보와 노하우, ..

카테고리 없음 2025.12.08

[시스템 개선] 결제 중복 문제, Redis 락과 다층 검증으로 한 단계 더 개선하기

결제 시스템의 중복 결제/이체 문제, 어떻게 해결할까?들어가며결제 시스템을 개발하거나 운영하다 보면 중복 결제나 중복 이체 문제를 마주하게 됩니다. 특히 트래픽이 증가하고 시스템이 복잡해질수록 이러한 문제가 발생할 수 있는데요,저희 팀은 중복 체크 로직을 운영하고 있었지만, 수기 결제와 Webhook이 거의 동시에 처리될 때는 여전히 중복이 발생하는 경우가 있었습니다.이 문제를 해결하기 위해 팀에서 회의한 내용이 좋아서 정리해봤어요. 결제 시스템에서 중복 처리 문제가 발생하는 몇 가지 패턴과, 이를 개선하기 위해 추가로 적용한 방법들을 공유합니다. 💡이 글의 칼럼 및 코드는 보안을 위해 일반화했습니다. 실제 회사 코드와는 다릅니다. 중복 결제/이체는 왜 발생할까?1. 동시성 문제 (Race Condit..

Diary/Develop Note 2025.10.26

[공지시스템] Virtualization으로 성능 15배 개선 - 26,000개 SelectBox를 0.2초로

시리즈1편 [공지시스템] PG사에서 계층형 공지 시스템 만들기 - 대규모 조직을 위한 설계 배경2편 [공지시스템] 설계 문서로 시작하는 개발 - 전체 아키텍처를 그리며 배운 점들3편 [공지시스템] DB 설계와 구현 - 타겟팅 로직부터 파일 업로드4편 [공지시스템] API 구현 - ORM 대신 스토어드 프로시저를 선택한 이유5편 [공지시스템] 계층형 SelectBox 구현기 - 대용량 데이터를 계층 구조로 다루는 UI 전략6편 [공지시스템] 웹/모바일 팝업 구현기 - Swiper와 localStorage로 사용자 경험 개선하기7편 [공지시스템] Virtualization으로 성능 15배 개선 - 26,000개 SelectBox를 0.2초로 (현재글)1. 배경 - 운영 반영 후 문제 발견5편에서 계층형 Se..

Diary/Develop Note 2025.10.24

[공지시스템] 웹/모바일 팝업 구현기 - Swiper와 localStorage로 사용자 경험 개선하기

시리즈1편 [공지시스템] PG사에서 계층형 공지 시스템 만들기 - 대규모 조직을 위한 설계 배경2편 [공지시스템] 설계 문서로 시작하는 개발 - 전체 아키텍처를 그리며 배운 점들3편 [공지시스템] DB 설계와 구현 - 타겟팅 로직부터 파일 업로드4편 [공지시스템] API 구현 - ORM 대신 스토어드 프로시저를 선택한 이유5편 [공지시스템] 계층형 SelectBox 구현기 - 대용량 데이터를 계층 구조로 다루는 UI 전략6편 [공지시스템] 웹/모바일 팝업 구현기 - Swiper와 localStorage로 사용자 경험 개선하기 (현재글)7편 [공지시스템] Virtualization으로 성능 15배 개선 - 26,000개 SelectBox를 0.2초로 💡 참고: 이 글의 코드는 보안을 위해 일반화했습니다...

Diary/Develop Note 2025.10.24

[공지시스템] 계층형 SelectBox 구현기 - 대용량 데이터를 계층 구조로 다루는 UI 전략

시리즈1편 [공지시스템] PG사에서 계층형 공지 시스템 만들기 - 대규모 조직을 위한 설계 배경2편 [공지시스템] 설계 문서로 시작하는 개발 - 전체 아키텍처를 그리며 배운 점들3편 [공지시스템] DB 설계와 구현 - 타겟팅 로직부터 파일 업로드4편 [공지시스템] API 구현 - ORM 대신 스토어드 프로시저를 선택한 이유5편 [공지시스템] 계층형 SelectBox 구현기 - 대용량 데이터를 계층 구조로 다루는 UI 전략 (현재글)6편 [공지시스템] 웹/모바일 팝업 구현기 - Swiper와 localStorage로 사용자 경험 개선하기7편 [공지시스템] Virtualization으로 성능 15배 개선 - 26,000개 SelectBox를 0.2초로 💡 참고: 이 글의 코드는 보안을 위해 일반화했습니다..

Diary/Develop Note 2025.10.23

[공지시스템] API 구현 - ORM 대신 스토어드 프로시저를 선택한 이유

시리즈1편 [공지시스템] PG사에서 계층형 공지 시스템 만들기 - 대규모 조직을 위한 설계 배경2편 [공지시스템] 설계 문서로 시작하는 개발 - 전체 아키텍처를 그리며 배운 점들3편 [공지시스템] DB 설계와 구현 - 타겟팅 로직부터 파일 업로드4편 [공지시스템] API 구현 - ORM 대신 스토어드 프로시저를 선택한 이유(현재글)5편 [공지시스템] 계층형 SelectBox 구현기 - 대용량 데이터를 계층 구조로 다루는 UI 전략6편 [공지시스템] 웹/모바일 팝업 구현기 - Swiper와 localStorage로 사용자 경험 개선하기7편 [공지시스템] Virtualization으로 성능 15배 개선 - 26,000개 SelectBox를 0.2초로 DB 설계가 끝나고, 이제 실제 API를 구현할 차례입니..

Diary/Develop Note 2025.10.23

[공지시스템] DB 설계와 구현 - 타겟팅 로직부터 파일 업로드 구조까지

시리즈1편 [공지시스템] PG사에서 계층형 공지 시스템 만들기 - 대규모 조직을 위한 설계 배경2편 [공지시스템] 설계 문서로 시작하는 개발 - 전체 아키텍처를 그리며 배운 점들3편 [공지시스템] DB 설계와 구현 - 타겟팅 로직부터 파일 업로드 (현재글)4편 [공지시스템] API 구현 - ORM 대신 스토어드 프로시저를 선택한 이유5편 [공지시스템] 계층형 SelectBox 구현기 - 대용량 데이터를 계층 구조로 다루는 UI 전략6편 [공지시스템] 웹/모바일 팝업 구현기 - Swiper와 localStorage로 사용자 경험 개선하기7편 [공지시스템] Virtualization으로 성능 15배 개선 - 26,000개 SelectBox를 0.2초로 설계는 끝났고, 이제 실제로 테이블을 만들 차례입니다.그..

Diary/Develop Note 2025.10.22

[공지시스템] 설계 문서로 시작하는 개발 - 전체 아키텍처를 그리며 배운 점들

시리즈1편 [공지시스템] PG사에서 계층형 공지 시스템 만들기 - 대규모 조직을 위한 설계 배경2편 [공지시스템] 설계 문서로 시작하는 개발 - 전체 아키텍처를 그리며 배운 점들 (현재글)3편 [공지시스템] DB 설계와 구현 - 타겟팅 로직부터 파일 업로드4편 [공지시스템] API 구현 - ORM 대신 스토어드 프로시저를 선택한 이유5편 [공지시스템] 계층형 SelectBox 구현기 - 대용량 데이터를 계층 구조로 다루는 UI 전략6편 [공지시스템] 웹/모바일 팝업 구현기 - Swiper와 localStorage로 사용자 경험 개선하기7편 [공지시스템] Virtualization으로 성능 15배 개선 - 26,000개 SelectBox를 0.2초로개발하기 전에, 충분히 설계하고 소통하기제가 일할 때 중요..

Diary/Develop Note 2025.10.20

[공지시스템] PG사에서 계층형 공지 시스템 만들기 - 대규모 조직을 위한 설계 배경

시리즈 1편 [공지시스템] PG사에서 계층형 공지 시스템 만들기 - 대규모 조직을 위한 설계 배경 (현재글)2편 [공지시스템] 설계 문서로 시작하는 개발 - 전체 아키텍처를 그리며 배운 점들3편 [공지시스템] DB 설계와 구현 - 타겟팅 로직부터 파일 업로드4편 [공지시스템] API 구현 - ORM 대신 스토어드 프로시저를 선택한 이유5편 [공지시스템] 계층형 SelectBox 구현기 - 대용량 데이터를 계층 구조로 다루는 UI 전략6편 [공지시스템] 웹/모바일 팝업 구현기 - Swiper와 localStorage로 사용자 경험 개선하기7편 [공지시스템] Virtualization으로 성능 15배 개선 - 26,000개 SelectBox를 0.2초로 들어가며안녕하세요. 저는 PG사(결제 대행사)에서 풀스..

Diary/Develop Note 2025.10.20

[JPA] N+1 문제 간단하게 정리

멋지고 꼼꼼하게 글을 쓰고 싶지만 .. 그렇게하면 자꾸 미룰 것 같아서, 내가 나에게 알려주는(?) 용도로 기록한다. # N+1 문제가 무엇이냐면 아주 간단히 말하자면 쿼리가 날아갈 때 기존 쿼리에 의해 다른 쿼리도 N번 날라가서 , 원래 날리려던 쿼리(1) 에 N번의 쿼리도 추가로 실행되는 문제가 생긴다. 저는 멤버만 조회하려 했는데요 갑자기 멤버가 속한 팀도 우후죽순 카타시안 곱처럼 (정확한 비유 아님) 짠하고 나왔어요 그럼 어떤 문제가 생기냐면. 디비에서 값을 내려서 실행할 때 최소한의 데이터를 받아야하는데 데이터가 와르르맨션처럼 몰려와서 서비스: 나 무거워 내 성능 힘들어 상태가 된다. 우리는 이 문제를 해결하기 위해 1. fetch join 사용 2. @batchsize 어노테이션 사용 3. D..

Development 2023.10.09