무료 환전은 어떻게 가능한가: 토스뱅크 외화통장의 제약으로 비즈니스 모델 역추론하기
환전 수수료 0원, 외화 금리 0%, 토스뱅크 내부 송금과 타 금융기관 이체 제한을 사실과 추론으로 나눠 외화 서비스의 비용·정산·유동성 구조를 분석합니다.
TECHNICAL NOTES
개념을 다시 설명하기보다 어떤 가설을 세웠고, 로그·코드·SQL 또는 공개된 기능과 제약에서 무엇을 확인했으며, 결론의 한계를 어떻게 검증했는지 남깁니다.
TECHNICAL SERIES
같은 시스템의 분석·전환·검증 과정을 순서대로 묶었습니다.
TECHNICAL NOTES
업무 사례와 서비스 분석은 확인된 사실과 해석의 범위를 구분합니다. 실제 시스템의 식별자는 재현하지 않으며, 글은 프로젝트 진행 시기 또는 분석·활용 시점을 함께 표시하고 작성일 최신순으로 정렬했습니다. RSS로 구독하기
전체 · 33개 글 · 작성일 최신순
환전 수수료 0원, 외화 금리 0%, 토스뱅크 내부 송금과 타 금융기관 이체 제한을 사실과 추론으로 나눠 외화 서비스의 비용·정산·유동성 구조를 분석합니다.
실패 결과만 존재하는 작업에서도 성공 데이터가 항상 있을 것이라고 가정해 발생한 NullPointerException을 상태별 PDF 분기와 실패 범위 격리로 보완한 과정을 정리합니다.
파일별 크기는 제한 안에 있지만 한 번에 보내는 첨부 합계가 업무 메일의 허용 범위를 넘는 조건을 분석하고, 여러 화면에서 총량을 일관되게 검증한 과정을 정리합니다.
화면에 보이는 데이터는 적지만 약 6만 개의 빈 행 영역을 가진 Excel 파일이 JVM 메모리 오류로 이어진 조건을 분석하고, 파일 크기와 파싱 범위를 함께 제한한 과정을 정리합니다.
본사·해외법인 LIMS의 29개 Slow Query를 운영 로그와 사용 빈도로 선정하고, 조인 전 필터링·인덱스 조건·조인 구조 개선과 결과 정합성 확인을 통해 24건을 1초 이내로 줄인 과정을 정리합니다.
브라우저의 빠른 안내와 별개로 고객 관할·주문 가능 여부를 서버가 최종 판단하도록 바꾸고, 본사 적용 후 두 해외법인으로 확산하며 회귀 범위를 확인한 과정을 정리합니다.
거의 동시에 등록된 주문이 같은 하위 식별자를 얻은 뒤, 식별자 하나만 신뢰한 후속 조회에서 서로 무관한 주문 데이터가 섞인 원인과 보수적인 복구 방식을 정리합니다.
요청 파라미터 접근을 줄이기 위해 HttpServletRequest를 static 필드에 보관한 유틸에서 동시 요청 간 상태가 덮어써진 원인을 재현하고 추적한 과정
SAP/EVS 전환으로 바코드 관리 경계가 달라진 기간에 요청 단위 처리와 서버 재검증으로 확인된 중복·유형 불일치 경로를 막고, 별도로 발견한 결과 수신 정보 정합성 문제를 수정한 과정을 정리합니다.
고객 이메일 조회 메서드의 숨은 입력값 변경이 반복 처리와 결합해 이전 고객의 상태를 다음 주문에 남긴 원인과, 영향 범위를 줄인 수정 및 장기적인 무부수효과 설계를 다룹니다.
분산된 미수주문 접수 로직을 서버에서 통합하는 과정에서 화면의 부분 객체를 전체 주문 데이터처럼 사용해 기존 업무값이 누락된 원인과, 현재 데이터를 다시 조회하도록 저장 경계를 고친 과정을 다룹니다.
포트폴리오 구축, 경력 데이터 관리, Git·SVN 이력 분석과 소스 배포에 AI를 활용하면서 사실 원본·상태·검증·완료 조건을 AI 바깥에 둔 이유와 실제 작업 구조를 정리합니다.
Well 좌표 충돌로 서버 처리가 실패했는데도 HTTP 200과 빈 본문이 반환되던 경로를 추적하고, HTTP 500과 표준 errorCode·errorMessage 계약으로 바꾼 과정입니다.
192개 반응·94개 contig의 Blast가 약 26시간 이어진 작업에서 Oracle 24시간 세션 만료 후 ORA-01012가 발생한 원인을 확인하고, 각 Blast 실행 전 세션 확인 Query를 수행하도록 보완한 과정입니다.
한 Job에 여러 주문이 연결되면서 성적서 대상 행이 중복되고, Java 반복문의 채번 증가가 행 수만큼 실행돼 Report ID가 +N씩 건너뛴 원인을 조회 책임 분리로 해결한 과정입니다.
완료·재반응·휴일 정보가 뒤늦게 바뀌는 업무에서 전일 집계만으로는 과거 지표를 고칠 수 없어, 최근 14일을 반복 재집계하도록 설계한 과정입니다.
같은 다운로드 DTO를 재사용하는 레거시 API마다 필수 필드가 달라, 표준 Bean Validation 제약과 호출별 검증 맥락을 분리한 설계 과정입니다.
브라우저 언어가 아니라 URL과 법인 환경이 언어를 결정하던 시스템에서, 기존 호출 계약을 유지하며 요청 초기에 Locale을 확정한 과정을 정리합니다.
DB Link를 직접 DataSource 접근으로 바꾼 뒤, Mapper를 분리하면서도 Service의 트랜잭션 경계를 유지하기 위해 Atomikos 기반 JTA 구성을 적용한 판단과 검증 한계를 정리했습니다.
반응마다 JVM이 종료되는 구조에서는 Pool을 재사용할 수 없다는 점을 측정하고, 상시 기동 REST API로 연계 방식을 바꾼 과정입니다.
애플리케이션에 포함한 Driver보다 서버 공용 구형 Driver가 먼저 로딩된 사실을 증명하고, 다른 애플리케이션의 자체 패키징을 보완한 뒤 공용 의존성을 정리한 과정입니다.
기존 URL과 연계 시스템의 축약형 파라미터 규격은 유지하면서, Spring MVC 확장으로 내부 DTO에 의미가 명확한 필드명을 적용한 과정입니다.
브라우저 팝업 정책에 의존하던 다단계 화면을 Dialog, iframe, postMessage 기반의 단일 흐름으로 전환하고 레거시 호출 경로까지 보존한 과정을 정리합니다.
Spring Service의 공유 가변 상태가 동시 요청 사이의 데이터 혼입 위험을 만드는 이유와, 요청 상태 지역변수화·공통 인터페이스·회귀 테스트로 이를 제거한 과정을 정리합니다.
공인 성적서의 원본·재발급·폐기 상태를 덮어쓰기 대신 발행 순번과 이력 관계로 모델링하고, 진위확인·동시 재발급까지 검증한 과정을 정리합니다.
CES 결과 ZIP 생성 흐름에서 파일 복사 병목을 분리하고 Java NIO로 전환해 558개 복사 구간을 약 224배 개선한 운영 사례입니다.
공란 오류 로그와 OS 리소스 상태를 교차 확인해 .nfs 열린 파일 핸들 누적과 open-file 한도의 연관성을 유력 원인으로 좁히고, 모듈 재기동과 Stack Trace 로깅으로 초기 정상화·후속 진단 기반을 마련한 과정입니다.
@Transactional 메서드 내부에서 삼킨 예외가 부분 반영을 만든 원인과 RuntimeException 재전파, API 업무 응답 검증, 외부 부수효과의 한계를 설명합니다.
FedEx SOAP→REST 전환에서 운영 계정 연결 누락을 겪고 백업 WAR로 업무를 복구한 뒤, 법인별 인증과 ETD 정책을 재설계한 과정입니다.
DB Connection 232개를 단순 누수가 아니라 Pool 객체의 반복 생성 문제로 좁히고, DataSource와 SessionFactory의 생명주기를 애플리케이션 단위로 재설계한 과정입니다.
PID와 로그 수정 시각만으로 놓치던 처리 정체를 반복 패턴으로 판별하고, 다법인 감시 대상을 설정으로 통합한 과정을 설명합니다.
같은 Request를 재사용하는 Forward에서 Wrapper와 원본 Request의 파라미터가 어긋난 원인을 추적하고, GET·JSON·Multipart까지 방어 범위를 넓힌 과정입니다.
조회 범위와 무관한 선집계를 제거하고 필요한 주문만 계산하도록 SQL 실행 구조를 바꾼 과정을 정리합니다.