SlideShare ist ein Scribd-Unternehmen logo
1 von 37
Downloaden Sie, um offline zu lesen
DAY2%/%Track%3%/
11:00~11:45
김요한
CONTENTS

- Consistent Hashing
- 분산 코드네이터

5. 더 고민해야 할 부분
- 공유 데이터 관리
- 모듈 기반 어플리케이션
- 대용량 Connection 관리
1. Scalability
1 Scalability

When you add twice as many servers, are you twice as fast
(or have twice the capacity)?
- LiveJournal

https://www.usenix.org/legacy/events/usenix07/tech/slides/fitzpatrick.pdf

Replacing all components of a car while driving it at
100mph.
- Instagram

https://www.unboundid.com/blog/2012/06/27/scaling-at-100mph
1 Scalability
1 Scalability
http://stalk.io
<script type="text/javascript" src="http://www.stalk.io/stalk.js" charset="utf-8" ></script>
<script language="javascript">
STALK.init();
</script>
2. Async Event Looping Server
2 Async Event Looping Server

Single'Thread'로'Event'Looping'처리'하는'비동기'서버
core'당'하나의'thread'/'저사양'/'고성
능

/'WebSocket'추상화

cf.'DB'연결'Transaction'관리'/'좀'더'오래'걸리는'작업'/'일반적인'업무'시스템
2 Async Event Looping Server

http://www.techempower.com/benchmarks/
2 Async Event Looping Server

서버만$많다면$될까?
3. Reverse Proxy Server
3 Reverse Proxy Server

L4#/#L7#Switch

?
3 Reverse Proxy Server

Reverse&Proxy
3 Reverse Proxy Server

Reverse&Proxy
L4&Switch
3 Reverse Proxy Server

HAProxy + Varnish
Fully Dynamic Contents

HaProxy

Varnish
3 Reverse Proxy Server
참고로,

Job Queueing

Gearman, RabbitMQ + Celery (instagram, pinterest)

Job$Worker
Job$Worker
Job$Queue$Server
Job$Worker
비동기 처리

