본문 바로가기

전체 글57

외부 API를 연동시 병렬 처리만으로는 놓칠 뻔했던 문제 고객사가 대표번호 1개를 기준으로 1~10개 번호에 대한 청약을 동시에 신청할 수 있어야 했다.문제는 청약 1건당 처리 시간이 5~30초로 비교적 길다는 것. 10건을 순차로 처리하면 최대 300초 가까이 걸릴 수 있는 구조였다. 다건 청약이 흔한 케이스는 아니었지만 발생하면 사용자가 5분 가까이 기다려야 하는 건 분명한 문제였다. 멀티스레드 병렬 처리 도입번호별로 순차 for-loop를 돌며 하나씩 요청하던 구조를, 병렬로 동시에 실행하도록 바꿨다. 핵심은 이 작업이 CPU bound가 아니라 I/O bound라는 점이다. 각 요청은 대부분 외부 API 응답을 "기다리는" 시간이지 실제 연산 시간이 아니다. 순차로 처리하면 대기 시간이 그대로 쌓이지만 병렬로 처리하면 대기 시간이 겹친다. 10건을 순차.. 2026. 8. 11.
FileVisitor로 오래된 파일 정리 배치 만들기 파일을 /2025/08/01처럼 날짜 기반 경로에 적재하는 시스템을 운영하다 보면 시간이 지날수록 디스크 사용량이 계속 쌓이는 문제가 생긴다.오래된 파일을 주기적으로 정리해야 하는데 단순히 파일 목록을 가져와서 하나씩 지우는 방식보다 더 견고하고 확장 가능한 방법이 필요했다.나의 경우 개인정보 보호 목적으로 암호화된 파일을 2개월 뒤 삭제하는 배치를 만들어야 했다. 이번 글에서는 Java NIO의 FileVisitor를 활용해서 2개월이 지난 날짜 디렉토리를 찾아 삭제하는 배치를 어떻게 구현했는지 정리해본다. 왜 파일 목록 조회 대신 FileVisitor인가가장 단순한 접근은 이런 식이다. File[] files = new File(basePath).listFiles();for (File f : file.. 2026. 8. 10.
대용량 데이터 이관을 설계하며 고민했던 3가지(Java + MyBatis + PostgreSQL) MyBatis + PostgreSQL 환경에서 대량의 데이터를 select한 뒤 암호화 같은 가공을 거쳐 다른 테이블에 insert(또는 원본 테이블에 update)하는 배치 처리를 실제 운영 코드를 계기로 다시 점검했다. 고민한 순서 그대로 세 가지로 정리한다. 얼마나 select해서 처리해야 하는가 (OOM 관점)mybatis 환경에서 얼마나 insert/update해야 하는가 (파라미터 초과 관점)어떤 방법이 가장 빠르고 정확한가 모든 실측은 PostgreSQL 로컬 DB에 테스트 데이터를 채워두고 진행했다.대상 테이블은 t_original(원본, 평문) → t_original_encrypted(암호화된 결과) 형태로, 컬럼은 id, tid, rcv_no, divr_1_val, divr_2_val.. 2026. 7. 27.
쿠키, 세션, JWT 한 번에 끝내기 HTTP는 본질적으로 무상태(stateless) 프로토콜입니다. 요청을 처리하고 나면 서버는 "누가 요청을 보냈는지"를 기억하지 않습니다.하지만 로그인, 장바구니, 결제처럼 "이 사용자가 누구인지"를 계속 알아야 하는 서비스가 늘어나면서이 한계를 극복하기 위한 기술들이 등장했습니다. 바로 쿠키 → 세션 → JWT입니다. 이 글에서는 각 기술이 왜 등장했고 어떤 한계가 있었는지, 그리고 Spring Boot로 어떻게 구현하는지 살펴봅니다. 마지막에는 최근 인증 방식의 대세인 JWT의 보안 이슈(토큰 탈취)와 대응 전략까지 다룹니다. 이 글은 코딩하는 기술사님의 쿠키, 세션, JWT 한 번에 끝내기 (+JWT 탈취와 보안까지) 영상을 요약 정리한 내용입니다. https://youtu.be/t2ZCSCOX.. 2026. 7. 20.
인스타그램 자동 DM 봇 만들기 여정부터 소개 개인 인스타그램 비즈니스 계정 하나를 위한 "댓글 남기면 DM 자동 발송" 봇을 혼자 설계·개발·배포한 기록입니다. 실제로 겪은 두가지 사고에 대해 알아볼게여봇이 자기 자신에게 무한히 답글을 다는 셀프 스팸 루프버튼은 눌리는데 웹훅은 오지 않는 미스터리 1. 무엇을 만들었나인스타그램 비즈니스 계정 하나를 운영하면서, 특정 게시물에 특정 키워드로 댓글이 달리면:댓글에 공개 답글을 달고"팔로우하셨다면 아래 버튼을 눌러주세요" 라는 버튼이 달린 DM을 보내고사용자가 버튼을 누르면 그 순간 실시간으로 팔로우 여부를 다시 확인해서팔로워/논팔로워 분기로 서로 다른 메시지 세트를 발송 "댓글 이벤트 → DM 유도 → 실시간 팔로우 검증 → 분기 발송"이라는흔한 인스타그램 마케팅 계정들이 쓰는 패턴을 직접 구현해본.. 2026. 7. 16.
인스타그램 API 댓글/DM 자동응답 봇 세팅하기 인스타그램 비즈니스 계정에 댓글/DM 자동응답 봇을 붙이려면 크게 두 축을 준비해야 합니다.Meta 개발자 사이트: 앱 생성 → 제품 추가 → 권한/웹훅 설정 → 심사(또는 테스터 등록)내 앱(서버): OAuth 로그인 구현 → 토큰 발급/저장 → 웹훅 수신 & 서명 검증 → 구독 연결하나라도 순서가 꼬이면 "로그인은 되는데 웹훅이 안 옴", "로컬 테스트는 되는데 실제 이벤트가 안 옴" 같은 증상으로 나타납니다. 순서대로 따라가면서, 각 단계에서 흔히 놓치는 부분을 같이 짚겠습니다. 0. 사전 준비물인스타그램 비즈니스 또는 크리에이터 계정 (개인 계정은 아래 API들을 못 씁니다. 설정 → 계정 유형에서 전환)공개적으로 접근 가능한 HTTPS 도메인 (웹훅은 로컬호스트로 못 받습니다. 터널링 도구나 .. 2026. 7. 10.