목록NestJS, Node.js/etc. (3)
개발일지
개요프로세스 동기화를 공부하면서 Node.js에서도 동기화 기법이 적용되는지 궁금해졌다. JS는 싱글스레드 기반인데 async-mutex, async-sema와 같이 마치 동기화를 제공하는 듯한 패키지가 존재했기 때문이다. 결론부터 말하자면 JS는 “비동기 작업의 경쟁 조건(race condition)”이 발생할 수 있다. 일반적인 멀티스레드 동기화 개념과는 조금 다르지만 이 개념을 비동기 작업에 적용한 것이다. 이번 글에서는 프로세스 동기화 개념에 대해 간략히 알아본 뒤 JS의 동기화는 어떻게 다른 지 비교해보고 직접 구현까지 해보고자 한다. 프로세스 동기화여러 프로세스가 협력하는 작업이 있을 때 이 프로세스들은 동시다발적으로 실행되면 안된다. 이를 방지하기 위해서는 동기화가 필수적으로 이뤄져야한다. ..

개요프로세스 메모리 영역은 크게 코드 영역, 데이터 영역, 스택 영역, 힙 영역으로 구성된다. 그중 힙 영역은 동적 할당된 메모리를 관리하는 영역으로 사용자가 명시적으로 메모리를 할당하고 해제 해야한다. 반환하지 않을 경우 메모리 누수와 같은 문제가 발생할 수 있다. 그러나 Node.js는 가비지 컬렉션 기능을 제공하므로 메모리를 수동으로 관리하지 않아도 된다. 그렇다면 이 가비지 컬렉션이란 무엇일까? 가비지 컬렉션 (Garbage Collection)가비지 컬렉션(GC)이란 동적 할당된 메모리에서 더 이상 사용되지않는 객체를 자동으로 식별하고 해제하는 기법이다. 본론에 들어가기 전에 GC 알고리즘으로 어떤 것들이 있는지 알아보자. GC 알고리즘으로는 크게 참조 횟수 계산 방식(Reference cou..
TypeORM이란?ORM(Object Relational Mapping)"객체와 관계형 데이터베이스의 데이터를 자동으로 매핑" 해주는 것. 객체 지향 프로그래밍은 Class를 사용하고 관계형 데이터베이스는 Table을 사용한다. 이때 Class를 Table과 연결시켜줌으로써 두 모델 간의 불일치를 해결해준다. ORM을 사용하면 SQL문 없이 객체 지향적인 코드만으로 데이터베이스의 데이터를 다룰 수 있다. TypeORM은 Node.js, Browser, React Native 등 JS, TS와 함께 사용할 수 있는 ORM이다. 다른 JS ORM과 달리 Active Record 및 Data Mapper 패턴을 모두 지원하여 확장 가능하며 유지보수가 가은한 애플리케이션을 생산적인 방법으로 작성할 수..