[TIL] 트랜잭션·Redis 정합성, TOCTOU, 보상 트랜잭션 — #150에서 배운 백엔드 포인트

DB 트랜잭션과 Redis 정합성, TOCTOU 경쟁 조건, self-invocation, 보상 트랜잭션, DB UPDATE를 활용한 뮤텍스 등 #150 구현에서 정리한 백엔드 핵심 포인트입니다.

📝 TIL (Today I Learned)
DB 트랜잭션과 외부 시스템(Redis)이 함께 움직일 때, “원자성”과 “정합성”을 어떻게 지켜야 하는지 #150 구현에서 다시 정리했다.

[TIL] Spring Events, @Async, Redis, STOMP — #148·#149에서 배운 백엔드 포인트

Spring Events(@TransactionalEventListener, AFTER_COMMIT), @Async와 LazyInitializationException, Redis ZSET·Lua·TOCTOU, STOMP WebSocket 사용자별 전송, 스케줄러 설계 등 #148·#149 구현에서 정리한 백엔드 포인트입니다.

📝 TIL (Today I Learned)
트랜잭션 경계를 이해하고, Redis에서 원자성을 보장하며, WebSocket 세션 상태를 고려한 분산 환경의 실시간 알림을 다루면서 정리한 내용이다.

[친구하자] @Transactional 안에서 외부 네트워크를 호출하면 안 되는 이유

@Transactional 범위 안에서 외부 네트워크 호출(Gemini WebSocket)을 처리했다가, DB 커넥션 점유 시간이 길어져 커넥션 풀 고갈 위험이 생긴 문제와 해결(TransactionTemplate)을 정리합니다.

@Transactional 범위 안에 외부 네트워크 호출을 끼워 넣으면 DB 커넥션 풀이 고갈될 수 있다. 그리고 “메서드만 분리하면 되겠지”라는 생각은 Spring의 프록시 구조(self-invocation)에 막힌다.

[TIL] 멀티스레드 Race Condition과 AtomicBoolean (volatile의 한계)

멀티스레드 환경에서 volatile의 한계(가시성 vs 원자성)와 check-then-act 레이스 컨디션을 AtomicBoolean.compareAndSet(CAS)으로 해결하는 방법을 정리했습니다.

📝 TIL (Today I Learned) \n+> volatile만으로는 해결되지 않는 문제가 있다. "가시성"과 "원자성"은 다르고, check-then-act 패턴이 섞이면 레이스 컨디션이 터진다. 이걸 AtomicBoolean.compareAndSet으로 정리해 본다.

[TIL] ArrayDeque vs ArrayBlockingQueue — 코드리뷰로 배우는 Java Queue 정리

ArrayDeque와 ArrayBlockingQueue의 차이, 코드리뷰에서 발견한 OOM 위험, 그리고 Reactor Sinks 버퍼로 ArrayBlockingQueue를 선택한 이유를 정리했습니다.

📝 TIL (Today I Learned)
“OOM 방지”라고 주석을 달았는데, 실제로는 OOM이 날 수 있는 코드가 되어 있었습니다. 코드리뷰 한 줄이 Java Queue의 핵심 차이를 알려 준 경험을 정리합니다.

[친구하자] OkHttp vs Spring WebFlux WebSocket — 우리가 starter-webflux를 선택한 이유

Gemini Live API를 WebSocket으로 연동하면서 OkHttp와 Spring WebFlux WebSocket 클라이언트를 비교하고, 우리가 spring-boot-starter-webflux를 선택한 이유를 정리했습니다.

Gemini Live API를 WebSocket으로 연동하면서 클라이언트 라이브러리 선택에 대한 고민을 정리합니다.

[TIL] Android(Capacitor) HTTPS 전용 설정 · Manifest merger · usesCleartextTraffic과 CORS

Capacitor Android 앱에서 HTTPS만 사용하도록 usesCleartextTraffic을 false로 설정할 때, 카카오 SDK와의 Manifest merger 충돌을 tools:replace로 해결하는 방법과, CORS와의 관계를 정리했습니다.

📝 TIL (Today I Learned)
Capacitor로 빌드한 Android 앱에서 HTTPS만 사용하도록 보안 설정을 바꾸다가, 카카오 SDK와 Manifest merger 충돌이 났고, tools:replace로 해결했다.
이 과정에서 usesCleartextTraffic이 무엇인지, CORS와는 어떻게 다른지까지 정리해 본다.

[친구하자] CI/CD 파이프라인 구축기: GitHub Actions + Docker + AWS ECR/EC2 배포 자동화

이전 글에서 다룬 CI/CD·Docker·ECR·EC2에 이어, 실제 파이프라인 구축 과정과 EC2 배포 시 겪은 트러블슈팅을 정리했습니다.

이전 일기: Android 앱을 만들며 배운 CI/CD와 AWS EC2·ECS에서 CI/CD, Docker, ECR, EC2 개념과 전체 흐름을 다뤘다.
이번에는 실제로 파이프라인을 구축한 과정배포하면서 겪은 트러블슈팅을 중심으로 정리한다.

[친구하자] Android 앱을 만들며 배운 CI/CD와 AWS EC2·ECS 이야기

친구하자 프로젝트 출시를 준비하며 CI/CD를 도입하고, Docker, EC2, ECS, ECR 등 AWS 인프라를 활용한 배포 흐름을 정리했다.

Pagination