Contact
- LinkedIn: https://www.linkedin.com/in/taehyeong-lee-951810190/
- Email: jsonobject@gmail.com
- Seoul, South Korea
TOC
Recent Posts
-
Spring Boot, Redis를 이용하여 API 중복 실행 요청 방지 로직 구현하기
개요 API를 운영하다보면 가장 흔하게 발생하는 이슈가 아주 짧은 찰나에, 동일한 API 요청이 거의 동시에 들어오는 것이다. 가장 일반적인 원인은 대개 엔드 유저가 브라우저 상에서 특정 버튼을 아주 빠르게 연속으로 클릭하는 것이고, 크리티컬하게는 특정 엔티티의 상태 변화를 유발하는 아주 미세한 차이의 Race Condition이 발생하는 경우도 있다. API는 이런 상황에 대비하여...
-
Spring Boot, Amazon S3에 최대 5TB 대용량 파일 Multipart 업로드 구현하기
개요 클라이언트-서버 관계에서 파일 업로드 구현시 파일의 최종 저장 위치가 Amazon S3일 경우, 서버는 클라이언트에게 제한된 시간을 가지는 업로드 전용의 Presigned URL을 제공하여 파일 업로드 처리를 서버가 직접 부담하지 않고 S3에게 전가할 수 있다. 이를 통해 서버 입장에서는 보안과 서버 자원 절약이라는 2마리 토끼를 모두 잡을 수 있다. 한가지 이슈는...
-
Kotlin, 코루틴 사용법 정리
개요 백엔드 엔지니어로서 프로덕션 레벨에서 쓰레드 풀을 이용한 비동기 및 병렬 처리에 충분히 만족하고 있었기 때문에, 코루틴을 따로 공부하지 않고 않았는데 코루틴을 이용하려 병목 현상을 효과적으로 해소하는 지인을 보고 코루틴 공부를 시작하게 되었다. 코루틴에 대한 첫 인상은 완전히 새로 발명된 비장의 무기라는 느낌보다는 쓰레드 사용을 정말 쉽게 해준다는 것이었다. 의식적으로...
-
Spring Boot, MySQL, 엔티티 스키마 변경 없이 Bulk Insert로 속도 개선하기
개요 현재 내가 몸 담고 있는 프로젝트는 세금 계산과 관련되어 한 번에 수십에서 수백만의 엔티티 생성이 발생하는 비지니스 로직이 존재하며, 레코드 생성의 속도가 곧 경쟁력이 되기에 최적화에 있어 아주 중요한 요소이다. 이번 글에서는 기존에 대량의 엔티티가 단건으로 저장되던 것을 Buik Insert로 개선하는 과정을 정리하였다. MySQL 커넥션 스트링 추가 MySQL은 반드시...
-
Windows 11, 첫 설치 방법 정리
Windows 11 설치 Windows 11 설치를 위한 첫 시작은 Windows 11 설치 프로그램을 다운로드하는 것이다. 여기를 클릭하여 다운로드한다. 준비물로는 사용하지 않는 8GB 이상 크기의 USB 미디어가 필요하다. (제품 키 등록은 설치가 완료된 후 진행한다.) 다운로드한 MediaCreationToolW11.exe 을 실행 → 사용할 미디어 선택: [USB 플래시 드라이브] 선택 → (재시작 후 F2...