1. 이벤트 루프란? Javascript 엔진은 싱글스레드를 기반으로 만들어졌습니다. Callstack에는 Javascript에서 내린 명령들이 한개씩 쌓이고, 그것들을 싱글스레드 환경에서 한개씩 해결합니다. 그렇다면 비동기 프로그래밍은 어떻게 할 수 있을까요? Javascript엔진은 싱글 스레드(Memory Heap + CallStack) 지만, 기본적으로 그 엔진을 돌리는 브라우저/혹은 node.js 런타임 환경은 싱글 스레드 환경이 아닙니다. 브라우저를 기초해 설명하자면, (1) Javascript에서 Web Apis를 부릅니다. (2) 별도의 쓰레드에서 Web APIs (Timeout, DOM, AJAX) 들이 작동합니다. (3) Web API들의 결과로 사용되는 Callback들은 차례대로 C..
DNS는 Domain Name System 의 준말이다. 즉, Domain Name을 실제 컴퓨터가 연결할 때 쓰는 ip 주소로 resolving 해준다. ip주소를 resolving 해나가는 과정은 여러가지가 있지만, 대표적인 "recursive resolving"이라는 과정을 다룬다. 이 recursive resolving 같은 경우는 DNS 분산 시스템을 활용하는데, 각 도메인 레벨별로 DNS 서버를 나눠서, ip resolving을 요청하는 트래픽을 레벨별로 분산해 처리할 수 있도록 하고, 또한 하나의 DNS서버에서 가져야 하는 ip주소의 숫자를 역할별로 최소한으로 할 수 있다. 1. 로컬 DNS 서버 브라우저 등지에서 domain name으로 request를 보내면, 이 request를 기반으로..
Node.js를 하던 와중에 DBMS의 필요성을 느끼게 되었고 Mongo DB를 활용하게 되었다. MongoDB를 활용하게 된 이유는 아래와 같다. 1. 일단 검색 수가 가장 많았다. Node.js를 하게되면 찾을 수 있는 다른 DB들에 리소스들이 쏟아졌다. 이 부분에서 nosql 솔루션으로 mongodb를 사용하는게 좋다고 느껴졌다. 2. 무료 Paas를 솔루션을 제공해준다. 홈페이지에 가면 쉽게 db를 수행할 수 있는 솔루션을 제공해줬다. 후에 node.js를 넘어 backend서비스를 붙여 실제 서비스로 하기에도 적합한 부분이었다. 기존 RDBMS 대비 가장 좋았던 부분이었다. 라이트하게 시작해서 개발을 쉽게 체험해볼 수 있었다. 3. ORM 혹은 ODM 존재 : 몽구스라는 ODM이 존재해서 쉽게 ..
뮤텍스와 세마포어에 대한 비교글이 많은데, 딱히 와닿지 않아서 3 step os를 보고 직접 정리해보았다. 조금 디테일한 내용은 있으나, 전반적인 사전지식을 위해 추가한것이므로 그렇게 깊게 다루진 않았다. 1. Mutex 뮤텍스는 기본적으로 상호배제(mutural exclusion) 를 위한 lock을 위해 고안된 아이디어이다. POISX 표준에 등록되어있어서 mutex라는 이름으로 널리 쓰이는것 같다. https://www.joinc.co.kr/w/man/3/pthread_mutex_init linux man page : pthread_mutex_init - mutex 를 초기화 한다. 뮤텍스(mutex)는 쓰레드가 공유하는 데이터 영역을 보호하기 위해서 사용되는 도구이다. pthread_mutex_i..
데이터베이스 컴퓨터의 가장 강력한 기능 중 한가지는 데이터를 저장할 수 있는 능력이라고 생각한다. 이를 통해 사람보다 데이터를 훨씬 더 많이 기억할 수 있고, 그 데이터를 원할 때 꺼낼 수 있다. 요즘 IT서비스의 근간은 바로 이런 데이터베이스에 각종 데이터를 저장하고 그 데이터를 관리하는 시스템을 기반으로 한다고 생각한다. 데이터베이스 개론이라는 책에서 보면, 데이터베이스를 "특정 조직의 여러 사용자가 공유하여 사용할 수 있도록 통합해서 저장한 운영 데이터의 집합" 이라고 일컫는다. 이런 정의를 통해 데이터베이스의 특징을 살펴보자면... 1) 데이터베이스의 데이터 모음은 정제되어있어야 한다. 특정 조직의 여러 목적을 가진 사용자가 공유할 수 있고 그 데이터를 통합할 수 있으려면, 기본적으로 정제된 (혹..
HTTP Protocol http protocol은 연결이 유지가 (connectless) 되지 않기 때문에, 상태가 없다(stateless). 응답을 받으면 연결을 끊기 때문에, 서버는 기존 request에서 무엇을 했는지 알 수 가 없다. 즉, 다시말해서 클라이언트의 현재 시점의 상태를 알 수 없다. 하지만 실제 웹 서비스를 사용하다보면, 장바구니 정보, 로그인 상태 유지 등 상태가 유지되는 웹사이트 기술이 분명히 존재하는것을 알 수 있다. Session과 Cookie. 유저와 서버간의 상태를 유지할 수 있는 방법중에 세션과 쿠키가 있다. - 세션 : 특정 시간동안( 예 : 30분) 동일한 클라이언트로부터 들어온 일련의 요청정보를 의미한다. - 쿠키 : 서버측으로부터 데이터를 클라이언트의 위치에 저장..