Home
Alexander Choi
Cancel

배치 처리 성능 최적화 if kakao 2022

배치 처리 시에는 대량의 데이터를 처리하는 경우가 대부분이다. 하지만 많은 개발자가 배치 처리 성능에 대해 쉽게 생각한다. 100개의 데이터는 한번에 처리할 수 있지만 1000만개의 데이터는 한번에 처리 할 수 없다. 그래서 페이징 처리를 해서 청크 단위로 처리한다. 보통 mysql에서 청크 처리를 하려면 페이징 처...

메시지를 안전하게 전달하기 Transaction Outbox Pattern

결제 모듈에는 결제 결과를 각 서비스에 전달하는 기능이 있다. 현재 메시지는 동기식으로 결제 완료 후 1회 전달되며, 각 서비스에서 콜백 처리 불가가 되더라도 재시도 해주지 않는다. [!info] PG사에서는 응답코드가 200이 아니면 결과 메시지를 재전송 해주고 있다. 카드 결제, 네이버페이 등 동기로 작동하는 기능은 1회 동기로 전달하는...

NAT Gateway Connection Rest 이슈 분석

어느날 부터 개발, QA환경 구독결제 스케줄러에서 Connection Reset 에러가 발생했다. 스케줄러는 결제모듈에 HTTP를 통해 결제 요청을 하게 되는데 첫번 째 요청만 실패하고 그 다음 요청은 성공하는 현상을 보이고 있었다. 원인을 찾아서.. 왜 갑자기 잘 되던 소스가 문제를 일으키는지 찾기 시작했고 인프라팀에서 인프라를 변경한 후 부터 ...

Insert...select duplicate key update Deadlock에 대하여

문제 insert....select duplicate key update 사용 시 Deadlock이 발생할 수 있음 insert into member (member_id, name, age) select * from member as c where name = 'choi' on duplicate key update age = c.age...

JPA @Converter Mysql Json Type

Mysql Json 컬럼을 JPA Entity Field에서 객체로 변환하는 방법 찾아보니 대표적으로 2가지 방법 GitHub - vladmihalcea/hypersistence-utils @Converter @Converter로 하면 의존성 추가 없이 가능하고 Json 형식 자체는 고정이기 때문에 2번째 방법으로 진행 첫번째 방...

UriComponentsBuilder Encoding

A 서비스에서 B 서비스로 부터 특정 행동을 할 수 있는 URL을 받아서 다시 B 서비스로 요청을 하는 로직을 개발하던 동료분의 에러를 찾다가 발견한 이슈..? 예시 B-서비스로 부터 받은 URL https://example.com?query=i-am-te%2Fster 다시 요청한 URL ...

DDL ADD COLUMN ALGORITHM

운영환경 테이블에 새로운 컬럼을 추가 해야하는 경우가 생겼다. 운영환경에 DDL을 실행하게 되면 운영 중 환경에 문제가 생길 수 있기 때문에 조사를 했다 Online DDL Algorithm 서비스 중지 없이 DDL이 가능한 Online DDL Algorithm 종류 수행되는 방식에 따라서 주로 성능적인 차이를 보인다. 1. Instant Mys...

Spring Security CORS Exception

서비스에서 QA 중 CORS 오류가 발생 Exception java.lang.IllegalArgumentException: When allowCredentials is true, allowedOrigins cannot contain the special value “*” since that cannot be set on the “Access-Cont...

MySQL ONLY FULL GROUP BY

발견 경로 다른 환경 DB에서는 실행되는 쿼리가 로컬 docker DB에서는 실행되지 않는 경우를 발견 1Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'COLUMN' which is not functionally dependent on c...

Transaction & Lock

Real MySQL 8.0 (1권) - YES24 을 읽고 정리했습니다. 5. Transaction & Lock Transaction 트랜잭션은 작업의 완정성을 보장해주는 것이다. 논리적인 작업 셋 자체가 100% 적용되거나 (COMMIT을 실행했을 때) 아무것도 적용되지 않아야 (ROLLBACK 또는 트랜잭션을 ROLLBACK 시키는 오류...