비동기/동기

박효상·2022년 1월 16일
0

BACKEND-TIL

목록 보기
1/21
post-thumbnail

Node.js

정의

구글 크롬 V8 자바스크립트 엔진으로 만들어진 자바스크립트 런타임 환경이며, 자바스크립트를 브라우저 밖에서도 사용할 수 있도록 해주는 환경. 백엔드 상에서 쓰이는 실시간 데이터 전송 및 확장 가능한 서비스이기도 하다

작동 방식

노드이벤트 기반으로써 프론트엔드(클라이언트)에서 받는 각각의 요청들을 비동기적으로 처리하는데, 즉 앞선 클라이언트의 요청이 끝나기 전에 다음 클라이언트의 요청을 받는다
비동기로써 하나의 일이 끝날 때까지 기다리지 않고, 이벤트(Client’s single request)-기반의 싱글-스레드로써 무거운 일(Heavy Load)은 자바스크립트 런타임 환경인 C++ 쓰레드 풀(C++ Chrome V8 Engine)에 맡기고 그저 요청받은 일을 처리하여 응답한다

부연설명

자바스크립트 런타임 환경(C++ Chrome V8 Engine)

JavaScript 로 짜여진 소스코드를 CPU가 이해할 수 있는 기계어(ex. 0과 1로 이루어진 bytecode)로 변환시키고 또한 프로그램의 메모리 및 스케쥴을 관리하는 시스템이기도 하며, C++ Thread Pool로 불린다

동기 (Synchronous)

하나의 요청이 들어오면 이 요청이 완료될 때까지 다른 요청이 처리되지 못하는 방식. 설계가 간단하다는 장점이 있지만, 결과가 주어지기 전까지 아무것도 못하고 대기해야한다는 단점이 있다.

비동기 (Asynchronous)

동기 방식과는 정반대로, 하나의 요청이 들어오고 이 요청이 완료되기 전에 다음 요청을 받는 방식. 여러 작업들을 효율적으로 실행하여 자원을 효율적으로 사용할 수 있다는 장점이 있지만 설계가 복잡하다는 단점이 있다

콜백 함수

특정 함수에 매개변수로 전달된 함수로, 비동기적 처리를 통해 어떤 동작을 수행할 때, 동작에 필요한 준비물이 준비된 상태에서만 동작을 수행하도록 할 수 있는 함수이며, 이를 통해 비동기 함수의 결과를 반환한다

profile
집념의 백엔드 개발자

0개의 댓글