2025/04 5

안드로이드 개발 (45) Alarm Manager 심층 분석

안드로이드 알람 어플리케이션의 꽃 Alarm Manager 에 대해 알아보기전에 두가지에 대해 먼저 알아보겠습니다.Doze 모드Doze 는 기기의 충전선을 뽑고 화면을 끈채 기기를 사용하지 않으면, Android가 배터리를 아끼기 위해 백그라운드 작업을 단계적으로 제한 하는 절전 모드 입니다. 배터리를 아끼려고 네트워크,CPU,일반 알람,Job/WorkManager 작업을 전부 잠시 미뤄둡니다. 시간이 지나면 잠깐 깨워 ( maintenance window ) 밀린 일만 몰아서 처리하고 다시 잠듭니다.Doze는 두가지 진입 단계가 있습니다.1) Light Doze (화면 OFF 직후 + 충전X) Light Doze 는 네트워크 차단, Job/Sync 작업을 연기 하고 몇 분 간격으로 한꺼번에 처리하는 ..

서버개발 (2) 실제 운영 경험담: Spring Boot 로그인 PessimisticLockException

안녕하세요, 개발자 SEOBI 입니다. 전 회사에서 프로젝트 전반을 책임졌던 서버 리딩 경험은 제 커리어의 가장 큰 설렘이었습니다. 사용자와 거래 데이터를 지켜내는 그 긴장감과 성취감을 다시 느끼고 싶어, 공부한 것들을 블로그에 아낌없이 공유하려 합니다. https://gift123.tistory.com/89 서버 개발 (1) MySQL - 트랜잭션 잠금 관리안녕하세요, 개발자 SEOBI 입니다. 전 회사에서 프로젝트 전반을 책임졌던 서버 리딩 경험은 제 커리어의 가장 큰 설렘이었습니다.사용자와 거래 데이터를 지켜내는 그 긴장감과 성취감을 다시gift123.tistory.com 사실 위 공부를 했었던 이유는 과거 운영환경에서 일어난 Pessimistic Lock 장애가 있었기 때문 입니다. 당시 재현이 ..

서버 Server 2025.04.23

서버개발 (1) MySQL - 트랜잭션 잠금 관리

안녕하세요, 개발자 SEOBI 입니다. 전 회사에서 프로젝트 전반을 책임졌던 서버 리딩 경험은 제 커리어의 가장 큰 설렘이었습니다.사용자와 거래 데이터를 지켜내는 그 긴장감과 성취감을 다시 느끼고 싶어, 공부한 것들을 블로그에 아낌없이 공유하려 합니다.1. 잠금(lock) 이란?잠금은 비유하자면 트랜잭션이 데이터(행·범위·테이블)를 자신만 안전하게 쓰거나 읽기 위해 ‘예약표’를 꽂아 두는 것입니다. 다른 트랜잭션이 같은 구역에 들어오면, 꽂혀 있는 예약표(잠금)와 호환되는지를 보고 — 호환되면 통과, 안 되면 대기(LOCK WAIT) 시킵니다. LOCK WAIT 된 트랜잭션은 원래 트랜잭션의 COMMIT 이 끝나야 다시 쿼리가 실행됩니다.'왜 잠근다고 표현할까?'공유(Shared, S) 잠금 - "읽기..

서버 Server 2025.04.22

안드로이드 개발 (44) Room @Transaction 에 대해 알아보자

@Upsert로 INSERT 또는 UPDATE 한 줄에 사용법@Upsert // Room 2.7.0+suspend fun save(user: User): Long 위와 같이 편리하게 사용하는 법이 있습니다. 동작 원리: Room이 생성한 EntityUpsertionAdapter가 내부적으로 기본 키(PK)나 고유 제약조건(unique) 예외가 없으면 INSERT, 예외 발생 시 (SQLiteConstraintException) UPDATE를 실행합니다. 그래서 같은 트랜잭션 안에서 UPDATE.. WHERE pk = ? 실행 합니다.Insert 가 실행된 경우 리턴 값은 row id , Update 가 실행된 경우 -1 입니다. 성공 여부나 업데이트된 컬럼 수를 알기 위해..