SlideShare a Scribd company logo
1 of 17
Meteor 넌 뭐니?
by peter yun
목차
● Meteor 뭐니?
● Modern Application Platform
● Reactive Platform
o Blaze
o DDP
o LiveQuery
● Isomorphic Programming
● ReactJS/Flux & Meteor
● Environments
Meteor 뭐니?
● Modern Application Platform
o For Realtime (view & data)
o Frontend & Backend Reactive Programming
● Like Node.js의 Spring Framework
o For Fullstack development (one language)
o Frontend & Backend Isomorphic Programming
o Authentication (account), Authorization (collection)
Modern Application Platform
● For Realtime
● Frontend - Reactive Templating
o Blaze
o AngularJS
o ReactJS
● Middle - Latency Compensation
o DDP (Distributed Data Protocol)
o Client Data Cache (minimongo)
● Backend - Data Bus
o Livequery
Modern Application Platform
For real Realtime
To Reactive world
Reactive Platform
client browser server node.js data store outside process
CUD
User
Events
Reactive Snyc
● DDP : SocketJS
● Client Mini database
(mongodb)
Reactive Templating
● Tracker (library) for Blaze
● AngularJS, ReactJS
Reactive Data
● LiveQuery
Full Stack DB Driver
production : mongodb
experimental : redis
working on etc
Reative Platform - 영역
Meteor는
Frontend에서
Backend로
Reactive 프로그래밍의 확장
AngularJS
ReactJS
EmberJS
Blaze
DDP
LiveQuery
Mini-DataBase
Reactive Platform - 확장
HA Proxy Master/Slave ETL Collector
insert
select
insert
참조 1 : http://blog.mongolab.com/2014/07/tutorial-scaling-meteor-with-mongodb-oplog-tailing/
참조 2 : https://meteorhacks.com/does-meteor-scale
socketJS
sticky session
Blaze - Reactive Templating
● Tracker 기반으로 구현한 Reactive Templating 엔진
● jQuery가 Imperative (명령형) 이라면 Blaze는 Declarative (선언형)
선언형
하나의 상태가 바뀌면 layout에 반영 -
Reactive
명령형
필요한 곳에 로직을 추가하는 형태 - jQuery
방식
Reactive Templating 이해 : http://blog.percolatestudio.com/engineering/reactive-user-interfaces/
Tracker 소개 : https://atmospherejs.com/meteor/tracker
DDP - Websocket based Data Protocol
● using websocket with SocketJS (sticky-session, HA scale-out 가능)
● DDP 는 websocket을 이용한 REST 와 같다.
o http://2012.realtimeconf.com/video/matt-debergalis (동영상)
● DDP Client는 다양한 언어로 구현 가능 (ObjectiveDDP) to Meteor Server
o http://meteorpedia.com/read/DDP_Clients
● 브라우져 connection 갯수 제한 관리, 재접속 관리
o https://atmospherejs.com/meteor/ddp
● 적용영역
o Client쪽에 mini database 가 있으면
o 대기시간 보정이 가능. latency-compensated
o 대기시간 보정 설명 : http://kr.discovermeteor.com/chapters/latency-compensation/
o Collection에 대한 Meteor.subscribe, Meteor.call
 http://kr.discovermeteor.com/chapters/publications-and-subscriptions/
DDP 데이터 호출 흐름
출처 : https://opentutorials.org/module/1406/9000
Collection의
Pub/Sub
with DDP
for 대기시간 보정
Collection의
direct call
to server
Live Query - Reactive Store
● Database의 변경을 감시 ex) replication log 감시 in MongoDB
o 따라서 MongoDB를 별도로 운영시 replica set을 구성해야 함.
o replica set 안하면 polling해서 변경을 체크함
o https://www.meteor.com/livequery
● 변경에 대한 모든 부분을 통지 ex) RethinkDB and Firebase
● mongo 패키지에 함께 있음
o https://atmospherejs.com/meteor/mongo : full stack database driver
Isomorphic Programming
● frotend & backend 하나의 언어, 동일 구조의 개발
● 하나의 언어 : JavaScript
● 동일 구조
o client, server, public 이 아닌 폴더는 코드를 공유 : 중복 코드 제거
o MongoDB Collection Pub/Sub 및 권한 제어
o iron:router client/server 라우팅
Environments
● 빌드
o isobuild 커맨드 툴 제공 : meteor run/deploy/build
o .meteor 폴더에 배포. 마치 webpack의 묶음과 같음
o npm 도 사용 가능
● 의존성 관리
o 패키지 추가 : meteor add XXXX
o 패키지 배포 : atmospherejs.com
● 개발 편의성
o live reloading : 운영중에도 가능
o 별도 배포 테스트 서버 제공 : <subdomain>.meteor.com
ReactJS/Flux & Meteor
출처 : https://github.com/AdamBrodzinski/react-ive-meteor
http://react-ive.meteor.com/
<< Flux 패턴 >>
View에서
Action Creator 생성
Dispatcher에 전파 의뢰
Store에 정보 받아
View에 이벤트 발행
View는 Store 상태 정보를
가져와 화면 갱신
ReactJS/Flux & Meteor
출처 : http://info.meteor.com/blog/optimistic-ui-with-meteor-latency-compensation
<< Flux 패턴 >>
View에서
Action Creator 생성
Dispatcher에 전파 의뢰
Store에 정보 받아
View에 이벤트 발행
View는 Store 상태 정보를
가져와 화면 갱신
<< 특징 >>
모든 접속 클라이언트에
변경 데이터를 전송함
AngularJS에서 Reactive World로~~

