글을 작성하게 된 계기 회사에서 수천만 건의 txt 파일을 빠르게 INSERT 해야 하는 상황이 있었고, 이를 어떻게 해결했는지 정리하기 위해 글을 작성하게 되었습니다. 1. 문제 상황 현재 영세/중소 상인들의 카드 수수료를 감면해 주는 시스템 을 만들고 있습니다. 이를 위해서는 여신협회에서는 반기마다 전달하는 영세/중소 상인들의 사업...
1분 30초 내에 수천만 건의 여신협회 데이터 저장하기
비동기 환경에서 MultipartFile이 사라진다.
글을 작성하게 된 계기 여신협회에서 받은 파일을 업로드할 때, 비동기를 사용했고, 이 과정에서 겪었던 이슈와 알게 된 내용을 정리하기 위해 글을 작성하게 되었습니다. 1. 문제 상황 현재 영세/중소 상인들의 카드 수수료를 감면해 주는 시스템 을 만들고 있습니다. 이를 위해서는 여신협회에서는 반기마다 전달하는 영세/중소 상인들의 사업자 ...
pt-online-schema-change를 사용하다 결제 시스템이 마비 됐다?
글을 작성하게 된 계기 pt-online-schema-change 에 대해 알게 된 내용을 정리하기 위해 글을 작성하게 되었습니다. 1. 문제 상황 회사에서 결제 트래픽이 평소 몇 배 정도일 때, pt-online-schema-change 를 사용해 테이블을 변경하고 있었습니다. 이는 Percona Toolkit 에서 제공하는 온라인 ...
선분 이력 관리
글을 작성하게 된 계기 회사에서 가맹점 매출구간을 기록하는 작업을 하며, 선분 이력 관리에 대해 알게 되었고, 이를 정리하기 위해 글을 작성하게 되었습니다. 1. 왜 고려하게 됐을까? 현재 각 가맹점 매출 구간을 기록 하는 작업을 하고 있습니다. 가맹점 매출 구간이란, 가맹점이 특정 시기(년/반기)에 어떤 매출 구간에 속하는지를 나타내...
테이블에 주석을 추가하는데, 결제 사고가 발생했다고?
글을 작성하게 된 계기 회사에서 테이블에 COMMENT를 추가 하다가 결제 트랜잭션이 밀려 연쇄 장애가 발생 했습니다. 이 과정에서 알게 된 내용을 정리하기 위해 글을 작성하게 되었습니다. 1. 문제 상황 회사에서 자주 사용되는 테이블에 COMMENT 추가 명령어를 실행 했습니다. 주석을 추가해 팀원들에게 도움을 주고 싶었는데요, 그랬...
TRUNCATE 쿼리는 비동기 환경에서 의도대로 동작하지 않는다.
글을 작성하게 된 계기 비동기로 TRUNCATE 쿼리를 사용 하면서 겪은 문제와 해결과정을 정리하기 위해 글을 작성하게 되었습니다. 1. 문제 상황 회사에서 통합 테스트를 작성할 때, 테스트 격리(Test Isolation) 를 위해 TRUNCATE 쿼리를 사용하고 있습니다. @Component @Profile(value = "tes...
TRUNCATE 쿼리는 트랜잭션의 영향을 받을까?
글을 작성하게 된 계기 TRUNCATE 쿼리가 트랜잭션에 영향을 받는지 실험을 하게 됐고, 이를 정리하기 위해 글을 작성하게 되었습니다. 1. TRUNCATE TRUNCATE은 MySQL에서 테이블의 모든 데이터를 빠르게 제거하는 DDL(Data Definition Language) 문으로, DELETE와는 다르게 동작합니다. ...
GROUP BY에도 종류가 있다고?
글을 작성하게 된 계기 회사에서 GROUP BY를 사용하다가 에러가 발생했고, 알게 된 내용을 정리하기 위해 글을 작성하게 되었습니다. 사용한 데이터베이스는 MySQL 입니다. 1. 문제 상황 회사에서 가맹점 데이터를 조회할 때, GROUP BY를 사용해 특정 칼럼 값을 기준 으로 데이터를 그룹화 하고 있었습니다. 그랬더니 다...
FTP와 SFTP란 무엇일까?
글을 작성하게 된 계기 회사에서 정산 API를 개발 하면서 SFTP를 통해 가맹점의 데이터를 전송하게 되었고, 이 과정에서 알게 된 내용을 정리하기 위해 글을 작성하게 되었습니다. 1. FTP FTP(File Transfer Protocol)는 네트워크 상에서 파일을 전송하기 위해 오래전부터 사용된 대표적인 표준 프로토콜입니다. FTP...
JPA를 사용할 때, 하나의 서버, 여러대의 데이터베이스는 어떻게 처리할까?
글을 작성하게 된 계기 회사에서 하나의 서버에 두 개의 데이터베이스를 운영하고 있습니다. 이를 어떻게 JPA로 매핑하는지, 어떻게 스키마를 관리했는지 정리하기 위해 글을 작성하게 되었습니다. 1. 문제 상황 현재 회사에서 하나의 데이터베이스 서버 에 여러개의 데이터베이스를 사용 하고 있습니다. 예를 들어, 다음과 같이요. hello라는...