node.js 4

백엔드 기술면접 회고 (2) Node.js 간단하게 파헤치기

Node.js의 구성요소와 구조 Node.js의 소스코드는 C++, 자바스크립트, 파이썬 등을 기반으로 구성요소가 구현되어 있다고 알려져 있으며 그 중 Node.js에서 중요한 구성요소인 V8과 libuv에 대해서 알아보자 V8 C++로 만든 자바스크립트 엔진을 말하며 즉 사용자가 작성한 코드를 실행하는 프로그램을 뜻한다. 이는 파서, 컴파일러, 인터프리터, 가비지컬렉터, 콜 스텍, 힙으로 구성되어 있으며, 인터프리터 역할을 하는 이그니션과 컴파일러 역할을 하는 터보팬을 함께 사용한다. 코드의 실행 순서는 아래와 같다. 작성한 자바스크립트 코드가 파서에 전달된다. 추상 구문 트리로 만든다. 이그니션에 전달되어 추상 구문 트리를 바이트코드로 만든다. 최적화가 필요한 부분은 이그니션이 터보팬으로 추상 구문 ..

async와 await를 쓰는 비동기 함수 실행 순서 이해하기

비동기 함수의 코드 실행 순서를 제대로 파악하지 못한다면 디버깅 시 원인을 도저히 찾지 못하는 사태가 발생할 수 있다. 가령 비동기 함수 내에서 신규 html 태그를 생성한 뒤, 해당 태그에 EventListener를 적용하는 코드를 작성했다고 했을 경우, 신규 태그를 생성하기도 전에 EventListener를 먼저 등록하려고 시도할 수 있다. 이는 비동기 함수가 보낸 요청이 완료되기 전에 이벤트 등록 함수가 먼저 실행될 수 있기 때문이다. 이러한 비동기 함수의 실행 순서에 대해 사전에 이해해 둘 필요가 있다. 이는 백엔드에 들어온 요청을 효율적으로 처리하도록 기능을 구현하는 과정에서 필요할 것이다. STEP 1 async function fetchAndPrint() { console.log(2); co..

Nest.js 입문을 위한 맛보기 정리

What is Nest.js? 이전에 사용한 express는 사실 프레임워크라고 부르기 민망할 정도로 너무 제약 사항이 없는 편이었다. 프레임워크의 대표적인 특징은 프로젝트 수행에 있어서 필요한 초기설정, 아키텍처 틀이 정해져 있다는 점인데, express는 자잘한 기능까지도 하나부터 열까지 구현해야 한다는 점이 불편한 점이다. 자유도가 높다고도 볼 수 있겠지만 그만큼 오류를 범할 가능성도 높아지는 것이다. Nest나 Django와 같은 프레임워크는 API 요청, 응답 방법이라든지, 아키텍처 구성 방식이라든지 이미 강제로 정해진 부분이 있어 이를 지키지 않을 수 없도록 구현되어있다. 그렇게 약속되어 있기 때문에 프로젝트를 생성하면 반드시 필요한 기능은 자동으로 파일 생성 및 코드 작성까지 미리 해준다. ..

node에서 MySQL 데이터베이스 활용과 ORM (1)

기본 환경 설정하기 node에서 MySQL 데이터베이스를 사용하기 위해 Community Server 설치가 필요하다. https://dev.mysql.com/downloads/ 또한 node와 데이터베이스를 ORM 방식으로 사용하기 위해 추가적인 npm 패키지 설치가 필요하다. npm install mysql2 sequelize sequelize-cli 위 패키지 중 sequelize-cli는 필수 패키지는 아니나 데이터베이스 생성이나 마이그레이션 등을 cli 명령으로 가능하게 하여 작업의 편의성을 더해준다. 💡 Tip ORM은 데이터베이스에 있는 객체를 하나의 객체에 매핑시키는 기술 데이터베이스 문법을 잘 모르더라도 자바스크립트 언어로 비교적 쉽게 상호작용을 하기 위해 사용된다. 이제 ORM 환경 설..