inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

재고시스템으로 알아보는 동시성이슈 해결방법

강의소개

동시성 질문있습니다!

603

hyodg91

작성한 질문수 1

0

안녕하세요 좋은 강의 잘들었습니다.

동시성 관련 공부하다보니 헷갈리는 부분이 있어서 질문드립니다.답변 부탁드립니다 :)

  1. java에서는 동기화를 제공하기위해 synchronized와 volatile, 아토믹 클래스를 이용해서 동시성을 보장한다고 알고있습니다. 근데 이게 단일 서버 싱글 코어 환경에서만 국한되는 내용이구요, 반면에 단일 서버 멀티 코어 환경에서는 아토믹클래스로 데이터의 가시성 및 원자성을 보장해주는것으로 알고있습니다. 그렇다면 분산서버 환경에서는 싱글코어든 멀티코어든 어플리케이션단에서는 동시성을 보장할 방법이 없게되고, 강의에서처럼 디비락을 통하여 동시성을 보장하는 방법이 정답이라고 이해하면 될까요?

  2. 두번째 질문은 분산서버 관련 내용이긴한데요, 요요즘 많이 사용하는 msa 서버 환경에서 비즈니스 도메인 단위로 서버를 두는것으로 알고있는데, 그렇다면 재고관리에 대한 로직은 한대의 서버에 담아 두게되고, 디비락 없이 자바동기화 방법으로도 해결이 될 것같은데 속도적인 측면에서 redis를 사용하는것일까요? 아니면 기업마다 인프라를 구축하는 방법이 다른 부분일까요?

 

spring java 동시성

답변 2

1

최상용

hyodg91 님 안녕하세요.

  1. 분산서버라기보다는 여러대의 서버가 존재할경우 어플리케이션단에서 동시성을 보장할 방법이 없게되고 DB, redis 등 다른 수단을 사용하여 동시성을 보장해야 합니다.

  2. 일단 msa 환경에서 도메인별로 서버를 분리하는것은 맞습니다. 다만 도메인별로 서버가 1대가 아니라 최소 2대이상을 사용합니다. 1대의 서버로 운영하게 되면 서버가 다운되는순간 서비스장애로 이어지기 때문입니다.
    또한, 트래픽이 많은 도메인일경우 수많은 서버를 사용하게됩니다. 이러한 상황에서는 자바동기화 방법으로 해결할 수 없기떄문에 db, redis 등 다른수단을 사용해야 합니다.

감사합니다.

0

hyodg91

답변 감사합니다:)

레디선 테스트코드에서 채널이름은 없어도 되는건가요?

0

67

2

낙관적 락을 사용할 떄 차이점

0

147

2

동시성 검증 코드에 관한 문의

0

110

2

단일연산

0

88

2

낙관적락vs. 레디스락

0

121

2

안녕하세요. 레디슨 질문있습니다..!!

0

78

2

@Lock(OPTIMISTIC)이 필요한 이유

0

106

2

get_lock 의 timeout이 3000초 이던데 너무 긴거 아닌가요?

0

143

2

DataSource Hikari 사용 이유

0

160

2

saveAndFlush 사용 이유 문의

0

125

3

비관적 락 VS 네임드 락

0

174

3

application.yaml 에 redis 정보

0

102

2

왜 클래스 이름에 Facade 가 붙나요?

0

194

2

@Transactional 으로 인한 동시성 문제 발생 원인이 궁금합니다.

0

226

2

@modifying 이용한 동시성 제어

0

179

2

DB락과 분산락

0

279

2

NamedLock 테스트 실패

0

192

2

테스트에서 트랜잭션 어노테이션 질문 있습니다.

0

184

2

optimistic Lock 재시도 질문입니다.

0

246

2

낙관적 락 테스트 실패

0

256

2

오류?

0

1644

4

LettureLockStockFacadeTest에서 오류가 발생합니다.

1

274

2

Pessimistic Lock 전체 테스트 오류 문의

0

383

3

비관적 락 vs 레디스(Lettuce)락 비교 관련 질문

0

473

2