목록Tech (42)
우당탕탕

[동시성 제어 3편] 낙관적 락(Optimistic Lock)안녕하세요!지난 글에서는 비관적 락(Pessimistic Lock)에 대해 알아보았습니다. 오늘은 그 반대 성격의 낙관적 락(Optimistic Lock)을 실전 코드 중심으로 정리해 보려고 합니다.이전 편 보러 가기[동시성] 동시성 제어란? - 1편 (데이터가 꼬이지 않는 백엔드의 첫걸음)[동시성 2편] 비관적 락(Pessimistic Lock) - JPA 스프링으로 경험해 보는 실전 가이드1. 낙관적 락(Optimistic Lock)이란?이름 그대로 "충돌이 자주 일어나지 않을 것"이라는 낙관적 가정!여러 트랜잭션이 동시에 데이터를 읽고, 수정 시점에만 충돌이 있는지 검사▶️ 행(row)을 잠그지 않고, 데이터를 자유롭게 읽게 한 뒤, 커밋..

[동시성 2편] 비관적 락(Pessimistic Lock) 안녕하세요!이전 편에서는 "동시성 제어란?" 이란 내용으로 동시성이 무엇인지 알아보았습니다. 이제 본격적으로 첫 번째 실전 대책, 비관적 락(Pessimistic Lock)에 대해 알아보도록 하겠습니다.이전 편 보러 가기[동시성] 동시성 제어란? - 1편 (데이터가 꼬이지 않는 백엔드의 첫걸음)1. 비관적 락이란? 말 그대로 "충돌이 난다고 미리 가정"하고, 데이터를 사용하는 동안 다른 트랜잭션의 접근 자체를 막는 방식입니다.트랜잭션이 데이터를 읽거나 변경하는 동안 DB가 자동으로 행(row) 또는 테이블 전체에 락을 건다 → 데이터 일관성 100% 보장(속도보다 ‘정확’ 우선) → 다른 트랜잭션은 내 작업이 끝날 때까지 ‘대기’..

동시성 제어란? - 데이터가 꼬이지 않는 백엔드의 첫걸음 안녕하세요!오늘은 백엔드 실무에서 꼭 한 번은 마주치는 동시성 제어에 대해서 작성해 보려고 합니다. 회사에서 과제형식으로도 많이 나오는 문제이고 현금지급, 쿠폰 이벤트등과 같은 서비스를 만들 때 꼭 적용되어야 하는 부분이라 정독해 보시는 것을 추천드립니다. 1편에서는 기본적인 내용 설명을 진행하며 2~4편은 해결방법 설명과 예시코드를 작성해 보려고 합니다.1. 동시성이란 무엇인가?동시성(concurrency)이란, 여러 사용자가 ‘동시에’ 데이터나 시스템 자원(예: DB, 메모리 등)에 접근/변경을 시도하는 상황을 의미합니다.예시: 쇼핑몰 재고 감소• 유저A, B가 동시에 “마지막 1개 남은 상품”을 장바구니에 담고 동시에 주문을 진행 • 둘 다 ..

1JPA로 게시글 CRUD 만들기 – 10분 만에 따라 하기 안녕하세요 오늘은 백엔드를 처음 시작하는 분들도 무리 없이 따라 할 수 있도록, Spring Data JPA를 활용한 게시글 CRUD(Create, Read, Update, Delete) 예제를 준비했습니다. 해당 프로젝트를 시작하기 앞서 아래 링크에서 프로젝트 구성을 먼저 진행해 주세요! (프로젝트 구성이 되어있다면 스킵하셔도 됩니다) 프로젝트 구성은 해당 링크에서 구성하실 수 있습니다! -> https://mozzi-devlog.tistory.com/461. CRUD가 뭐예요?• C(Create): 데이터 생성 → 블로그 게시글을 새로 작성하는 것처럼 DB에 새로운 데이터를 넣는 작업을 의미해요.• R(Read): 데이터 읽기(조회) → ..

코틀린 Coroutines로 실전 백엔드 서비스 비동기 처리 완전정복안녕하세요! 오늘은 백엔드 개발을 처음 접하는 분들도 쉽게 이해하도록, 코틀린 Coroutines(코루틴)를 활용한 비동기 프로그래밍 방법을 작성해 보겠습니다.“비동기”, “코루틴” 같은 용어가 어렵게 느껴질 수 있지만, 최대한 쉬운 일상 예시와 실습 예제까지 활용해 한번 작성해 보도록 하겠습니다.1. 동기와 비동기란?예를 들어, 편의점 계산대에 고객이 줄 서서 차례대로 계산한다고 생각해 보겠습니다.이게 바로 동기 처리 방식입니다. 한 사람의 계산이 끝나야 다음 사람이 계산할 수 있죠. 반면, 계산대가 여러 대 있어서 여러 사람이 동시에 계산할 수 있다면? 이건 바로 비동기 처리라고 할 수 있어요. 서버도 마찬가지입니다. 만약 동기로만 ..

Java 프레임워크 비교분석 Spring Boot vs Quarkus vs MicronautJava 생태계는 마이크로서비스, 클라우드 네이티브 시대에 맞춰 더욱 빠르고 가벼운 프레임워크가 등장하며 변화하고 있습니다. 이번 글에서는 Spring Boot, Quarkus, Micronaut 세 프레임워크를 성능, 생태계, 개발자 경험, 활용 예시까지 실전 중심으로 비교 분석해 보겠습니다.소개Spring Boot가장 대중적이고 성숙한 Java 프레임워크입니다.Spring 생태계(Spring Security, Spring Data, Spring Cloud 등)와의 통합이 뛰어나며, 풍부한 공식 문서, 커뮤니티, 다양한 라이브러리를 가지고 있습니다. SpringBoot의 경우 대규모 엔터프라이즈, 복잡한 업무 시..