Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[이유희] 6장: 동시성 #58

Merged
merged 1 commit into from
Aug 27, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions 6장/이유희.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
### 동시성

시간적 결합이란 여러 작업 단위가 동시에 또는 순서대로 일어나는 것을 의미한다.
동시성을 확보한 시스템은 응답속도도 더 빠르고 안정적인 시스템을 만들 수 있다.

### 동시성 찾기

- 동시에 일어나도 되는 것과 반드시 순서대로 일어나야 하는 것을 구분하자
- 방법: 활동 다이어그램


### 공유 상태는 틀린 상태

동시에 또는 병렬적으로 이뤄지는 작업 단위들이 공유하는 자원은 일관성이 깨지기 쉽기 때문에 동기화를 잘 해야한다

- 세마포어
- 리소스를 트랜잭션으로 관리하라
- 독점적인 접근


### 공유자원이 없이 동시성을 다루는 방법

- 액터 시스템
- 칠판

> 이번장을 읽고 MSA 환경에서 이벤트 브로커를 두는 이유를 이해할 수 있었다. MSA를 경험해본 적이 없어 그냥 개념 정도만 알고 있었다.
>
> 어느 마이크로서비스가 이벤트 저장소(칠판)에 어떤 사건(이벤트)가 발생했음을 기록하면, 칠판을 바라보고 있는 다른 마이크로서비스들은 각자 이벤트에 부여된 책임을 수행한다.
>
> MSA는 공유자원 없이 이벤트에 부여된 각자의 책임만 수행하면 되기때문에 동시성이 확보되지만 반대로 트랜잭션의 원자성을 다루기 어려울 것 같다.
> 숙박 서비스 유저 입장에서 결제에 성공하면 예약 완료인데 해당 서비스가 msa로 되어있고, 주문 이벤트를 결제 서비스만 성공하고 예약 서비스에서는 실패하는 경우라든지..
> 그래서 아웃박스 패턴이니 사가 패턴이니 다양한 패턴이 있나보다.
Loading