트랜잭션 6

@Transactional 그리고 트랜잭션

서론 본론 결론 서론 다들 트랜잭션에 관한 고민을 해보신 적이 있으신가요? 저는 서비스 로직을 짜거나, TestCode를 작성하거나 JPA와 같은 ORM을 사용할 때 트랜잭션에 대한 고민들이 많이 있었습니다. " 어떤 단위까지 한 트랜잭션으로 간주해야 할 까?" " 외부 API를 호출하는 로직에서 만약 트랜잭션을 걸고, 해당 로직에서 문제가 발생하면??" " 만약 A 라는 서비스 로직에서 @Transactional 어노테이션을 추가하거나, 추가 하지 않거나 두 결과값이 어떻게 다를까? " " 그럼 과연 어느 서비스 로직에서는 @Transactional을 추가해야하고, 어떤 서비스 로직에서는 추가하지 않아야 할까? " 이렇게 다양한 고민들이 있었습니다. 오늘은 제가 입사하고 맡은 업무에서 경험한 트랜잭션과..

스프링/백엔드 2023.08.16

기술 면접 스터디 6회차 - ( WAS와 Web Server, 트랜잭션 )

목차 0. 웹 서버는 어떻게 동작하나? 1. Was와 Web Server의 차이 2. 트랜잭션은 무엇인가? 0. 웹 서버는 어떻게 동작하나? 0. 클라이언트는 웹 브라우저를 통해 특정 사이트에 접속하기 위해 웹 서버에 요청을 보냅니다. 1. 요청을 접수한 웹 서버에서는 컨텐츠가 정적인지, 동적인지 판단합니다. 2. 정적 컨텐츠면 웹 서버 내부의 디스크에 있는 정보를 취득해 클라이언트로 보내고, 2.1 동적 컨텐츠면 스위치를 경유해 WAS 서버로 요청을 보냅니다. 3. WAS 에서는 요청을 접수하고 자신이 처리할 수 있는 지, DB 접속이 필요한지 판단합니다. 3.1 자신이 처리가 가능하면 요청을 바탕으로 처리 후 웹 서버(web server)로 결과를 파일 데이터로 반환합니다. 3.2 DB 접속이 필요하..

@Transactional 복습 그리고 더 나아가기 (readOnly)

복습 과거에 10분 테코톡을 보고 트랜잭션에 관련된 내용을 정리한 적이 있었다. 그 내용을 우선 다시 복기해보자. 일단 트랜잭션은 한 요청에 대한 작업 단위라고 생각하면 쉽다. 이 트랜잭션이 수행될 때, 중요한 부분이 내부 동작이였는데 DB 커넥션 풀을 이용해서 커넥션 객체를 가지고 오게되고, 이 객체를 이용해서 DB에 요청을 보낸다고 했다. DB 입장에서는 이 커넥션을 하나의 세션으로 생각할텐데 한 기능의 작업 단위를 묶지않으면, 결국 제 각각의 다른 커넥션으로 생각할 것이고, 이는 세션을 처리할 때, 개별 작업으로 처리해버릴 것이다. 그래서 우리가 원하는 기대 값이 나오지 아니할 가능성이 높다. 여기서 가장 중요한 점은 결국 우리가 만들고자 하는 기능을 작업 단위 즉 트랜잭션으로 묶어야 한다는 점이 ..

스프링/JPA 2023.03.11

비관적 락 (Pessimistic Lock )vs 낙관적 락 (Optimistic Lock)

들어가기 낙관적 락 그리고 비관적 락 마무리 들어가기 개발을 하다보면 문득 이런 생각을 할 수 있다. 내가 데이터를 수정해야하는 상황이 생겼는데, 만약에 이 데이터와 관련해서 동 시에 충돌이 일어난다면 어떻게 해야할까? 어떻게 될까? 라는 고민을 해볼 수 있다. 대표적으로 동시성 문제인데, 예시를 들자면 서비스에 있는 좋아요 기능을 계속 누르게되면 찰나의 순간에 똑같은 데이터가 들어갈 여지가 생긴다. 이러한 상황 속에서 백엔드 개발자는 이러한 상황을 예측해서 개발을 진행해야 한다. 이러한 상황속에서 고민한 내용에 관한 학습 내용을 정리하고 기록하고자 한다. 일반적으로 우리는 예기치 못한 상황이 발생할 경우를 대비해서 "예외처리" 라는 것을 한다. 말 그대로 예외가 생겼을 때, next step으로 넘어갈..

[10분 테코톡] - @Transactional

🤥개요 트랜잭션에 대한 이해를 바탕으로 왜 이 트랜잭션이라는 개념이 중요한지를 알게되고 더 나아가 활용의 범주까지 지식의 스펙트럼을 넓히며 면접 및 취업을 대비하기 위해 [10분 테코톡]을 시청 후 본 내용을 정리하고 내 것으로 만들기 위해 작성한 내용입니다. 들어가기 우리는 사용자가 제공한 데이터를 잘 전달받고, 저장해서 이 데이터를 기반으로 서비스를 운영한다. 그럼 과연 이 동작들이 어떻게? 어떠한 방식으로? 왜? 등 여러한 궁금증이 생길 수 있는데 그 속에는 트랜잭션이라는 무서운 놈이 숨어있다. 🤔목차 트랜잭션이란? 🧐 트랜잭션의 성질과 특징 💪 선언적 트랜잭션과 프로그래밍 트랜잭션 😶 마무리 😃 1). 트랜잭션이란? 🧐 트랜잭션은 요청한 작업이 진행되는 일련의 단위이다. 예를들어 내가 요청한 작업..

스프링 2022.12.21

7장 SQL 응용 - (1) 데이터베이스 기본

트랜잭션 트랜잭션은 인가받지 않은 사용자로부터 데이터를 보장하기 위한 DBMS가 가져야하는 특성이자, 작업의 기본 단위로 4개의 특성을 갖고 있다 (원일고영=원자성, 일관성, 격리성(고립성), 영속성) 원자성(Atomicity) : 연산 전체가 모두 정상 실행 or 모두 취소 // Commit, Rollback, 회복성 보장 일관성(Consistency) : 고정요소는 트랜잭션 실행 전과 후의 상태가 같아야 함 // 무결성 제약조건, 동시성 제어 격리성/고립성(Isolation) : 동시에 실행되는 트랜잭션들이 서로 영향을 미치면 안 됌 // -- 영속성(Durability) : 성공이 완료된 트랜잭션의 결과는 영속적으로 DB에 저장되어야 함. 트랜잭션을 제어하는 언어를 TCL(Transaction Co..