728x90
반응형
[트러블 슈팅] 다중 인스턴스일 때 동시성 문제 해결2026-03-08 09:41:06기존 코드// 동일 JVM 내부에서 같은 Flow ARN에 대한 describe→start/stop 경쟁을 차단private static final ConcurrentHashMap FLOW_LOCKS = new ConcurrentHashMap();private static ReentrantLock lockForArn(String arn) { return FLOW_LOCKS.computeIfAbsent(arn, k -> new ReentrantLock());}public String updateStartStatus(String arn) { ReentrantLock lock = lockForArn(arn); lock.lock(); try { channe..
Spring Cache 사용기록2026-02-22 19:58:371) 개발 환경 구성개발 환경 버전java17Spring Boot3.1.2빌드관리도구Maven 3.11.0개발 툴IntelliJ IDEA 2025.3.2spring-boot-starter-cache4.1.0-M1com.github.ben-manes.caffeine3.2.32) API 캐싱, Spring Boot Cache 이해💡API Caching - API의 호출에 따라서 캐시를 이용하여 '서버의 부하를 줄이고 API 성능을 최적화' 하여 '응답시간을 단축' 시키는 역할 수행💡Spring Boot Starter Cache - 자주 사용되는 데이터를 '캐시 메모리'에 저장하여 빠른 검색을 가능하게 하는 기능 제공 - 해당 캐시에 저장되는 데이터를 CacheManager를 통하여 메모리 뿐만 아니라 디..
[트러블 슈팅] JPA UPDATE 벌크 연산 후 조회 안됨2026-02-01 14:14:58기존 코드@Transactional(propagation = Propagation.REQUIRED, rollbackFor = {Exception.class}, transactionManager = "ncpTransactionManager")public void testMethod(String ranId, String uId) { jpaRepository.save(entity); ... mybatisDao.softDeleteAll(ranId);}Jpa에서는 saveAll() 과 같은 벌크 연산을 update에는 제공해주고 있지 않기 때문에 다수의 업데이트 쿼리를 방지하고자 사용단일 쿼리INSERT INTO table (col1, col2...) VALUES (val1, val2...);IN..
[트러블 슈팅] 재배포 없이 스케줄링 날짜 변경하기2026-01-31 17:10:37기존 방식app: cron: saveDailyA: "0 0 1 * * *" saveDailyB: "0 1 1 * * *" saveMonthlyA: "0 0 1 1 * *" saveMonthlyB: "0 1 1 1 * *" createExcel: "0 2 1 1 * *"@Scheduled(cron = "${app.cron.saveDailyA}")public void saveDailyA() { LocalDate today = LocalDate.now(); service.saveHistory(today);}@Scheduled(cron = “..") 이 방식은 서버 실행시 한번만 스캔되기 때문에 cron값을 동적으로 변경할 수 없고, 설정 파일 변경 후 재배포를 진행해야 ..
[트러블 슈팅] JWT 유효기간보다 빨리 만료되는 문제 해결2026-01-11 17:21:371️⃣ JWT 기본 개념 간단 정리JWT란?JWT(JSON Web Token)는 인증을 위한 토큰 방식서버가 로그인/회원가입 성공 시 토큰을 발급하고, 이후 요청에서 토큰으로 사용자를 식별구조는 Header / Payload / Signature 로 구성됨단계 내용회원가입 요청사용자 이메일, 닉네임, 비밀번호 등 회원 정보 입력서버에서 JWT 생성- Header: { "alg": "HS256", "typ": "JWT" }- Payload: { "email": "user@example.com", "nickname": "dohyuk", "exp": 1715505600 }- Signature: HMACSHA256(Header + Payload + Secret)클라이언트로 전달Authorization: Bear..
Chained Transaction Manager deprecated2026-01-04 17:10:491️⃣ ChainedTransactionManager는 정확히 무엇을 하는가ChainedTransactionManager는 여러 개의 PlatformTransactionManager를 하나처럼 묶어서 트랜잭션을 제어한다.ChainedTransactionManager( txManager1, // 예: JPA1 txManager2 // 예: JPA2)위와 같은 구조일 때 트랜잭션 처리 순서는 아래와 같다.트랜잭션 시작txManager1.begin()txManager2.begin()커밋 / 롤백(역순)txManager2.commit()txManager1.commit()javadoc을 보면 가장 깨질 가능성이 높은 트랜잭션 매니저를 마지막에 둬야한다고 되어있다. 2️⃣ 이 구조의 치명적인 문제 부분 ..
AWS Media Service 정리2025-12-25 16:32:32전체 아키텍처전체 서비스 흐름 한 줄 요약OBS 등 외부 송출 → MediaConnect Flow → MediaLive(Input/Channel) → MediaPackage → CDN → 플레이어1. MediaConnect Flow – 네트워크 안정 계층[개념]AWS 전용 네트워크를 사용라이브 스트림을 안정적으로 전달하기 위한 네트워크 전용 서비스MediaLive Channel과 직접 연결 ❌MediaLive Input에 연결됨순수 전송 계층[역할]지연(latency) 최소화공용 인터넷의 불안정성 회피패킷 손실 복구재시도 / 장애 격리📌 Flow는 Channel 보다 먼저 생성하고, Channel 생성에 실패해도 Flow는 유지되어야 함 (트랜잭션 분리 / 재사용 목적)2. MediaLive Input..
REST란 무엇인가요?2025-08-25 15:08:26REST(Representational State Transfer) 는 자원의 표현을 이용하여 상태를 주고받는 것을 의미합니다. 여기서 자원이란 소프트웨어가 관리하는 모든 것을 의미하며 자원의 표현은 자원을 나타내기 위한 이름을 의미합니다. 가령, 서버가 관리하는 주문 데이터는 order 라고 표현할 수 있습니다. 최근에는 일반적으로 자원의 상태를 나타내기 위해 JSON 포맷을 사용합니다. REST는 네트워크 상에서 클라이언트와 서버의 통신 방식 중 하나이며, HTTP 프로토콜을 사용합니다. 구체적으로는 HTTP URI를 활용하여 자원을 명시하고 HTTP METHOD를 통해 CRUD 연산을 적용하는 것을 의미합니다. API(Application Programming Interface) 란 컴퓨터 프로그램..
728x90
반응형