| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
- HashMap
- 자바스크립트
- junit
- 테스트자동화
- 단위테스트
- Java
- 정규식
- junit5
- 자바
- 배열
- 자바문법
- list
- math
- ArrayList
- SpringBoot
- javascript
- IntelliJ
- 스프링부트
- js
- Visual Studio Code
- java테스트
- Array
- CSS
- Eclipse
- string
- 인텔리제이
- html
- vscode
- input
- 문자열
- Today
- Total
목록2026/03/21 (2)
어제 오늘 내일
웹 개발을 하다 보면 사용자의 요청에 실시간으로 응답하는 것(OLTP) 외에, 뒤에서 묵묵히 데이터를 처리하는 작업(Batch)이 반드시 필요합니다.정산: 매일 밤 매출 집계알림: 휴면 회원 전환 안내 메일 발송데이터 마이그레이션: 구형 DB에서 신형 DB로 데이터 이관이런 작업을 단순히 List에 담아서 for 문을 돌리면, 메모리가 터져버립니다. Spring Batch는 이 문제를 해결하기 위해 태어났습니다.1. 배치가 일반 로직과 다른 점 (Chunk 지향 처리)Spring Batch의 핵심은 "데이터를 한 번에 다 읽지 않는다"는 것입니다.대신 청크(Chunk)라는 덩어리로 잘라서 처리합니다.일반적인 방식: 100만 개 조회(메모리 펑!) -> 100만 개 가공 -> 100만 개 저장Spring ..
쇼핑몰이나 티켓팅 서비스를 개발할 때 가장 무서운 순간이 언제일까요? 바로 "재고 관리"입니다.재고 = 재고 - 1이라는 아주 간단한 로직도, 수천 명이 동시에 누르면 재앙(Race Condition)이 발생합니다.오늘은 자바의 synchronized 키워드로는 해결할 수 없는 다중 서버 환경에서의 동시성 문제를 Redis와 Redisson 라이브러리를 사용해 완벽하게 해결해 보겠습니다.1. 왜 동시성 문제가 생기나요? (Race Condition)가장 흔한 재고 감소 로직을 볼까요?// 재고 감소 로직 (문제 있음!)public void decrease(Long id) { Stock stock = stockRepository.findById(id).orElseThrow(); stock.dec..
