inflearn logo
강의

講義

知識共有

mongoDB基礎から実務まで(feat. Node.js)

要約

createBlog가 await하는 동안

解決済みの質問

306

GODOT

投稿した質問数 38

3

createblog가 awiat 하는 동안 또 불리면 어떻게 되나요?

예를들어 여러명의 유저가 동시에 createBlog를 호출하게되면

계속 await하고 다음거 await 처리할때까지 대기 하고 있을 것 같은데... 이런 경우 어떻게 처리되나요??

await async mongodb rest-api aws nodejs javascript DBMS/RDBMS 데이터 엔지니어링

回答 3

1

Dev

저도 궁금했던 부분인데 답변이 제가 들어본 강의 중 최고네요!

감사합니다.

1

GODOT

ㄴ 아하 어떻게 작동되는지 이해가 되었네요. 친절한 답변감사합니다. 

어떻게 처리해야되는지 알겠어요. 저는 request받는 부분에서 따로 처리를 하려고 했는데 말씀들어보니 굳이 그렇게 처리안해도 nodejs에서 알아서 처리되는군요. 물론 request가 몰리는 쪽에서는 처리가 필요할 것 같긴한데,

어쨌든 친절한 답변감사합니다.

1

sihoon

앗 아니에요. 비동기 프로그래밍에서는 이 경우에 서로 대기하지 않아요

await를 하게 되면 하나의 API request 안에서 "기다렸다가" 다음 코드를 순차적으로 실행하게 되요. 같은 API request(블로그 생성)를 (여러 유저가 혹은 같은 유저가) 동시에 여러번 호출하게 되면 이건 await와 상관 없이 비동기적으로(체감상 병렬) 처리되요.

await하는 동안 노드 서버가 놀지 않고 계속 request를 받을 수 있는게 비동기의 장점이에요!

일반적인 동기 프로그래밍이라면 외부 호출 결과를 기다리는 동안 해당 request에 할당된 서버의 자원은 일을 못하게 되죠. 비동기가 지원되지 않는 경우는 그래서 보통 request가 발생할 때마다 새로운 thread(컴퓨터 자원)을 할당해줘요. request처리가 끝나면 할당받은 thread를 풀어주게 되고요. 만약 한번에 최대 100개 thread를 만들 수 있는 서버인데 동시에 호출이 100번 이상 들어오게 되면 이후 호출들은 작성자님 말씀대로 전에 호출들이 끝나는걸 대기하고 있다가 처리하게 되요.

그런데 노드가 비동기적으로 처리를 잘 하더라도 동시에 호출이 많이 들어오면 응답속도가 조금씩 늘어날 수 있어요. 노드 서버는 비동기적으로 빠르게 많은 request를 동시다발적으로 처리해요. 하지만 안에서 await하는 외부 요소들(데이터베이스)이 부하가 걸려서 원래 50ms면 응답이 왔던게 60ms, 70ms 이런식으로 늘 수도 있겠죠? 그러면 전체 응답속도도 같이 늘게되죠.

그래도 비동기로 처리하는게 훨씬 효율적이에요! 평상시에 디비 호출이 50ms 소요했다고 하면 50ms 중에 거의 49ms는 네트워크로 보내고 받는데 소요되는 시간이라고 할 수 있어요(대략적으로 비율을 보면요). 실질적으로 디비에서 작업하는 시간은 1ms도 안될 수 있어요. 디비에 부하가 가서 처리되는 시간이 1ms에서 2, 3ms로 늘 수는 있겠죠. 네트워크 통신 시간(49ms)이 대부분이기 때문에 디비처리 속도(1~3ms)가 조금 느려지더라도 체감상 변화가 거의 없게 되죠. 디비 호출 응답시간 변동이 50~150ms가 아니라 50~53ms 정도만 되는거에요.

물론 호출 수가 동시에 엄청 많아지면 다른 예기인데 이건 또 다른 해결책이 있습니다!

option usecreateindex is not supported 오류 나면은

0

147

1

Schemaless 특성을 재생시 검은화면이 나와요

0

241

1

user 내장 시 ref 필드 필요성

0

240

1

await 관련해서 질문드릴게 있습니다!!

0

293

2

섹션6의 3번째 강의 faker파일이 어디있나요?

0

309

1

$elemMatch 질문이 있습니다.

0

248

1

DB 업데이트에 실패했을 상황에서 대처는 어떻게 할 수 있나요.

2

767

2

블로그에 user 데이터를 추가하는 방법에 대해서

0

238

1

blog 데이터 생성시 user 관련 오류

0

352

1

age 예외 처리를 별도로 하신 이유가 궁금합니다.

2

302

2

delete 메소드가 많은 이유가 궁금합니다.

0

182

1

unique validation 처리

0

297

1

updateMany에서 user._id를 못찾는 상황

1

397

1

find() 가 리턴하는 instance member

1

432

3

몽고 db를 백업방법을 부탁합니다.

0

604

1

인덱스 생성시점

0

713

1

$pull 문법에 대한 질문

0

360

1

comment의 id가 생성되는 시점

1

303

1

리팩토링 강의에서 라우터 리팩토링 전개연산자(...)

1

316

1

session.abortTransaction()에 대한 실제 예시 문의

0

289

1

섹션9 Computed Fields 강의에서, 다음 강의 가기 전 빠진부분

-1

411

1

faker 패키지 취약성 이슈

1

488

1

라우터 리팩토링

0

345

1

섹션4 진행중, mongoose 질문

0

312

1