More Related Content

What's hot

Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Daum DNA
 
Node Js와 Redis를 사용한 구조화된 데이터
Node Js와 Redis를 사용한 구조화된 데이터Node Js와 Redis를 사용한 구조화된 데이터
Node Js와 Redis를 사용한 구조화된 데이터jinho park
 
Python server-101
Python server-101Python server-101
Python server-101Huey Park
 
Node.js 시작하기
Node.js 시작하기Node.js 시작하기
Node.js 시작하기Huey Park
 
Node.js 자바스크립트로 서버사이드 개발하기
Node.js 자바스크립트로 서버사이드 개발하기Node.js 자바스크립트로 서버사이드 개발하기
Node.js 자바스크립트로 서버사이드 개발하기JeongHun Byeon
 
Node.js의 도입과 활용
Node.js의 도입과 활용Node.js의 도입과 활용
Node.js의 도입과 활용Jin wook
 
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기KTH, 케이티하이텔
 
Node.js + Websocket 삽질기
Node.js + Websocket 삽질기Node.js + Websocket 삽질기
Node.js + Websocket 삽질기Paprikhan
 
[125]웹 성능 최적화에 필요한 브라우저의 모든 것
[125]웹 성능 최적화에 필요한 브라우저의 모든 것[125]웹 성능 최적화에 필요한 브라우저의 모든 것
[125]웹 성능 최적화에 필요한 브라우저의 모든 것NAVER D2
 
톰캣 #10-모니터링
톰캣 #10-모니터링톰캣 #10-모니터링
톰캣 #10-모니터링GyuSeok Lee
 
Nodejs 발표자료
Nodejs 발표자료Nodejs 발표자료
Nodejs 발표자료shanka2
 
세션3 node.js의 의미와 자바의 대안
세션3 node.js의 의미와 자바의 대안세션3 node.js의 의미와 자바의 대안
세션3 node.js의 의미와 자바의 대안Lee Ji Eun
 
React 튜토리얼 1차시
React 튜토리얼 1차시React 튜토리얼 1차시
React 튜토리얼 1차시태현 김
 
Vert.x
Vert.x Vert.x
Vert.x ymtech
 
Vert.x 세미나 이지원_배포용
Vert.x 세미나 이지원_배포용Vert.x 세미나 이지원_배포용
Vert.x 세미나 이지원_배포용지원 이
 
Rb vs wp 로드타임 성능비교
Rb vs wp 로드타임 성능비교Rb vs wp 로드타임 성능비교
Rb vs wp 로드타임 성능비교Gitaek kwon
 
제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합
제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합
제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합NAVER D2
 
[하코사세미나]미리보는 대규모 자바스크립트 어플리케이션 개발
[하코사세미나]미리보는 대규모 자바스크립트 어플리케이션 개발[하코사세미나]미리보는 대규모 자바스크립트 어플리케이션 개발
[하코사세미나]미리보는 대규모 자바스크립트 어플리케이션 개발정석 양
 

What's hot (20)

Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012
 
Node Js와 Redis를 사용한 구조화된 데이터
Node Js와 Redis를 사용한 구조화된 데이터Node Js와 Redis를 사용한 구조화된 데이터
Node Js와 Redis를 사용한 구조화된 데이터
 
Python server-101
Python server-101Python server-101
Python server-101
 
Node.js 시작하기
Node.js 시작하기Node.js 시작하기
Node.js 시작하기
 
Node.js 자바스크립트로 서버사이드 개발하기
Node.js 자바스크립트로 서버사이드 개발하기Node.js 자바스크립트로 서버사이드 개발하기
Node.js 자바스크립트로 서버사이드 개발하기
 
