동기/비동기

비동기 처리 사용 시 주의할 점
(병렬화 주의점과 동일+a)
- 비동기로 요구한 처리가 끝나지 않은 상태에서 다음 처리를 진행해도 문제 없는지
- 비동기로 요구한 처리가 끝났는지 확인할 필요가 있는지
동기/비동기 사용되는 곳
1. DBMS
- DBWR 프로세스 : I/O 전문 프로세스/스레드
- I/O 병렬화 방식
1) 프로세스/스레드를 복수 사용하는 방식 (멀티프로세스로 병렬화하는 방식)
- 병행해서 복수의 쓰기 처리를 의뢰, 모든 쓰기 처리가 끝났는지 확인
2) 비동기 I/O 방식 → OS측에서의 쓰기 처리를 병렬화
- OS 커널에 쓰기를 의뢰한 후, 완료를 기다리지 않고 다음 쓰기를 의뢰

2. 기타
- DBMS 복제 시 동기/비동기 모드 선택
- 미들웨어 비동기 처리 (메시지 큐(Queue) 등)
* 복제, 메시지 큐
→ 보통 처리 의뢰 후 다른 처리를 진행하고, 처리 결과는 확인 X
⇒ 처리가 실패하더라도 알지 못하고 후속 처리가 발생해서 위험이 가중될 수 O
※ C10K 문제
- C : Client, 10K : 1만(10,000)
- 1만 클라이언트가 동시 접속하는 경우의 문제
- 하드웨어 성능상 문제가 없어도 클라이언트 수가 많아지면 서버가 고장나는 문제
* C10K 문제 해결방법 ⇒ " 논블로킹 I/O (Non-blocking I/O) "
- 하나의 프로세스로 복수의 접속을 처리하는 방법
- 1 프로세스 = 복수 접속 (ex. 학원선생님)
- 클라이언트 통신은 정말 필요한 경우에만 처리
- OS 시스템 콜로 구현되어 있음
- 대량의 접속이 발생함에도 불구하고 동기 처리가 필요없는 경우 매우 유효한 방법
- 주의점(단점)
1) 모든 접속은 완전히 동기로 처리할 수 X → 동기 처리 수 고려 필요
2) 특정 처리가 장기화 or 지연 → 다른 접속에 영향
출처 : 야마자키 야스시 외 3, 「그림으로 공부하는 IT 인프라 구조」, 제이펍