Upload
ima-zine
View
584
Download
0
Embed Size (px)
Citation preview
결국
비동기요청들(Asynchronous Requests)을
순차적(Sequentially)으로
안전하게(Transactionally) 처리
play.node(); 2017 with IBM
Simulation
1개의 article을처리하기위해필요한비동기요청수는
최소 8개 + 댓글수 * 2
댓글이없다고가정하고비동기요청 1개당 20ms 로잡아도
최소 160ms 필요 (6.25/sec)
86400 * 6.25 = 540,000
play.node(); 2017 with IBM
협력적멀티태스킹
play.node(); 2017 with IBM
Cooperative Multi-tasking
일종의시분할(Time-sharing)방식
운영체제의개입없이 task가독점적으로 CPU를사용
미사용시자발적 CPU 자원반환
Critical section 보호를위한 Lock이나 Semaphore 불필요
서광열의코딩스쿨(https://gamecodingschool.org) 참조
구현방법의선택
play.node(); 2017 with IBM
Coroutine
ES7 스펙 async, await
Node.js 7.6 부터공식적으로지원
Node.js 6.x —harmony 옵션과함께사용
Coroutine
코루틴은우리가잘알고있는서브루틴(Subroutine)과달리진입점(Entry Point)이여러개일수있습니다.
쉽게이야기하면실행을멈췄다가(Suspend) 재개(Resume)할수있다는점인데요.
이특성을살리면우리가익히아는스레드(Thread)처럼쓸수있게됩니다.
다만스레드와달리코루틴은비선점적(Non-Preemptive)이기때문에코드의흐름을전적으로사용자가제어할수있습니다.
play.node(); 2017 with IBM
spoqa 기술블로그 - Concurrency and eventlet(문성원님) 참조
TIPs
play.node(); 2017 with IBM
Coroutine 예외처리방법
UV_THREADPOOL_SIZE
Coroutine = Generator + promise + dispatcher(trampoline)
References
play.node(); 2017 with IBM
TOAST ES6의제너레이터를사용한비동기프로그래밍(김동우님)
spoqa 기술블로그 - Concurrency and eventlet(문성원님)
서광열의코딩스쿨 - 코루틴(Coroutine) 이해하기(서광열님)
Wikiedia Coroutine 한글번역(dogfeet님)
play.node(); 2017 with IBM
One more thing…
We want you!
https://careers.kakao.com/jobs/P-10465
play.node(); 2017 with IBM
Thank you개발자라면지금방문하세요! developer.ibm.com/kr
https://github.com/imazine/playnode2017_sample