Job$Worker
병렬 프로세싱
3 Reverse Proxy Server
public!class!ReverseProxyServer!extends!Verticle!{
!!public!void!start()!!{
!!!!HttpClient!clients[]!=
!!{vertx.createHttpClient().setHost("10.21.32.01").setPort(8282),
:::vertx.createHttpClient().setHost("10.21.32.02").setPort(8282),
:::vertx.createHttpClient().setHost("10.21.32.03").setPort(8282),:.:.:.
};

Reverse&Proxy&서버는&

“&부하&분산&”&은&어떻게?
“&무중단&서버&추가&”&는&어떻게?

!!!!vertx.createHttpServer().requestHandler(new!Handler()!{
!!!!!!public!void!handle(final!HttpServerRequest!req)!{
!!!!!!!!final!HttpClientRequest!cReq!=!clients.get().request(req,
!!!!!!!!!new!Handler<HttpClientResponse>()!{
!!!!!!!!!!public!void!handle(HttpClientResponse!cRes)!{
!!!!!!!!!!!!cRes.dataHandler(new!Handler<Buffer>()!{
!!!!!!!!!!!!!!req.response.write(data);
!!!!!!!!!!!!});

신규서버&추가&/&장애&서버&처리&.&.&.&.&Auto&Scale&Out&?

!!!!!!!!!!!!cRes.endHandler(new!SimpleHandler()!{
!!!!!!!!!!!!!req.response.end();
!!!!!!!!!!!!});
!!!!!!!!!!}
!!!!!!!!});
!!!!!!}
!!!!}).listen(8080);
vert.x 로 Reverse
!!}

Proxy 서버 구현하기.
4. 분산서버 노드 관리
- Consistent Hashing
- 분산 코드네이터
4.1 Consistent Hashing
부하 분산 방법 ?

Consistent(Hashing
4.1 Consistent Hashing

Service&Server

A

D

Token&Ring

C

value&=&HASH(

B

)
4.1 Consistent Hashing
A

D

value#=#HASH(

B

장애#발생#!!

C
A#-#C#구간이#넓어서#C#에#부하가#많을#수#있다#!

)
4.1 Consistent Hashing

B C
D
C
B
A
D

D A

B C

A

D

value&=&HASH(

)

A
B
C
D
B

A
C

A
B
C

B

D

A
D

C

C
B A
C D

B

A
value&=&HASH(

)
4.1 Consistent Hashing

B C
D
C
B
A
D

D A

B C

A

D

value&=&HASH(

)

A
B
C
D
B

A
C

A
B
C
D

B
A
D

C

C
B A
C D

B

A
value&=&HASH(

)
4.1 Consistent Hashing
public!class!ConsistentHash<T>{
ConsistentHash.add(‘nodeA’,...);
!!!!!!!!private!final!HashFunction!hashFunction!=!Hashing.md5();
!!!!!!!!private!final!SortedMap<Long,!T>!circle!=!new
TreeMap<Long,!T>();
ConsistentHash.add(‘nodeB’,...);
!!!!!!!!public!void!add(String!name,!T!node)!{
!!!!!!!!!!!!!!!!!!!!!!!
circle.put(hashFunction.hashString(name).asLong(),node);
!!!!!!!!public!void!remove(String!name)!{
!!!!!!!!}
!!!!!!!!!!!!!!!!!!!!!!!
circle.remove(hashFunction.hashString(name).asLong());
ConsistentHash.add(‘nodeC’,...);
!!!!!!!!}
!!!!!!!!public!T!get(String!value)!{
!!!!!!!!!!!!!!!!long!hash!=!hashFunction.hashString(value).asLong();
!!!!!!!!!!!!!!!!if!(!circle.containsKey(hash))!{
!!!!!!!!!!!!!!!!!!!!!!!!SortedMap<Long,!T>!tailMap!=!circle.tailMap(hash);
!!!!!!!!!!!!!!!!!!!!!!!!hash!=
ConsistentHash.add(‘nodeD’,...);
tailMap.isEmpty()?circle.firstKey():tailMap.firstKey();
!!!!!!!!!!!!!!!!}
!!!!!!!!!!!!!!!!return!circle.get(hash);
!!!!!!!!}
4.1 Consistent Hashing
public!class!ConsistentHash<T>{
!!!!!!!!private!final!HashFunction!hashFunction!=!Hashing.md5();
!!!!!!!!private!final!SortedMap<Long,!T>!circle!=!new!TreeMap<Long,!T>();
!!!!!!!!private!final!int!numberOfReplicas!=!100;
!!!!!!!!public!void!add(String!name,!T!node)!{
!!!!!!!!!!!!!!!!for!(int!i!=!0;!i!<!numberOfReplicas;!i++)!{
!!!!!!!!!!!!!!!!!!!!!!!!circle.put(hashFunction.hashString(name!+
i).asLong(),node);
!!!!!!!!!!!!!!!!}
!!!!!!!!}
!!!!!!!!public!void!remove(String!name)!{
!!!!!!!!!!!!!!!!for!(int!i!=!0;!i!<!numberOfReplicas;!i++)!{
!!!!!!!!!!!!!!!!!!!!!!!!circle.remove(hashFunction.hashString(name!+
i).asLong());
!!!!!!!!!!!!!!!!}
!!!!!!!!}
!!!!!!!!public!T!get(String!value)!{
!!!!!!!!!!!!!!!!long!hash!=!hashFunction.hashString(value).asLong();
!!!!!!!!!!!!!!!!if!(!circle.containsKey(hash))!{
!!!!!!!!!!!!!!!!!!!!!!!!SortedMap<Long,!T>!tailMap!=!circle.tailMap(hash);
!!!!!!!!!!!!!!!!!!!!!!!!hash!=
tailMap.isEmpty()?circle.firstKey():tailMap.firstKey();
!!!!!!!!!!!!!!!!}
4.1 Consistent Hashing
public!class!ConsistentHash<T>{
!!!!!!!!private!final!HashFunction!hashFunction!=!Hashing.md5();
!!!!!!!!private!final!SortedMap<Long,!T>!circle!=!new!TreeMap<Long,!T>();
private!final!int!numberOfReplicas!=
!!!!!!!!private!final!int!numberOfReplicas!=!100;
100;

모두#똑같이#해야#하나?

!!!!!!!!public!void!add(String!name,!T!node)!{
!!!!!!!!!!!!!!!!for!(int!i!=!0;!i!<!numberOfReplicas;!i++)!{
!!!!!!!!!!!!!!!!!!!!!!!!circle.put(hashFunction.hashString(name!+
서버의#CPU#Core#수#나#네트워크#구간#등#고려
i).asLong(),node);
!!!!!!!!!!!!!!!!}
!!!!!!!!}
!!!!!!!!public!void!remove(String!name)!{
!!!!!!!!!!!!!!!!for!(int!i!=!0;!i!<!numberOfReplicas;!i++)!{
!!!!!!!!!!!!!!!!!!!!!!!!circle.remove(hashFunction.hashString(name!+
i).asLong());
!!!!!!!!!!!!!!!!}
!!!!!!!!}
!!!!!!!!public!T!get(String!value)!{
!!!!!!!!!!!!!!!!long!hash!=!hashFunction.hashString(value).asLong();
!!!!!!!!!!!!!!!!if!(!circle.containsKey(hash))!{
!!!!!!!!!!!!!!!!!!!!!!!!SortedMap<Long,!T>!tailMap!=!circle.tailMap(hash);
!!!!!!!!!!!!!!!!!!!!!!!!hash!=
tailMap.isEmpty()?circle.firstKey():tailMap.firstKey();
!!!!!!!!!!!!!!!!}
4.1 Consistent Hashing
replics

(standard deviation)

서버#노드#10#개를#1#부터#500#개#까지#relicas#로#배치#10,000#번의#consistent#Hashing#결과

https://weblogs.java.net/blog/tomwhite/archive/2007/11/consistent_hash.html
4.2 분산 코디네이터

zkClient.get().create("/serviceServers/nodeA",%%%//%서버정보를%가지고%있는%zNode%Path5
55555555555555555555555555555555"1.1.1.1:8080".getBytes(),5//%zNode%의%데이터,%서버%상세정보%(Null%이어도
됨)
55555555555555555555555555555555CreateMode.EPHEMERAL);%%%%%//%zNode%타입%(EPHEMERAL%:%임시노드%/
PERSISTENT%:%영구생성)

EPHEMERAL(타입은(Zookeeper(서버에(접속이(끊어지면,(자동으로(삭제(!!

서비스(서버(장애로(Shutdown(되면(Zookeeper(목록에서(자동으로(삭제(가능

zkClient.get().create("/serviceServers/nodeB",%.%.%.%.
.
zkClient.get().create("/serviceServers/nodeC",%.%.%.%.
.
zkClient.get().create("/serviceServers/nodeD",%.%.%.%.
.

Apache ZooKeeper™
/serviceServers/nodeA
55555555555555/nodeB
55555555555555/nodeC
55555555555555/nodeD
4.2 분산 코디네이터

Apache ZooKeeper™

/serviceServers/nodeA
--------------/nodeB
--------------/nodeC
--------------/nodeD
-----------------:
-----------------:

노드"삭제

create"node

서버"목록을"watching"하면서"
2
Proxy"서버의"서비스"서버"목록을"동기화"!! watching

reverse"proxy"server

3

1

서비스"서버가"startup"될때"zookeeper"Server"에"연
결해서"EPHEMERAL"노드"생성

장애"발생""
zookeeper"와"연결이"자동으로"끊어짐!!

서비스"서버"목록을"Ring"에"추가

Consistent"Hashing

<"service"servers">
4.2 분산 코디네이터

장애#발생시#자동#삭제#될#수#있도록!CreateMode.EPHEMERAL!로#Znode#생성
?
하지만,#또#다른#문제들.
-#네트워크#문제로#znode#가#삭제
-#Disk#Full,#Memory,#CPU#.#.#.#.#?

CreateMode.PERSISTENT!로#Znode#생성#후#데몬으로#서버들의#상태#관리.

Auto#Scaling#이#가능하도록#해야#할#것.
5. 더 고민해야 할 부분
- 공유데이터관리
- 모듈 기반 어플리케이션
- 대용량 Connection 관리
5.1 공유 데이터 관리

WAS$의$Cluster$는$장애$/$성능$저하의$주된$원인$!
Tomcat$의$session$replication$:$DeltaManager$or$BackupManager
해결책$중$하나$-$NAVER$의$TripleS$(Shared$Session$System)
http://helloworld.naver.com/helloworld/233847
?
5.1 공유 데이터 관리
를"활용한"공유"데이터"(session)"공유하기
ZooKeeper™

Redis Cluster Manager
create/delete
redis"node

redis"서버"목록을"Ring"에
주가하고"동기화"한다.

watching

heartbeat
redis"상태"체크!!

.".".

Reverse"Proxy
server

Consistent"Hashing

shard 1

.".".
get"/"set"session"datas

shard 2

.".".

<"servers">

shard 3
5.1 공유 데이터 관리
공유하지%않는%것%(shared%nothing)%이%가장%좋은%방법
!!
<%servers%>
Reverse%Proxy
server

체팅방명(키)이%hash%key

HASH%(“체팅방%A”)

HASH%(“체팅방%B”)
Consistent%Hashing

이%서비스%서버에%“체팅방%A”%에%입장한
모든%접속자%목록은%Local%메모리에%저
장하고%있다.
5.2 모듈 기반 어플리케이션

var!http!!!!!=!require('http');

vertx.deployModule("webCserverCv1.2",!config,!1);

var!sender!!!=!require('./lib/messageSenderMod');

vertx.deployModule("modCmessageSenderCv0.1",!config,!1);

var!receiver!=!require('./lib/messageReceiverMod');

vertx.deployModule("modCmessageReceiverCv0.1",!config,!1);

var!auth!!!!!=!require('./lib/userAuthMod');

vertx.deployModule("modCuserAuthCv0.1",!config,!1);

var!buddy!!!!=!require('./lib/buddyMgrMod');

vertx.deployModule("modCbuddyMgsCv0.1",!config,!1);

.&.&.&.&.&.&.&.&.&.&.

.&.&.&.&.&.&.&.&.&.&.

서버의$기능들을$분리해$구현한$모듈들
232 deview2013 oss를활용한분산아키텍처구현

Weitere ähnliche Inhalte

Was ist angesagt?

Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015Stephane Manciot
 
[1D1]신개념 N스크린 웹 앱 프레임워크 PARS
[1D1]신개념 N스크린 웹 앱 프레임워크 PARS[1D1]신개념 N스크린 웹 앱 프레임워크 PARS
[1D1]신개념 N스크린 웹 앱 프레임워크 PARSNAVER D2
 
Building web apps with node.js, socket.io, knockout.js and zombie.js - Codemo...
Building web apps with node.js, socket.io, knockout.js and zombie.js - Codemo...Building web apps with node.js, socket.io, knockout.js and zombie.js - Codemo...
Building web apps with node.js, socket.io, knockout.js and zombie.js - Codemo...Ivan Loire
 
Introduction to vSphere APIs Using pyVmomi
Introduction to vSphere APIs Using pyVmomiIntroduction to vSphere APIs Using pyVmomi
Introduction to vSphere APIs Using pyVmomiMichael Rice
 
Java EE 7 Soup to Nuts at JavaOne 2014
Java EE 7 Soup to Nuts at JavaOne 2014Java EE 7 Soup to Nuts at JavaOne 2014
Java EE 7 Soup to Nuts at JavaOne 2014Arun Gupta
 
Node.js Explained
Node.js ExplainedNode.js Explained
Node.js ExplainedJeff Kunkle
 
Original slides from Ryan Dahl's NodeJs intro talk
Original slides from Ryan Dahl's NodeJs intro talkOriginal slides from Ryan Dahl's NodeJs intro talk
Original slides from Ryan Dahl's NodeJs intro talkAarti Parikh
 
IaC and Immutable Infrastructure with Terraform, Сергей Марченко
IaC and Immutable Infrastructure with Terraform, Сергей МарченкоIaC and Immutable Infrastructure with Terraform, Сергей Марченко
IaC and Immutable Infrastructure with Terraform, Сергей МарченкоSigma Software
 
Vagrant for real codemotion (moar tips! ;-))
Vagrant for real codemotion (moar tips! ;-))Vagrant for real codemotion (moar tips! ;-))
Vagrant for real codemotion (moar tips! ;-))Michele Orselli
 
Nuts and Bolts of WebSocket Devoxx 2014
Nuts and Bolts of WebSocket Devoxx 2014Nuts and Bolts of WebSocket Devoxx 2014
Nuts and Bolts of WebSocket Devoxx 2014Arun Gupta
 
Nodejs first class
Nodejs first classNodejs first class
Nodejs first classFin Chen
 
Puppet and Apache CloudStack
Puppet and Apache CloudStackPuppet and Apache CloudStack
Puppet and Apache CloudStackPuppet
 
Resource registries plone conf 2014
Resource registries plone conf 2014Resource registries plone conf 2014
Resource registries plone conf 2014Ramon Navarro
 
Pushing the web — WebSockets
Pushing the web — WebSocketsPushing the web — WebSockets
Pushing the web — WebSocketsRoland M
 
Vue routing tutorial getting started with vue router
Vue routing tutorial getting started with vue routerVue routing tutorial getting started with vue router
Vue routing tutorial getting started with vue routerKaty Slemon
 
Nodejs getting started
Nodejs getting startedNodejs getting started
Nodejs getting startedTriet Ho
 
Automation with Ansible and Containers
Automation with Ansible and ContainersAutomation with Ansible and Containers
Automation with Ansible and ContainersRodolfo Carvalho
 
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010Arun Gupta
 

Was ist angesagt? (20)

Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
Packaging et déploiement d'une application avec Docker et Ansible @DevoxxFR 2015
 
The SPDY Protocol
The SPDY ProtocolThe SPDY Protocol
The SPDY Protocol
 
[1D1]신개념 N스크린 웹 앱 프레임워크 PARS
[1D1]신개념 N스크린 웹 앱 프레임워크 PARS[1D1]신개념 N스크린 웹 앱 프레임워크 PARS
[1D1]신개념 N스크린 웹 앱 프레임워크 PARS
 
Building web apps with node.js, socket.io, knockout.js and zombie.js - Codemo...
Building web apps with node.js, socket.io, knockout.js and zombie.js - Codemo...Building web apps with node.js, socket.io, knockout.js and zombie.js - Codemo...
Building web apps with node.js, socket.io, knockout.js and zombie.js - Codemo...
 
Introduction to vSphere APIs Using pyVmomi
Introduction to vSphere APIs Using pyVmomiIntroduction to vSphere APIs Using pyVmomi
Introduction to vSphere APIs Using pyVmomi
 
Java EE 7 Soup to Nuts at JavaOne 2014
Java EE 7 Soup to Nuts at JavaOne 2014Java EE 7 Soup to Nuts at JavaOne 2014
Java EE 7 Soup to Nuts at JavaOne 2014
 
Node.js Explained
Node.js ExplainedNode.js Explained
Node.js Explained
 
Original slides from Ryan Dahl's NodeJs intro talk
Original slides from Ryan Dahl's NodeJs intro talkOriginal slides from Ryan Dahl's NodeJs intro talk
Original slides from Ryan Dahl's NodeJs intro talk
 
IaC and Immutable Infrastructure with Terraform, Сергей Марченко
IaC and Immutable Infrastructure with Terraform, Сергей МарченкоIaC and Immutable Infrastructure with Terraform, Сергей Марченко
IaC and Immutable Infrastructure with Terraform, Сергей Марченко
 
Vagrant for real codemotion (moar tips! ;-))
Vagrant for real codemotion (moar tips! ;-))Vagrant for real codemotion (moar tips! ;-))
Vagrant for real codemotion (moar tips! ;-))
 
Nuts and Bolts of WebSocket Devoxx 2014
Nuts and Bolts of WebSocket Devoxx 2014Nuts and Bolts of WebSocket Devoxx 2014
Nuts and Bolts of WebSocket Devoxx 2014
 
Nodejs first class
Nodejs first classNodejs first class
Nodejs first class
 
Puppet and Apache CloudStack
Puppet and Apache CloudStackPuppet and Apache CloudStack
Puppet and Apache CloudStack
 
Resource registries plone conf 2014
Resource registries plone conf 2014Resource registries plone conf 2014
Resource registries plone conf 2014
 
Node js
Node jsNode js
Node js
 
Pushing the web — WebSockets
Pushing the web — WebSocketsPushing the web — WebSockets
Pushing the web — WebSockets
 
Vue routing tutorial getting started with vue router
Vue routing tutorial getting started with vue routerVue routing tutorial getting started with vue router
Vue routing tutorial getting started with vue router
 
Nodejs getting started
Nodejs getting startedNodejs getting started
Nodejs getting started
 
Automation with Ansible and Containers
Automation with Ansible and ContainersAutomation with Ansible and Containers
Automation with Ansible and Containers
 
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010
 

Andere mochten auch

Alluxio Presentation at Strata San Jose 2016
Alluxio Presentation at Strata San Jose 2016Alluxio Presentation at Strata San Jose 2016
Alluxio Presentation at Strata San Jose 2016Jiří Šimša
 
Getting Started with Alluxio + Spark + S3
Getting Started with Alluxio + Spark + S3Getting Started with Alluxio + Spark + S3
Getting Started with Alluxio + Spark + S3Alluxio, Inc.
 
Play node conference
Play node conferencePlay node conference
Play node conferenceJohn Kim
 
Alluxio Keynote at Strata+Hadoop World Beijing 2016
Alluxio Keynote at Strata+Hadoop World Beijing 2016Alluxio Keynote at Strata+Hadoop World Beijing 2016
Alluxio Keynote at Strata+Hadoop World Beijing 2016Alluxio, Inc.
 
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기John Kim
 
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015Goonoo Kim
 
Java/Spring과 Node.js의공존
Java/Spring과 Node.js의공존Java/Spring과 Node.js의공존
Java/Spring과 Node.js의공존동수 장
 

Andere mochten auch (8)

Alluxio Presentation at Strata San Jose 2016
Alluxio Presentation at Strata San Jose 2016Alluxio Presentation at Strata San Jose 2016
Alluxio Presentation at Strata San Jose 2016
 
Getting Started with Alluxio + Spark + S3
Getting Started with Alluxio + Spark + S3Getting Started with Alluxio + Spark + S3
Getting Started with Alluxio + Spark + S3
 
Play node conference
Play node conferencePlay node conference
Play node conference
 
Alluxio Keynote at Strata+Hadoop World Beijing 2016
Alluxio Keynote at Strata+Hadoop World Beijing 2016Alluxio Keynote at Strata+Hadoop World Beijing 2016
Alluxio Keynote at Strata+Hadoop World Beijing 2016
 
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
 
Node.js in Flitto
Node.js in FlittoNode.js in Flitto
Node.js in Flitto
 
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
 
Java/Spring과 Node.js의공존
Java/Spring과 Node.js의공존Java/Spring과 Node.js의공존
Java/Spring과 Node.js의공존
 

Ähnlich wie 232 deview2013 oss를활용한분산아키텍처구현

five Sling features you should know
five Sling features you should knowfive Sling features you should know
five Sling features you should knowconnectwebex
 
Indeed Flex: The Story of a Revolutionary Recruitment Platform
Indeed Flex: The Story of a Revolutionary Recruitment PlatformIndeed Flex: The Story of a Revolutionary Recruitment Platform
Indeed Flex: The Story of a Revolutionary Recruitment PlatformHostedbyConfluent
 
OpenShift for Java EE Developers
OpenShift for Java EE DevelopersOpenShift for Java EE Developers
OpenShift for Java EE DevelopersMarkus Eisele
 
The Cloud-natives are RESTless @ JavaOne
The Cloud-natives are RESTless @ JavaOneThe Cloud-natives are RESTless @ JavaOne
The Cloud-natives are RESTless @ JavaOneKonrad Malawski
 
End-to-end HTML5 APIs - The Geek Gathering 2013
End-to-end HTML5 APIs - The Geek Gathering 2013End-to-end HTML5 APIs - The Geek Gathering 2013
End-to-end HTML5 APIs - The Geek Gathering 2013Alexandre Morgaut
 
node.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoonnode.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang YoonJesang Yoon
 
Building Scalable Web Apps - LVL.UP KL
Building Scalable Web Apps - LVL.UP KLBuilding Scalable Web Apps - LVL.UP KL
Building Scalable Web Apps - LVL.UP KLGareth Davies
 
SXSW 2012 JavaScript MythBusters
SXSW 2012 JavaScript MythBustersSXSW 2012 JavaScript MythBusters
SXSW 2012 JavaScript MythBustersElena-Oana Tabaranu
 
HTTP Session Replication with Oracle Coherence, GlassFish, WebLogic
HTTP Session Replication with Oracle Coherence, GlassFish, WebLogicHTTP Session Replication with Oracle Coherence, GlassFish, WebLogic
HTTP Session Replication with Oracle Coherence, GlassFish, WebLogicOracle
 
Embulk, an open-source plugin-based parallel bulk data loader
Embulk, an open-source plugin-based parallel bulk data loaderEmbulk, an open-source plugin-based parallel bulk data loader
Embulk, an open-source plugin-based parallel bulk data loaderSadayuki Furuhashi
 
The Javascript Toolkit 2.0
The Javascript Toolkit 2.0The Javascript Toolkit 2.0
The Javascript Toolkit 2.0Marcos Vinícius
 
Apache Falcon - Simplifying Managing Data Jobs on Hadoop
Apache Falcon - Simplifying Managing Data Jobs on HadoopApache Falcon - Simplifying Managing Data Jobs on Hadoop
Apache Falcon - Simplifying Managing Data Jobs on HadoopDataWorks Summit
 
Riga Dev Day - Automated Android Continuous Integration
Riga Dev Day - Automated Android Continuous IntegrationRiga Dev Day - Automated Android Continuous Integration
Riga Dev Day - Automated Android Continuous IntegrationNicolas Fränkel
 
Introduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azureIntroduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azureColin Mackay
 
Horizontal scaling with Galaxy
Horizontal scaling with GalaxyHorizontal scaling with Galaxy
Horizontal scaling with GalaxyEnis Afgan
 

Ähnlich wie 232 deview2013 oss를활용한분산아키텍처구현 (20)

five Sling features you should know
five Sling features you should knowfive Sling features you should know
five Sling features you should know
 
Indeed Flex: The Story of a Revolutionary Recruitment Platform
Indeed Flex: The Story of a Revolutionary Recruitment PlatformIndeed Flex: The Story of a Revolutionary Recruitment Platform
Indeed Flex: The Story of a Revolutionary Recruitment Platform
 
OpenShift for Java EE Developers
OpenShift for Java EE DevelopersOpenShift for Java EE Developers
OpenShift for Java EE Developers
 
The Cloud-natives are RESTless @ JavaOne
The Cloud-natives are RESTless @ JavaOneThe Cloud-natives are RESTless @ JavaOne
The Cloud-natives are RESTless @ JavaOne
 
Future of web_apps
Future of web_appsFuture of web_apps
Future of web_apps
 
End-to-end HTML5 APIs - The Geek Gathering 2013
End-to-end HTML5 APIs - The Geek Gathering 2013End-to-end HTML5 APIs - The Geek Gathering 2013
End-to-end HTML5 APIs - The Geek Gathering 2013
 
node.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoonnode.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoon
 
Enterprise service bus part 2
Enterprise service bus part 2Enterprise service bus part 2
Enterprise service bus part 2
 
Building Scalable Web Apps - LVL.UP KL
Building Scalable Web Apps - LVL.UP KLBuilding Scalable Web Apps - LVL.UP KL
Building Scalable Web Apps - LVL.UP KL
 
SXSW 2012 JavaScript MythBusters
SXSW 2012 JavaScript MythBustersSXSW 2012 JavaScript MythBusters
SXSW 2012 JavaScript MythBusters
 
HTTP Session Replication with Oracle Coherence, GlassFish, WebLogic
HTTP Session Replication with Oracle Coherence, GlassFish, WebLogicHTTP Session Replication with Oracle Coherence, GlassFish, WebLogic
HTTP Session Replication with Oracle Coherence, GlassFish, WebLogic
 
Embulk, an open-source plugin-based parallel bulk data loader
Embulk, an open-source plugin-based parallel bulk data loaderEmbulk, an open-source plugin-based parallel bulk data loader
Embulk, an open-source plugin-based parallel bulk data loader
 
Webpack
Webpack Webpack
Webpack
 
The Javascript Toolkit 2.0
The Javascript Toolkit 2.0The Javascript Toolkit 2.0
The Javascript Toolkit 2.0
 
DavidWible_res
DavidWible_resDavidWible_res
DavidWible_res
 
Apache Falcon - Simplifying Managing Data Jobs on Hadoop
Apache Falcon - Simplifying Managing Data Jobs on HadoopApache Falcon - Simplifying Managing Data Jobs on Hadoop
Apache Falcon - Simplifying Managing Data Jobs on Hadoop
 
Riga Dev Day - Automated Android Continuous Integration
Riga Dev Day - Automated Android Continuous IntegrationRiga Dev Day - Automated Android Continuous Integration
Riga Dev Day - Automated Android Continuous Integration
 
Introduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azureIntroduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azure
 
ESIGate dev meeting #4 21-11-2013
ESIGate dev meeting #4 21-11-2013ESIGate dev meeting #4 21-11-2013
ESIGate dev meeting #4 21-11-2013
 
Horizontal scaling with Galaxy
Horizontal scaling with GalaxyHorizontal scaling with Galaxy
Horizontal scaling with Galaxy
 

Mehr von NAVER D2

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다NAVER D2
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...NAVER D2
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기NAVER D2
 
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발NAVER D2
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈NAVER D2
 
[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&ANAVER D2
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기NAVER D2
 
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep LearningNAVER D2
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applicationsNAVER D2
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingNAVER D2
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지NAVER D2
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기NAVER D2
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화NAVER D2
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)NAVER D2
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기NAVER D2
 
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual SearchNAVER D2
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화NAVER D2
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지NAVER D2
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터NAVER D2
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?NAVER D2
 

Mehr von NAVER D2 (20)

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다
 
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기
 
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발
 
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
 
[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A
 
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기
 
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning
 
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications
 
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
 
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
 
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화
 
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
 
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
 
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual Search
 
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화
 
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
 
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?
 

232 deview2013 oss를활용한분산아키텍처구현