Node.js의 도입과 활용
Node.js의 도입과 활용Node.js의 도입과 활용
Node.js의 도입과 활용
 
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기
 
Node.js + Websocket 삽질기
Node.js + Websocket 삽질기Node.js + Websocket 삽질기
Node.js + Websocket 삽질기
 
[125]웹 성능 최적화에 필요한 브라우저의 모든 것
[125]웹 성능 최적화에 필요한 브라우저의 모든 것[125]웹 성능 최적화에 필요한 브라우저의 모든 것
[125]웹 성능 최적화에 필요한 브라우저의 모든 것
 
톰캣 #10-모니터링
톰캣 #10-모니터링톰캣 #10-모니터링
톰캣 #10-모니터링
 
Nodejs 발표자료
Nodejs 발표자료Nodejs 발표자료
Nodejs 발표자료
 
세션3 node.js의 의미와 자바의 대안
세션3 node.js의 의미와 자바의 대안세션3 node.js의 의미와 자바의 대안
세션3 node.js의 의미와 자바의 대안
 
React 튜토리얼 1차시
React 튜토리얼 1차시React 튜토리얼 1차시
React 튜토리얼 1차시
 
Vert.x
Vert.xVert.x
Vert.x
 
Vert.x
Vert.x Vert.x
Vert.x
 
Node.js 기본
Node.js 기본Node.js 기본
Node.js 기본
 
Vert.x 세미나 이지원_배포용
Vert.x 세미나 이지원_배포용Vert.x 세미나 이지원_배포용
Vert.x 세미나 이지원_배포용
 
Rb vs wp 로드타임 성능비교
Rb vs wp 로드타임 성능비교Rb vs wp 로드타임 성능비교
Rb vs wp 로드타임 성능비교
 
제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합
제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합
제 5회 Lisp 세미나 - 클로저 개발팀을 위한 지속적인 통합
 
[하코사세미나]미리보는 대규모 자바스크립트 어플리케이션 개발
[하코사세미나]미리보는 대규모 자바스크립트 어플리케이션 개발[하코사세미나]미리보는 대규모 자바스크립트 어플리케이션 개발
[하코사세미나]미리보는 대규모 자바스크립트 어플리케이션 개발
 

Similar to What is the meteor?

[찾아가는세미나] 클라우드 데이터 가상화솔루션
[찾아가는세미나] 클라우드 데이터 가상화솔루션[찾아가는세미나] 클라우드 데이터 가상화솔루션
[찾아가는세미나] 클라우드 데이터 가상화솔루션해은 최
 
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...OpenStack Korea Community
 
Red Hat Forum 2012 - JBoss RHQ - Java Application Monitoring & Management Pla...
Red Hat Forum 2012 - JBoss RHQ - Java Application Monitoring & Management Pla...Red Hat Forum 2012 - JBoss RHQ - Java Application Monitoring & Management Pla...
Red Hat Forum 2012 - JBoss RHQ - Java Application Monitoring & Management Pla...Ted Won
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축Ji-Woong Choi
 
CoreDot TechSeminar 2018 - Session2 Ji Donghyun
CoreDot TechSeminar 2018 - Session2 Ji DonghyunCoreDot TechSeminar 2018 - Session2 Ji Donghyun
CoreDot TechSeminar 2018 - Session2 Ji DonghyunCore.Today
 
Rhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_ArchitectureRhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_ArchitectureRhea Strike
 
SK ICT Tech Summit 2019_BIG DATA-11번가_DP_v1.2.pdf
SK ICT Tech Summit 2019_BIG DATA-11번가_DP_v1.2.pdfSK ICT Tech Summit 2019_BIG DATA-11번가_DP_v1.2.pdf
SK ICT Tech Summit 2019_BIG DATA-11번가_DP_v1.2.pdfDeukJin Jeon
 
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석smartstudy_official
 
Tensorflow service & Machine Learning
Tensorflow service & Machine LearningTensorflow service & Machine Learning
Tensorflow service & Machine LearningJEEHYUN PAIK
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발Jeongkyu Shin
 
Kubernetes on GCP
Kubernetes on GCPKubernetes on GCP
Kubernetes on GCPDaegeun Kim
 
Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900Samsung Electronics
 
DB Monitoring 개념 및 활용 (박명규)
DB Monitoring 개념 및 활용 (박명규)DB Monitoring 개념 및 활용 (박명규)
DB Monitoring 개념 및 활용 (박명규)WhaTap Labs
 
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)NAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기현철 조
 
2. klaytn developer meetup #2 univ chain
2. klaytn developer meetup #2 univ chain2. klaytn developer meetup #2 univ chain
2. klaytn developer meetup #2 univ chain전 민규
 
