1장 풀스택 자바스크립트 세계에 오신것을 환영합니다.

Book/노드JS와 몽고DB로 웹 개발 시작하기 2018. 12. 15. 15:52
반응형



노드JS와 몽고DB로 웹 개발 시작하기

스터디 

저작권에 문제가 있을시 비공개하겠습니다. 


p29 ~ p44


노드JS는 구글의 V8엔진 위에서 구현된 자바스크립트를 위한 런타임 환경



http://bcho.tistory.com/881


node.js는 싱글스레드 모델 


싱글스레드를 통해 비동기 처리를 통해 많은 양의 웹 트래픽을 처리 하는 애플리케이션에 성능과 확장성을 제공한다.


장점 : 동시 접속 요청 처리 

단점: CPU코어들을 활용하지 못함.


스레드, 프로세스의 개념에 대해 

http://www.cs.ucsb.edu/~rich/class/cs170/notes/IntroThreads/


논블로킹 비동기 실행 

이벤트에 의해 구동되면서 비동기적으로 실행되는 것이 노드 JS의  가장큰 장점임.



자바스크립트의 비동기 모델과 콜백에 대한 개념 

https://developer.mozilla.org/ko/docs/Web/JavaScript






npm : 노드 패키지 매니저 


다운로드 가능한 모듈 목록 : https://www.npmjs.com/

설치명령어 : npm install package

path : node_modules/ 폴더 


버전 : major.minor.patch 


클라이언트 요소 로드 시간 최적화 

언더스코어 underscore


업무 자동화 해주는 도구 

그런트 JSGrunt.js

커피스크립트 CoffeeScript 


공학용 라이브러리 

조니 파이브 Johnny-Five

Cylon.js


에디터 

깃허브Github의 오픈소스 에디터 아톰 Atom 



노드JS의 탄생이유중 가장 중요한 하나는 실시간 웹 애플리케이션을 지원하는 일 

실시간 웹 애플리케이션을 위한프레임워크를 보유 

    • socket.js




WebSocket 클라이언트 응용 프로그램 작성


https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_client_applications







node.js로 구현한 간단한 서버 

1
2
3
4
5
6
var http = require('http');
http.createServer(function(req, res){
    res.writeHead(200, {'Content-Type':'text/plain'});
    res.end('Hello World!\n');
}).listen(8080'localhost');
console.log('Server running at http://localhost:8080');
cs


가진것이 망치밖에 없다면 모든것이 못처럼 보일것이다.




언제 사용하는 것이 좋을까?

    • 많은 양의 동시 접속 처리하기 위한 앱 
    • 사용자 요청이 매우 적은 CPU사이클을 필요로 하는 앱 







NoSQL운동 


RDBMS : Relational Database Managerment System


부루어의 CAP이론 : 

분산 컴퓨팅 환경에서 일관성(Consistency), 가용성(Avalabillity), 분산 가용성(Parition Tolerance)이라는 세가지 특징을 동시에 모두 만족시키기란 불가능 하다.




RDBMS: 일관성측면에서 장점, 가용성(데이터읽기), 분산 측면에서 타협 

NoSQL: 가용성이나 분산 가용성에 더 중점을 둠 




NoSQL 하위 분류 


도큐먼트 스토어

키-값 저장소 

그래프 기반의 데이터 베이스 솔루션 


      1. 카산드라 (Cassandra)
      2. 레디스 (Redis)
      3. Neo4j
      4. HBase



몽고DB

NoSQL 데이터베이스의 도큐먼트 스토어로 분류

JSON친화적인 데이터베이스 

문서저장 반환시 자바스크립트 오브젝트 (JSON)포멧으로 이루어짐 

내부적으로 시스템에 저장될때는 BSON포멧으로 변환 

스키마를 필요로 하지 않음 

래자일 기반의 개발에 잘 맞음 

몽고DB와 node.js의 유사점 : 동시성과 읽기 트래픽이 많은 앱을 염두하고 설계 

수평/수직적 확장 가능하게 하는 샤딩(Sharding)의 개념을 도입 

표준을 엄격하게 지키지 않기 때문에 데이터 일관성에 영향을 끼칠수 있다. 

많은 양의 집합 연산을 위해 설계되지 않았음 (많은 수의 조인이 필요하는 데이터모델에는 부적합)



앞으로 배우게 될것들...


익스프레스 (Express) 프레임워크 

핸들바 (Handlebars) 템플릿엔진 

몽고DB 

레스트풀 Restful API 작성 





반응형

'Book > 노드JS와 몽고DB로 웹 개발 시작하기' 카테고리의 다른 글

2장 일어나달려가기  (0) 2018.12.16
: