모든 기록

6 / 20 페이지
Backend

@Embedded와 @Embeddable로 값 객체 매핑하기

1. 개요 공연 좌석의 위치는 A구역 3열 12번 처럼 구역, 열, 번호가 함께 의미를 만든다. 이 값을 Seat 엔티티에 각각의 필드로 두면 간단해 보이지만, 위치에 관한 검증과 화면 표시 규칙이 엔티티에 섞이기 쉽다. JPA의 @Embeddable 과 @Embedd…

·6분
일상

2026 당근 빌더 밋업 플랫폼 & SRE 후기

2026 당근 빌더 밋업이라는 행사에 참여를 하게 되었다. 이것도 추첨으로 참여할 수 있는 행사여서 몇몇 친구들과 같이 신청을 했는데 나는 떨어졌었다. 사실 당근 인턴도 지원했다가 금방 떨어지긴 했어서 당근이랑 잘 안 맞나 생각했다. 그런데 친구가 참여를 못할 것 같다…

·8분
Backend

Redis 분산 락의 한계와 강한 정합성

1. 락을 얻었다고 항상 안전한 것은 아니다 결제 승인, 리더 선출, 되돌릴 수 없는 외부 명령처럼 두 번 실행되는 비용이 매우 큰 작업 은 "락을 얻었으니 안전하다"고 가정하면 안 된다. 이 글에서는 Redis 락이 실패할 수 있는 지점과, 오래된 작업자를 막는 펜싱…

·10분
Backend

Redis 분산 락 기초와 Redisson 적용

1. 여러 서버에서는 JVM 락만으로 부족하다 쿠폰 발급, 선착순 구매, 재고 차감처럼 같은 자원을 동시에 변경하는 요청은 한 번만 처리되어야 할 때가 있다. 예를 들어 남은 수량이 1개인 쿠폰을 두 요청이 동시에 발급하면, 두 요청 모두 "아직 남아 있다"고 판단할…

·12분
Backend

Redis와 Memcached, 캐시 서버 선택하기

1. 캐시는 원본 저장소 앞에 두는 빠른 복사본이다 상품 상세, 인기 게시글, 사용자 프로필처럼 자주 읽히지만 매번 바뀌지는 않는 데이터를 요청마다 데이터베이스에서 조회하면, 데이터베이스 연결과 디스크 I/O에 요청이 집중된다. 캐시(Cache) 는 자주 쓰는 데이터를…

·12분
토비의 스프링부트 - 이해와 원리

토비의 스프링부트 정리 (2) - 독립 실행형 스프링 애플리케이션 만들기

1. 개요 앞 글에서는 내장 Tomcat과 서블릿을 직접 만들고 연결했다. 이 방식은 웹 요청이 처리되는 원리를 이해하기에 좋지만, 애플리케이션이 커질수록 객체를 만들고 연결하고 서버를 시작하는 코드가 main() 에 계속 쌓인다. 이 글에서는 이 작업을 스프링 컨테이…

·8분
Backend

낙관적 락과 비관적 락

1. 동시에 같은 데이터를 수정하면 문제가 생긴다 여러 요청이 같은 데이터를 동시에 읽고 수정하면 한 요청의 변경 내용이 사라질 수 있다. 예를 들어 재고가 10개일 때 두 사용자가 동시에 1개씩 주문한다고 생각해 보자. 두 번의 주문이 처리됐지만 최종 재고는 8이 아…

·7분
Kubernetes

Kubernetes (39) - Helm Chart를 직접 만들어 MariaDB 배포하기

공개 Chart를 설치하는 데 익숙해지면 다음 질문이 생긴다. "내가 만든 애플리케이션도 이렇게 한 명령으로 설치할 수 있을까?" 답은 Chart를 직접 만드는 것이다. Chart를 만든다는 말은 대단해 보이지만, 실제로는 이미 쓰던 YAML에서 환경마다 달라지는 값만…

·9분