• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

동시성 질문있습니다!

22.11.06 21:48 작성 조회수 421

0

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

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

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

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

 

답변 2

·

답변을 작성해보세요.

1

hyodg91 님 안녕하세요.

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

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

감사합니다.

0

hyodg91님의 프로필

hyodg91

질문자

2022.11.06

답변 감사합니다:)