일단 해보고, 아니면 뭐

실패했어도 배웠으면 실패가 아냐.

무한한 개발세계 여행기

lock 2

Concurrency Problem 올바른 대응방법 (1) - Lock

동시성 이슈 문제를 해결했던 업무 회고를 작성했던 지난 포스팅에 이어서 동시성 이슈 문제의 해결 방법 중 하나인 Lock이라는 거에 대해서 좀 더 자세히 알아보고자 한다. 지난 포스팅에서 나는 동시성 이슈를 JPA의 Lock Annotation을 이용하여 대응을 하였다. 동시성 이슈에 대해서 공부 하다보면 대응을 위해서 Redis 데이터베이스를 썼다는 이야기가 많이 나온다. 대략적인 이유를 보면 '단일 스레드 처리 방식과 데이터 잠금의 차이'라고 나와있다. 나는 그래서 Lock을 사용하고자 했던 거고 이번 기회에 Lock에 대해 더 공부를 하게 되었다. Lock? Lock이란 트랜잭션 처리의 순차성을 보장하기 위한 방법으로, 같은 데이터에 동시에 접근하는 경우 데이터의 일관성과 무결성의 유지를 위해 사용..

Programing/Java 2022.09.09

하나의 결제건이 다중 결제가 된다면? - Concurrency Programming

이직을 완료했다! 아직 출근 초기라 일이 없는 이 여유로움을 틈타 포스팅을 하고자 한다. 오늘의 주제는 '동시성'이다. 이전 회사에서 결제시스템을 연동하고 정기결제 즉시결제 기능을 개발하면서 정기결제와 즉시결제가 동시에 이뤄졌을 때 결제가 두 건 다 처리되는 동시성 이슈가 있었다. 아직 운영되기 전이라 다행이지 운영되던 서비스였다면 정말 아찔했을 것 같다. 그래서 그때 겪었던 소중한 경험을 공유하고자 한다! 동시성을 공부하다 보면 동시성(Concurrency)과 병렬성(Parallelism)의 차이를 비교하는 포스팅들을 많이 볼 수 있는데 나도 이 차이부터 정리하고자 한다. [Thread와 Process] 동시성과 병렬성에 대해 알아보기 전에 Thread와 Process 차이에 대해 알아야 한다. Thr..

Programing/Java 2022.08.01