WIL 2308 4주차

박지은·2023년 8월 27일
0

WIL

목록 보기
3/6

node.js를 시작한 주차 3번은 읽어봐야 이해가 되는 것 같다. 조금씩 공부방법을 익혀가는 중이다.
좀 더 이해하기 쉬운 언어로 바꿔서 input을 output 할 수 있도록 훈련하는 중. 아직은 어떻게 접근하는 방법이 나에게 가장 효율적으로 공부할 수 있는지를 찾고 있는 중이다.

1.1 웹과 HTTP 동작방식

<백엔드 개발자로서 기본, 웹브라우저와 웹 서버 사이의 통신과정 이해하기 >

웹브라우저 : 웹서버로부터 정보를 요청하고 받아 사용자에게 보여주는 소프트웨어
URL : 인터넷 상의 주소
DNS : 인터넷 상의 연락처 - 해당하는 URL을 IP로 변경해주는 서비스 (why? IP주소는 복잡한 숫자로 이루어짐)

IP: DNS를 통해서 우리는 IP를 얻음. 인터넷상의 해당 장치 위치 식별. IP4, IP6

HTTP : protocol = 통신규약 중 하나 (가장 세계에서 많이 쓰는 통신규약, 서버나 클라이언트(브라우저)끼리 의사소통) HTTP, HTTPS(암호화)
ㄴ 요청 request, 응답 = 반환 response

웹서버 : HTTP를 이용해 인터넷 상에서 클라이언트 요청을 처리하고 응답해주는 프로그램
ㄴ 정적인 콘텐츠 제공 (html, css, 이미지파일)

웹 어플리케이션 서버(WAS) : 동적인 콘텐츠 제공 ( 데이터베이스 조회, 복잡한 계산같은 비즈니스 로직 처리) , 좀더 처리시간이 길어질 수도 있다.


어떤식으로 처리되냐면, 브라우저 = 클라이언트 요청받으면, 웹서버로부터 전달받아 처리 request
, 결과를 다시 웹서버에 반환 response, 최종적으로 클라이언트가 응답받는
ㄴ request : 주로 GET 메서드로 요청

1.2 Node.js란?

자바스크립트: 기존의 정적인 문서를 동적으로 ! 표현!
여기서 정적, 동적을 구분하는 기준은 실시간으로 정보나 맥락을 반영하느냐의 차이!


ㄴ V8 엔진: 구글이 개발 크롬브라우저에서 활용하는 자바스크립트 엔진. 이를 써서 브라우저 환경 이외에서도 자바스크립트를 사용할 수 있게됨
ㄴ libuv : 노드가 비동기 I/O 작업을 할 수 있게 하는 라이브러리

Node.js: 자바스크립트를 브라우저가 아닌 컴퓨터에서 브라우저 없이 실행하게 도와주는 환경 , 자바스크립트 런타임 = 자바스크립트가 구동되는 환경
ㄴ 내가 좀 더 이해하기 쉽게 설명 : 컴퓨터 프로그램을 만들고 실행하는 환경
(웹브라우저_ 크롬, 파이어폭스, 익스플로러등 / 그리고 node.js)

Node.js 특징 3가지
1. 논블로킹 I/O (Non blocking I/O) - 여러작업 동시 처리
2. 싱글스레드 (single thred)
3. 이벤트 루프(event loop)

  1. 논블로킹 I/O (Non blocking I/O)
    ㄴ 블로킹과 논블로킹의 차이 :
    특정 작업을 하는 동안 다른 작업의 실행 흐름을 중단시키느냐, 여러작업을 동시에 처리하느냐 (이걸 실행흐름 제어방식이라 함)
    ㄴ 이러면 뭐가 좋지? 다른 일을 하는데 시간이 모자라는 걸 방지할 수 있음, 동시에 여러가지 일을 해버리니까
    ㄴ I/O (input/ output) 파일을 저장하거나 불러오는 걸 'I/O처리한다' 고 표현
    ㄴ 논블로킹 I/O: 시스템 호출이 완료되기를 기다리지 않고, 바로 다음 작업으로 즉시 넘어갈 수 있는 방식
    즉, 호출된 함수는 작업의 완료 여부와 상관없이 즉시 제어권을 호출한 함수에게 반환합니다.
    ㄴㄴ 제어권: 어떤 일을 하고 있는 주체가 그 일을 멈추고 다른 주체에게 넘겨주는 것

  2. 싱글스레드 (single thred)
    ㄴ 스레드 하나를 사용하는 것
    ㄴ 동시에 하나의 작업만 처리한다.
    ㄴㄴ Thred : 프로그램 동작시, CPU, 프로세서를 사용하는 단위
    ㄴ 스레드 : 여러작업을 동시에 처리해주는 것
    ㄴ 싱글스레드 : 한번에 하나의 작업만 처리할 수 있는 상황
    ㄴ 노드는 논블로킹 I/O와 싱글스레드로 싱글스레드지만, 비동기적으로 여러작업을 동시에 처리할 수 있다.

  1. 이벤트 루프(event loop)
    ㄴ 이벤트 루프는 컴퓨터 안에서 다양한 일들이 일어나는 것을 관리하는 관리자
    ㄴ 호출스택 (call stack)과 이벤트큐(event que)를 관찰하면서 여러 작업들을 순서대로 처리할 수 있도록 관리함.
    ㄴㄴ 호출스택 : 스레드들이 일을 처리하는 공간, 그리고 위에 있는 일부터 차례대로 처리됨
profile
성장하는뿅아리

0개의 댓글

관련 채용 정보