대용량 트래픽 처리 서버를 구축할 때 동시성을 제어하는 것은 매우 중요하다.왜냐하면 대량의 트래픽이 몰릴 때 데이터의 정합성을 유지하는 것이 필수적인 요소이기 때문이다. 내가 직접 개발하면서 경험한 동시성 제어 프로그래밍에 대해서 작성해본다. [동시성 제어 프로그래밍 방식]동시성 제어 프로그래밍은 트랜잭션, 트래픽, 분산 환경 여부 등에 따라 다르게 채택하여 사용할 수 있다.콘서트 예약시스템에서 동시성 이슈가 발생하는 지점은 아래 2가지이다.1) 좌석 예약2) 포인트 충전, 사용 좌석 예약 기능 동시성 제어 프로그래밍1. synchornized - 부적합Java에서 제공하는 가장 기본적인 동시성 제어 프로그래밍 방법이다.좌석 예약 메서드에 synchronized를 걸면 싱글 스레드 방식으로 좌석 예약을 ..
이번주는 동시성 구현에 대해서 구현하는데 재미있었다.6주차에 CI/CD는 생각보다 어렵고 지루했는데 다시 코딩하니 재미있었다. Keep : 현재 만족하고 개선할 부분1. 포인트 충전에 대해서 비관적락과 테스트 코드 구현 완성.사용자가 포인트 충전 요청에 대해서 모두 순차적으로 충전해줘야 한다고 생각해서 비관적락으로 구현 2. 좌석 예약을 낙관적 락, 비관적 락으로 구현 완료.3주차 때 좌석예약을 비관적 락으로 구현했는데 테스트가 중간에 끝나지 않고 계속해서 도는 현상이 발생했다.알고보니 테스트 코드의 countLatchDown.await() 메서드를 잘못 사용하고 있어서 그랬었다. 원인 : await() 메서드로 인해서 다른 스레드가 끝날 때까지 무한대기.for(int i=0; i{ try{..
[어떤 Lock을 적용할지 고려하는 순서]1. DB Transaction과 Lock 범위에 따른 처리를 고려해야 한다.트랜잭션 시작, 종료 전후로 락을 획득해야 하는지트랜잭션을 먼저 시작하고 락을 획득해도 되는지 등등 2. 낙관적 Lock으로 해소가 가능한가?먼저 낙관적락으로 해소가 가능한지 확인한다.낙관적 락이 적합한 경우는첫 번째 조건 : 수정에 실패했을 때, 해당 비즈니스로직의 실패로 이어져도 되는 경우두 번째 조건 : 동시에 많은 충돌을 발생시키지 않는 경우(Retry로 해소) 3. 비관적 Lock으로 해소가 가능한지?비관적 락이 적합한 경우는첫 번쨰 조건 : 작은 트랜잭션 범위 내에서는 빠르게 처리 가능두 번째 조건 : 반드시 순서대로 처리해야 하는 작업에 효과적 주의 : Lock의 잠금 범위에..
- Total
- Today
- Yesterday
- 재테크공부
- Inception
- 깃
- Spring boot
- 열반스쿨기초반
- 2023년
- 월부닷컴
- 내년은 빡세게!!
- 개발자 회고
- resize
- 회고
- Use case
- ```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
- 작성 방법
- 파라메터
- github
- 도커
- 바
- 유즈케이스
- push_back
- 관계대수
- pop_back
- 폭포수
- 부동산공부
- 인셉션
- 월급쟁이부자들
- docker
- GIT
- 깃허브
- front
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |