서버 맛보기
서버 맛보기 공부 via node.js
What is Node.js
Javscript는 알다시피 HTML 을 활용하기 위해서 만들어진 언어이며, 컴파일은 브라우저가 담당한다.
Chrome 은 V8, FireFox 는 SpiderMonkey ..
그리고 Chrome V8 해석엔진이 워낙 좋아서, 해당 엔진을 사용하여 자체를 따로 출시하여 만든것이 Node.js 즉 크롬의 자바스크립트 엔진
자바스크립트를 브라우저 내에서 사용하는것이 아닌 다른 환경에서도 실행을 할 수 있게 도와주기 위한 도구, 즉 런타임 실행환경이라 볼 수 있다
이제 Node.js 덕분에 JavaScript를 프로그래밍 언어처럼 만들 수 도 있고, 서버도 쉽게 만들 수 있음!!
그리고 Node.js 의 가장 큰 장점은 Non-blocking I/O 를 활용한다는점!!
Node.js의 특징
- Event Driven
- Non-blocking I/O
일반적인 서버와 Node.js Non-Blocking 의 특징을 알아보면 일반 서버라면, 요청을 처리하는 과정이 FIFO 으로 제일 먼저 들어온 요청부터 처리하지만, Node.js 라면 일단 I/O 를 다 받아보고 빨리 완료될 것 부터 확인을 해서 처리를 가능하게 해준다.
Node.js의 강점을 보여주는 부분
- SNS
- Chatting
- WebServer
으로 볼 수 있다.
즉 간단한 서비스나 프로토 타입을 만들기에 정말 좋지만, 처리속도가 타 서버들보다 떨어 질 수 있으며, Node.js의 특징인 Non-Blocking 처리방식 또한, 다른 언어에서도 구현 할 수 있다.
REST API
API
API 란 무엇인가.
Application Programming Interface 라고 부르며, 간단한 통신 규약이라 볼 수 있다. 간단하게 말하면 다른 프로그램들 간에 소통을 할 수 있게 데이터를 가져오는 방법이다.
REST API
Representational State Transfer
서버를 RESTFUL 하게 짠다는건 무엇일까??
HTTP 의 4가지 요청 (GET, POST, PUT, DELETE) 를 REST 원칙에 대하여 써보자!
대표적으로 6가지의 특징이 있다
- Uniform Interface
- 인터페이스는 일관성이 있어야 된다
- 하나의 URL 로는 하나의 Data만 가져와야된다
- 간결하고 예측가능해야된다
- URL 이름짓기 관습을 따라야한다
- Client-Server 역할을 구분한다
- URL 하나만 알면 서버에 있는 자료를 사용
- 고객에게 서버의 역할을 맡기거나 DB 를 꺼내오게 하면 안된다
- Stateless
- 요청들은 각각 독립적으로 처리되어야 한다
- 요청1이 성공하면 요청2를 보내주고 하는 식의 요청은 안된다
- 요청하나 만으로 자료를 가져올 수 있게 설정
- Cacheable
- 요청을 통해 보내는 자료들은 캐싱이 되어야 한다
- Layered System
- 요청을 처리하는곳, DB에 저장하는곳 이런 여러가지 단계를 거쳐 요청을 처리해도 된다
- 여러개의 레이어를 거쳐 요청을 처리하게 만들자
- Code on Demand
- 서버는 고객에게 실제 실행 가능한 코드를 전송 할 수 있다
다음에는 실제로 Node.js 와 Express 를 사용해 MongoDB 와 연동을 해보자