Infra as Code with Packer, Ansible and Terraform
Infra as Code with Packer, Ansible and TerraformInfra as Code with Packer, Ansible and Terraform
Infra as Code with Packer, Ansible and TerraformInho Kang
 
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015Goonoo Kim
 
091106kofpublic 091108170852-phpapp02 (번역본)
091106kofpublic 091108170852-phpapp02 (번역본)091106kofpublic 091108170852-phpapp02 (번역본)
091106kofpublic 091108170852-phpapp02 (번역본)Taegil Heo
 

Similar to What is the meteor? (20)

[찾아가는세미나] 클라우드 데이터 가상화솔루션
[찾아가는세미나] 클라우드 데이터 가상화솔루션[찾아가는세미나] 클라우드 데이터 가상화솔루션
[찾아가는세미나] 클라우드 데이터 가상화솔루션
 
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...
[OpenInfra Days Korea 2018] Day 2 - E5: Mesos to Kubernetes, Cloud Native 서비스...
 
Red Hat Forum 2012 - JBoss RHQ - Java Application Monitoring & Management Pla...
Red Hat Forum 2012 - JBoss RHQ - Java Application Monitoring & Management Pla...Red Hat Forum 2012 - JBoss RHQ - Java Application Monitoring & Management Pla...
Red Hat Forum 2012 - JBoss RHQ - Java Application Monitoring & Management Pla...
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
CoreDot TechSeminar 2018 - Session2 Ji Donghyun
CoreDot TechSeminar 2018 - Session2 Ji DonghyunCoreDot TechSeminar 2018 - Session2 Ji Donghyun
CoreDot TechSeminar 2018 - Session2 Ji Donghyun
 
Rhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_ArchitectureRhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_Architecture
 
SK ICT Tech Summit 2019_BIG DATA-11번가_DP_v1.2.pdf
SK ICT Tech Summit 2019_BIG DATA-11번가_DP_v1.2.pdfSK ICT Tech Summit 2019_BIG DATA-11번가_DP_v1.2.pdf
SK ICT Tech Summit 2019_BIG DATA-11번가_DP_v1.2.pdf
 
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
 
Tensorflow service & Machine Learning
Tensorflow service & Machine LearningTensorflow service & Machine Learning
Tensorflow service & Machine Learning
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
 
Kubernetes on GCP
Kubernetes on GCPKubernetes on GCP
Kubernetes on GCP
 
RHAMT 소개
RHAMT 소개RHAMT 소개
RHAMT 소개
 
Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900Remote-debugging-based-on-notrace32-20130619-1900
Remote-debugging-based-on-notrace32-20130619-1900
 
DB Monitoring 개념 및 활용 (박명규)
DB Monitoring 개념 및 활용 (박명규)DB Monitoring 개념 및 활용 (박명규)
DB Monitoring 개념 및 활용 (박명규)
 
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)
[온라인교육시리즈] 글로벌 서비스를 위한 인프라 구축방법(남용현 클라우드 솔루션 아키텍트)
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
 
2. klaytn developer meetup #2 univ chain
2. klaytn developer meetup #2 univ chain2. klaytn developer meetup #2 univ chain
2. klaytn developer meetup #2 univ chain
 
Infra as Code with Packer, Ansible and Terraform
Infra as Code with Packer, Ansible and TerraformInfra as Code with Packer, Ansible and Terraform
Infra as Code with Packer, Ansible and Terraform
 
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
 
091106kofpublic 091108170852-phpapp02 (번역본)
091106kofpublic 091108170852-phpapp02 (번역본)091106kofpublic 091108170852-phpapp02 (번역본)
091106kofpublic 091108170852-phpapp02 (번역본)
 

