[Spring JPA] JPA Transactional 좀 더 알기
·
Spring/JPA
현재 `SpringBoot`를 사용하시는 대부분의 개발자라면, 대부분 `Spring Data JPA`를 사용할 것이다.또한, `Spring`에서 제공해주는 `@Transactional`이라는 어노테이션을 많이 활용할 것이다. 그런데, 이것저것 공부를 하며 내가 몰랐던 `JPA Transactional`에 관한 많은 지식을 카카오페이의 테크 블로그를 통해 알게 되었다. 따라서, 이번 포스팅 내용은 해당 블로그에서 얻은 지식을 정리하는 것이다.추후, 진행중인 `StudyWithMe`에도 적용해 볼 예정이다. 그럼 시작해보자.@Transactional이란?`Spring Transactional annotation`, 이하 `@Transactional`은 `Spring`에서 메서드의 원자성을보장하기 위해 정의된..
[Spring Data] Redis Lock을 적용해보자 - 1
·
Spring/동시성 & Lock
`백엔드/서버` 개발자라면 반드시 `동시성` 문제를 만나게 된다. 특히, 요즘 `K8s` 환경을 자주 사용하는데 아무리 애플리케이션에서 `동시성` 발생 대비를 해도다른 `Pod`에서 같은 `DB`에 접근하면 동시성 문제를 처리하는 것이 어렵다.  위의 그림과 같은 경우 `DB` 또는 `Redis`에서 제공하는 `Lock`을 활용하여 데이터의 동시성 접근을 제어해야 한다. `DataBase Lock`을 이용할 경우 추가적인 인프라 구성요소 없이 `동시성`을 해결할 수 있다는 장점이 있으나`Lock` 획득을 위해 `Waiting`되는 `DataBase Connection` 증가로 인해 부하가 발생할 수 있다. `Redis`를 이용하여 `Distributed Lock`을 사용할 경우 `DataBase Conn..
[Spring] synchronized 키워드를 활용한 동시성 문제 해결 및 한계 - 2
·
Spring/동시성 & Lock
2024.09.22 - [Spring] - [Spring] synchronized 키워드를 활용한 동시성 문제 해결 및 한계 - 1 [Spring] synchronized 키워드를 활용한 동시성 문제 해결 및 한계 - 1동시성 처리우리가 웹 서비스를 개발하다보면 수많은 종류의 동시성 문제를 만날 수 있다.주문을 도메인으로 갖는 서비스에서 상품 재고 동시성 처리선착순 쿠폰에 관한 동시성 처리한정판 등hdbstn3055.tistory.com  우리는 이전 포스팅에서 아래 내용까지 살펴보았다. 분산 환경에서의 synchronized 한계 synchronized 키워드는 단일 인스턴스 상에서 멀티 쓰레드가 Critical Section에 접근하는 경우 동시성 제어가 가능하다.하지만, 우리는 SPOF(단일 장애점..
[Spring] synchronized 키워드를 활용한 동시성 문제 해결 및 한계 - 1
·
Spring/동시성 & Lock
동시성 처리우리가 웹 서비스를 개발하다보면 수많은 종류의 동시성 문제를 만날 수 있다.주문을 도메인으로 갖는 서비스에서 상품 재고 동시성 처리선착순 쿠폰에 관한 동시성 처리한정판 등등 동시성 문제는 공유 자원을 동시에 접근하는 과정에서 `Critical Section`에서 발생하는`Race Condition`으로 인한 문제를 의미한다. 따라서, 이번 포스팅에서는 JVM 환경에서 제공하는 `synchronized` 키워드를 사용하여 동시성을 제어하고동시에 한계에 관해 설명하려 한다.  설명에 앞서, 프로세스와 스레드에 대해서 간단하게 짚고 넘어가자.  Proccss와 Thread 프로세스는 무엇일까? 디스크에 파일 형태로 존재하던 프로그램이 주기억장치에 적재되면 그걸 프로세스라고 한다.적재된 프로세스는 `..