JS
자바스크립트의 실행 모델과 이벤트 루프, 그리고 작업 최적화
들어가며프론트엔드 기술면접 질문에 단골처럼 등장하는 질문 중 하나가 ‘싱글 스레드인 자바스크립트가 어떻게 비동기 처리가 가능한가요?’이다. 이 질문에 대한 간단한 답으로 ‘자바스크립트를 실행하는 런타임 환경이 비동기 작업들을 담당한다’라던지, ‘비동기 작업의 콜백함수를 별도의 태스크 큐에 저장해놓고, 이벤트 루프가 콜 스택이 비었을 때 태스크 큐의 작업을 콜 스택에 올려서 실행시킨다’라고 말할 수 있을 것이다. 하지만 몇 가지 궁금한 것들이 생겼다.자바스크립트는 애초에 왜 싱글 스레드로 동작하도록 만들어져서 이벤트 루프라는 매커니즘을 써가면서 비동기 처리를 하는 걸까?이벤트 루프와 작업 큐는 그러면 아키텍쳐상 어디에, 어떤 형태로 존재하는 것일까? 흔히 볼 수 있는 그림상으로는 엔진 바깥에 위치하는 것 ..
Web
HTTP/0.9부터 HTTP/3까지 알아보기
들어가며현대 웹 기술은 대부분이 HTTP 위에서 동작한다. 웹 개발자에게 HTTP를 이해하는 것은 단순히 서버와 클라이언트가 통신하는 방식을 아는 것을 넘어, 웹 전체의 동작 원리를 이해하는 핵심이라고 할 수 있다. HTTP 프로토콜이 발전해온 역사와 각 버전이 릴리즈된 배경과 특징, 문제점을 알아보자.HTTP웹에서 데이터를 주고받기 위한 통신 프로토콜사용자가 웹 주소를 입력하면 브라우저가 HTTP 요청을 보내고, 서버는 해당 요청에 대한 응답을 보내주는 '클라이언트-서버', '요청-응답' 모델로 작동1989년 팀 버너 리(Tim Berners-LEE)에 의해 제안HTTP/0.9TCP/IP 링크 위에서 동작하는 ASCII 프로토콜HTML을 가져오기만 하는 GET 메서드만 지원HTTP 헤더 X, 상태 코드..