What is the meteor?

  • 2. 목차 ● Meteor 뭐니? ● Modern Application Platform ● Reactive Platform o Blaze o DDP o LiveQuery ● Isomorphic Programming ● ReactJS/Flux & Meteor ● Environments
  • 3. Meteor 뭐니? ● Modern Application Platform o For Realtime (view & data) o Frontend & Backend Reactive Programming ● Like Node.js의 Spring Framework o For Fullstack development (one language) o Frontend & Backend Isomorphic Programming o Authentication (account), Authorization (collection)
  • 4. Modern Application Platform ● For Realtime ● Frontend - Reactive Templating o Blaze o AngularJS o ReactJS ● Middle - Latency Compensation o DDP (Distributed Data Protocol) o Client Data Cache (minimongo) ● Backend - Data Bus o Livequery
  • 5. Modern Application Platform For real Realtime To Reactive world
  • 6. Reactive Platform client browser server node.js data store outside process CUD User Events Reactive Snyc ● DDP : SocketJS ● Client Mini database (mongodb) Reactive Templating ● Tracker (library) for Blaze ● AngularJS, ReactJS Reactive Data ● LiveQuery Full Stack DB Driver production : mongodb experimental : redis working on etc
  • 7. Reative Platform - 영역 Meteor는 Frontend에서 Backend로 Reactive 프로그래밍의 확장 AngularJS ReactJS EmberJS Blaze DDP LiveQuery Mini-DataBase
  • 8. Reactive Platform - 확장 HA Proxy Master/Slave ETL Collector insert select insert 참조 1 : http://blog.mongolab.com/2014/07/tutorial-scaling-meteor-with-mongodb-oplog-tailing/ 참조 2 : https://meteorhacks.com/does-meteor-scale socketJS sticky session
  • 9. Blaze - Reactive Templating ● Tracker 기반으로 구현한 Reactive Templating 엔진 ● jQuery가 Imperative (명령형) 이라면 Blaze는 Declarative (선언형) 선언형 하나의 상태가 바뀌면 layout에 반영 - Reactive 명령형 필요한 곳에 로직을 추가하는 형태 - jQuery 방식 Reactive Templating 이해 : http://blog.percolatestudio.com/engineering/reactive-user-interfaces/ Tracker 소개 : https://atmospherejs.com/meteor/tracker
  • 10. DDP - Websocket based Data Protocol ● using websocket with SocketJS (sticky-session, HA scale-out 가능) ● DDP 는 websocket을 이용한 REST 와 같다. o http://2012.realtimeconf.com/video/matt-debergalis (동영상) ● DDP Client는 다양한 언어로 구현 가능 (ObjectiveDDP) to Meteor Server o http://meteorpedia.com/read/DDP_Clients ● 브라우져 connection 갯수 제한 관리, 재접속 관리 o https://atmospherejs.com/meteor/ddp ● 적용영역 o Client쪽에 mini database 가 있으면 o 대기시간 보정이 가능. latency-compensated o 대기시간 보정 설명 : http://kr.discovermeteor.com/chapters/latency-compensation/ o Collection에 대한 Meteor.subscribe, Meteor.call  http://kr.discovermeteor.com/chapters/publications-and-subscriptions/
  • 11. DDP 데이터 호출 흐름 출처 : https://opentutorials.org/module/1406/9000 Collection의 Pub/Sub with DDP for 대기시간 보정 Collection의 direct call to server
  • 12. Live Query - Reactive Store ● Database의 변경을 감시 ex) replication log 감시 in MongoDB o 따라서 MongoDB를 별도로 운영시 replica set을 구성해야 함. o replica set 안하면 polling해서 변경을 체크함 o https://www.meteor.com/livequery ● 변경에 대한 모든 부분을 통지 ex) RethinkDB and Firebase ● mongo 패키지에 함께 있음 o https://atmospherejs.com/meteor/mongo : full stack database driver
  • 13. Isomorphic Programming ● frotend & backend 하나의 언어, 동일 구조의 개발 ● 하나의 언어 : JavaScript ● 동일 구조 o client, server, public 이 아닌 폴더는 코드를 공유 : 중복 코드 제거 o MongoDB Collection Pub/Sub 및 권한 제어 o iron:router client/server 라우팅
  • 14. Environments ● 빌드 o isobuild 커맨드 툴 제공 : meteor run/deploy/build o .meteor 폴더에 배포. 마치 webpack의 묶음과 같음 o npm 도 사용 가능 ● 의존성 관리 o 패키지 추가 : meteor add XXXX o 패키지 배포 : atmospherejs.com ● 개발 편의성 o live reloading : 운영중에도 가능 o 별도 배포 테스트 서버 제공 : <subdomain>.meteor.com
  • 15. ReactJS/Flux & Meteor 출처 : https://github.com/AdamBrodzinski/react-ive-meteor http://react-ive.meteor.com/ << Flux 패턴 >> View에서 Action Creator 생성 Dispatcher에 전파 의뢰 Store에 정보 받아 View에 이벤트 발행 View는 Store 상태 정보를 가져와 화면 갱신
  • 16. ReactJS/Flux & Meteor 출처 : http://info.meteor.com/blog/optimistic-ui-with-meteor-latency-compensation << Flux 패턴 >> View에서 Action Creator 생성 Dispatcher에 전파 의뢰 Store에 정보 받아 View에 이벤트 발행 View는 Store 상태 정보를 가져와 화면 갱신 << 특징 >> 모든 접속 클라이언트에 변경 데이터를 전송함