ݺߣ

ݺߣShare a Scribd company logo
맛만 보자 액터 모델이란? 
Jeff Lee
변해가는 주변 환경 
멀티코어 
CPU 클럭 상승의 한계 
분산환경 
ScaleUp의 한계 
클라우드 컴퓨팅 활성화
Parallel(병렬성) vs DzԳܰԳ(병행성)
DzԳܰԳ(병행성)의 도전 
암달의 법칙(Amdahl's law) 
병렬 컴퓨팅에서 멀티 프로세서를 사용할 
때 프로그램의 성능향상은 프로그램의 순 
차적인 부분에 의해 제한된다. 예를 들면, 
프로그램의 95%가 병렬화 할 수 있다면 
이론적인 최대 성능 향상은 아무리 많은 
프로세서를 사용하더라도 최대 20배로 제 
한된다. 
http://en.wikipedia.org/wiki/Amdahl's_law
DzԳܰԳ(병행성) 방법 
Processes 
Threads
DzԳܰԳ(병행성) 데이터 전달 방법 
Share 
Copy
DzԳܰԳ(병행성)
Theads
Theads
Thead의 문제점 
Shared mutable state 
예측이 불가능한 상황이 만들어짐 
Synchronoization 
monitor & lock 
deadlock, starvation, livelock
Thead의 문제점 
Thead는 프로그램 하기 어렵다. 
“Thread를 사용하는 대부분의 프로그램 
들은 버그로 가득 차 있다.” 
Havoc Pennington @ Dreamforce 2011
현재 최선의 방법
Actor Model 
다른 액터에 한정된 개수의 메세지를 보낼 수 있다. 
유한한 개수의 액터를 만들어 낼 수 있다. 
다른 액터가 받을 메세지에 수반될 행동(behavior)을 지정 할 수 
있다. 
이런 일들이 동시적으로 진행되는데 있어 미리 정해진 순서는 없 
다. 
- 칼 휴이트(1973)
Actor Model 
현실에 액터(사람)를 상상하면 이해하기 편하다. 
- 사람은 생각을 공유 못하고 전자우편으로 소통한다. 
- 액터는 이름, 행동, 의사소통으로 구성 
Message passing 
No shared memory
Actor Model
Actor Model 
Bruce : “그 때(루비를 만들었을 당시)로 돌아간다면, 어떤 기 
능에 변화를 주고 싶으세요?” 
Matz: “Thread를 없애고, Actor 나 또는 진보된 형태의 동시 
성 기능을 추가했을꺼예요.” 
Interview with Yukihiro Matsumoto (the creator of Ruby) 
from the book, “Seven Languages in Seven Weeks”
STM (Software Transactional Memory) 
소프트웨어 트랜잭셔널 메모리(Software Transactional Memory, STM)는 컴퓨 
터 과학에서 병렬 컴퓨팅에서 공유 메모리으로의 접근을 제어하기 위한 데이터 
베이스 트랜잭션과 유사한 동시성 제어 구조이다. 여기에서 트랜잭션은 공유 메 
모리에 읽기 및 쓰기를 수행하는 코드 조각을 가리킨다. 하나의 트랜잭션 안에서 
수행되는 읽기 및 쓰기는 논리적으로 한 순간에 수행되는 것으로 이해할 수 있 
다. 
http://ko.wikipedia.org/wiki/소프트웨어_트랜잭셔널_메모리 
http://en.wikipedia.org/wiki/Software_transactional_memory 
ACI(원자성, 일관성, 고립성) 보장 - D(지속성) 제외
변해가는 요구 조건 
운영 서버 수 
데이터 크기 
응답 시간 
가동률
Reactive Application 
event-driven 
이벤트 기반의 비동기 통신 
scalable 
수요에 맞게 쉽게 확장 및 업그레이드 
resilient 
장애에 내성이 높음 
responsive 
적절한 응답 및 빠른 반응 속도
Akka.io 
JVM 위에서 작동하는 reactive application을 쉽 
게 만들기 위한 라이브러리 및 런타임 
Actor Programming Model 
Asynchonous/non-blocking 
Isolated mutable state
Actors
맛만 보자 액터 모델이란
맛만 보자 액터 모델이란
Remoting
Supervisor
참고자료. 
[H3 2012] 꽃보다 Scala 
http://www.slideshare.net/kthcorp/scala-15041890 
Actors and Threads 
http://www.slideshare.net/mperham/actors-and-threads 
Akka.io 
http://akka.io/ 
The Reactive Manifesto 
http://www.reactivemanifesto.org/
Ad

Recommended

Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Esun Kim
Multithread & shared_ptr
Multithread & shared_ptr
내훈 정
Windows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCP
Seungmo Koo
Akka-intro-training-public.pdf
Akka-intro-training-public.pdf
BernardDeffarges
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
잘 알려지지 않은 숨은 진주, Winsock API - WSAPoll, Fast Loopback
흥배 최
테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템
QooJuice
ٰ12峢dz게임서버설계왶구현
ٰ12峢dz게임서버설계왶구현
noerror
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
devCAT Studio, NEXON
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
devCAT Studio, NEXON
게임서버프로그래밍 #1 - IOCP
게임서버프로그래밍 #1 - IOCP
Seungmo Koo
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
Heungsub Lee
GraalVM
GraalVM
NexThoughts Technologies
Kafka at Peak Performance
Kafka at Peak Performance
Todd Palino
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013
devCAT Studio, NEXON
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략
YEONG-CHEON YOU
게임 분산 서버 구조
게임 분산 서버 구조
Hyunjik Bae
Online game server on Akka.NET (NDC2016)
Online game server on Akka.NET (NDC2016)
Esun Kim
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
Heungsub Lee
Scalability, Availability & Stability Patterns
Scalability, Availability & Stability Patterns
Jonas Bonér
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
devCAT Studio, NEXON
Windows IOCP vs Linux EPOLL Performance Comparison
Windows IOCP vs Linux EPOLL Performance Comparison
Seungmo Koo
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
Seungmo Koo
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
devCAT Studio, NEXON
Quic을 이용한 네트워크 성능 개선
Quic을 이용한 네트워크 성능 개선
NAVER D2
Tomcatx performance-tuning
Tomcatx performance-tuning
Vladimir Khokhryakov
Ndc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABC
Ho Gyu Lee
중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직
Hoyoung Choi
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화
Jaeseung Ha
​『함수형 반응형 프로그래밍』 맛보기
​『함수형 반응형 프로그래밍』 맛보기
복연 이
Akka & Actor model
Akka & Actor model
Tae Young Lee

More Related Content

What's hot (20)

홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
devCAT Studio, NEXON
게임서버프로그래밍 #1 - IOCP
게임서버프로그래밍 #1 - IOCP
Seungmo Koo
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
Heungsub Lee
GraalVM
GraalVM
NexThoughts Technologies
Kafka at Peak Performance
Kafka at Peak Performance
Todd Palino
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013
devCAT Studio, NEXON
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략
YEONG-CHEON YOU
게임 분산 서버 구조
게임 분산 서버 구조
Hyunjik Bae
Online game server on Akka.NET (NDC2016)
Online game server on Akka.NET (NDC2016)
Esun Kim
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
Heungsub Lee
Scalability, Availability & Stability Patterns
Scalability, Availability & Stability Patterns
Jonas Bonér
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
devCAT Studio, NEXON
Windows IOCP vs Linux EPOLL Performance Comparison
Windows IOCP vs Linux EPOLL Performance Comparison
Seungmo Koo
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
Seungmo Koo
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
devCAT Studio, NEXON
Quic을 이용한 네트워크 성능 개선
Quic을 이용한 네트워크 성능 개선
NAVER D2
Tomcatx performance-tuning
Tomcatx performance-tuning
Vladimir Khokhryakov
Ndc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABC
Ho Gyu Lee
중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직
Hoyoung Choi
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화
Jaeseung Ha
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
devCAT Studio, NEXON
게임서버프로그래밍 #1 - IOCP
게임서버프로그래밍 #1 - IOCP
Seungmo Koo
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
Heungsub Lee
Kafka at Peak Performance
Kafka at Peak Performance
Todd Palino
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013
devCAT Studio, NEXON
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략
YEONG-CHEON YOU
게임 분산 서버 구조
게임 분산 서버 구조
Hyunjik Bae
Online game server on Akka.NET (NDC2016)
Online game server on Akka.NET (NDC2016)
Esun Kim
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
Heungsub Lee
Scalability, Availability & Stability Patterns
Scalability, Availability & Stability Patterns
Jonas Bonér
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
devCAT Studio, NEXON
Windows IOCP vs Linux EPOLL Performance Comparison
Windows IOCP vs Linux EPOLL Performance Comparison
Seungmo Koo
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
Seungmo Koo
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
전형규, 좋은 이름, 나쁜 이름, 이상한 이름, NDC2018
devCAT Studio, NEXON
Quic을 이용한 네트워크 성능 개선
Quic을 이용한 네트워크 성능 개선
NAVER D2
Ndc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABC
Ho Gyu Lee
중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직
Hoyoung Choi
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화
[NDC 2014] 던전앤파이터 클라이언트 로딩 최적화
Jaeseung Ha

Viewers also liked (10)

​『함수형 반응형 프로그래밍』 맛보기
​『함수형 반응형 프로그래밍』 맛보기
복연 이
Akka & Actor model
Akka & Actor model
Tae Young Lee
An Actor Model in Go
An Actor Model in Go
Weaveworks
Functional Reactive Programming With RxSwift
Functional Reactive Programming With RxSwift
선협 이
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
Jong Wook Kim
Cascadia.js: Don't Cross the Streams
Cascadia.js: Don't Cross the Streams
mattpodwysocki
[1B4]안드로이드 동시성_프로그래밍
[1B4]안드로이드 동시성_프로그래밍
NAVER D2
Functional Reactive Programming with RxJS
Functional Reactive Programming with RxJS
stefanmayer13
RxJS and Reactive Programming - Modern Web UI - May 2015
RxJS and Reactive Programming - Modern Web UI - May 2015
Ben Lesh
서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015
서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015
NAVER / MusicPlatform
​『함수형 반응형 프로그래밍』 맛보기
​『함수형 반응형 프로그래밍』 맛보기
복연 이
An Actor Model in Go
An Actor Model in Go
Weaveworks
Functional Reactive Programming With RxSwift
Functional Reactive Programming With RxSwift
선협 이
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
NDC14 - Rx와 Functional Reactive Programming으로 고성능 서버 만들기
Jong Wook Kim
Cascadia.js: Don't Cross the Streams
Cascadia.js: Don't Cross the Streams
mattpodwysocki
[1B4]안드로이드 동시성_프로그래밍
[1B4]안드로이드 동시성_프로그래밍
NAVER D2
Functional Reactive Programming with RxJS
Functional Reactive Programming with RxJS
stefanmayer13
RxJS and Reactive Programming - Modern Web UI - May 2015
RxJS and Reactive Programming - Modern Web UI - May 2015
Ben Lesh
서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015
서버 개발자가 바라 본 Functional Reactive Programming with RxJava - SpringCamp2015
NAVER / MusicPlatform
Ad

Similar to 맛만 보자 액터 모델이란 (20)

Visual C++10을 활용한 병렬 프로그래밍
Visual C++10을 활용한 병렬 프로그래밍
흥배 최
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
NAVER D2
Akka actor model
Akka actor model
ssuserf36ea6
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
내훈 정
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
내훈 정
Concurreny programming
Concurreny programming
Jaejin Yun
Introduction to akka
Introduction to akka
Minho Kim
Data-Oriented Design과 유니티 DOTS
Data-Oriented Design과 유니티 DOTS
Sukwoo Lee
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
Sungchul Park
Multithread pattern 소개
Multithread pattern 소개
Sunghyouk Bae
서버를 위한 동시성 모델과 Staged eventdrivenarchitecture
서버를 위한 동시성 모델과 Staged eventdrivenarchitecture
HyeonSeok Choi
Introduction to Parallel Programming
Introduction to Parallel Programming
UNIST
면접 대비 벡터, CS 개념과 사례
면접 대비 벡터, CS 개념과 사례
Soochan Park
Rankwave MOMENT™ (Korean)
Rankwave MOMENT™ (Korean)
HyoungEun Kim
Visual C++10을 활용한 병렬 프로그래밍
Visual C++10을 활용한 병렬 프로그래밍
흥배 최
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
NAVER D2
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
내훈 정
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
내훈 정
Concurreny programming
Concurreny programming
Jaejin Yun
Introduction to akka
Introduction to akka
Minho Kim
Data-Oriented Design과 유니티 DOTS
Data-Oriented Design과 유니티 DOTS
Sukwoo Lee
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
Sungchul Park
Multithread pattern 소개
Multithread pattern 소개
Sunghyouk Bae
서버를 위한 동시성 모델과 Staged eventdrivenarchitecture
서버를 위한 동시성 모델과 Staged eventdrivenarchitecture
HyeonSeok Choi
Introduction to Parallel Programming
Introduction to Parallel Programming
UNIST
면접 대비 벡터, CS 개념과 사례
면접 대비 벡터, CS 개념과 사례
Soochan Park
Rankwave MOMENT™ (Korean)
Rankwave MOMENT™ (Korean)
HyoungEun Kim
Ad

More from jbugkorea (19)

Hawkular overview
Hawkular overview
jbugkorea
미들웨어 엔지니어의 클라우드 탐방기
미들웨어 엔지니어의 클라우드 탐방기
jbugkorea
기업, 통합, 마이크로서비스
기업, 통합, 마이크로서비스
jbugkorea
개발자가 인프라를 만났을때 - RHQ를 활용한 Legacy System 모니터링
개발자가 인프라를 만났을때 - RHQ를 활용한 Legacy System 모니터링
jbugkorea
JBUG Korea 소개
JBUG Korea 소개
jbugkorea
Micro Service Architecture 탐방기
Micro Service Architecture 탐방기
jbugkorea
Jbug 발표 msa탐방기_공유자료
Jbug 발표 msa탐방기_공유자료
jbugkorea
Micro Service Architecture(MSA) 탐방기
Micro Service Architecture(MSA) 탐방기
jbugkorea
INFINISPAN non-clustering Spring4 WEB/MOBILE APP 구축
INFINISPAN non-clustering Spring4 WEB/MOBILE APP 구축
jbugkorea
테스트 어디까지 해봤니? Arquillian을 이용한 Real Object 테스트
테스트 어디까지 해봤니? Arquillian을 이용한 Real Object 테스트
jbugkorea
맛만 보자 Undertow
맛만 보자 Undertow
jbugkorea
맛만 보자 Finagle이란
맛만 보자 Finagle이란
jbugkorea
Undertow 맛보기
Undertow 맛보기
jbugkorea
JBoss Community Introduction
JBoss Community Introduction
jbugkorea
JBoss AS 7 따라잡기
JBoss AS 7 따라잡기
jbugkorea
Wildfly 8.0에서 SOAP 웹 서비스 구현
Wildfly 8.0에서 SOAP 웹 서비스 구현
jbugkorea
Infinispan Data Grid Platform
Infinispan Data Grid Platform
jbugkorea
Java 8 - A step closer to Parallelism
Java 8 - A step closer to Parallelism
jbugkorea
JBoss Community's Application Monitoring Platform
JBoss Community's Application Monitoring Platform
jbugkorea
미들웨어 엔지니어의 클라우드 탐방기
미들웨어 엔지니어의 클라우드 탐방기
jbugkorea
기업, 통합, 마이크로서비스
기업, 통합, 마이크로서비스
jbugkorea
개발자가 인프라를 만났을때 - RHQ를 활용한 Legacy System 모니터링
개발자가 인프라를 만났을때 - RHQ를 활용한 Legacy System 모니터링
jbugkorea
Micro Service Architecture 탐방기
Micro Service Architecture 탐방기
jbugkorea
Jbug 발표 msa탐방기_공유자료
Jbug 발표 msa탐방기_공유자료
jbugkorea
Micro Service Architecture(MSA) 탐방기
Micro Service Architecture(MSA) 탐방기
jbugkorea
INFINISPAN non-clustering Spring4 WEB/MOBILE APP 구축
INFINISPAN non-clustering Spring4 WEB/MOBILE APP 구축
jbugkorea
테스트 어디까지 해봤니? Arquillian을 이용한 Real Object 테스트
테스트 어디까지 해봤니? Arquillian을 이용한 Real Object 테스트
jbugkorea
맛만 보자 Undertow
맛만 보자 Undertow
jbugkorea
맛만 보자 Finagle이란
맛만 보자 Finagle이란
jbugkorea
Undertow 맛보기
Undertow 맛보기
jbugkorea
JBoss Community Introduction
JBoss Community Introduction
jbugkorea
JBoss AS 7 따라잡기
JBoss AS 7 따라잡기
jbugkorea
Wildfly 8.0에서 SOAP 웹 서비스 구현
Wildfly 8.0에서 SOAP 웹 서비스 구현
jbugkorea
Infinispan Data Grid Platform
Infinispan Data Grid Platform
jbugkorea
Java 8 - A step closer to Parallelism
Java 8 - A step closer to Parallelism
jbugkorea
JBoss Community's Application Monitoring Platform
JBoss Community's Application Monitoring Platform
jbugkorea

맛만 보자 액터 모델이란

  • 1. 맛만 보자 액터 모델이란? Jeff Lee
  • 2. 변해가는 주변 환경 멀티코어 CPU 클럭 상승의 한계 분산환경 ScaleUp의 한계 클라우드 컴퓨팅 활성화
  • 4. DzԳܰԳ(병행성)의 도전 암달의 법칙(Amdahl's law) 병렬 컴퓨팅에서 멀티 프로세서를 사용할 때 프로그램의 성능향상은 프로그램의 순 차적인 부분에 의해 제한된다. 예를 들면, 프로그램의 95%가 병렬화 할 수 있다면 이론적인 최대 성능 향상은 아무리 많은 프로세서를 사용하더라도 최대 20배로 제 한된다. http://en.wikipedia.org/wiki/Amdahl's_law
  • 10. Thead의 문제점 Shared mutable state 예측이 불가능한 상황이 만들어짐 Synchronoization monitor & lock deadlock, starvation, livelock
  • 11. Thead의 문제점 Thead는 프로그램 하기 어렵다. “Thread를 사용하는 대부분의 프로그램 들은 버그로 가득 차 있다.” Havoc Pennington @ Dreamforce 2011
  • 13. Actor Model 다른 액터에 한정된 개수의 메세지를 보낼 수 있다. 유한한 개수의 액터를 만들어 낼 수 있다. 다른 액터가 받을 메세지에 수반될 행동(behavior)을 지정 할 수 있다. 이런 일들이 동시적으로 진행되는데 있어 미리 정해진 순서는 없 다. - 칼 휴이트(1973)
  • 14. Actor Model 현실에 액터(사람)를 상상하면 이해하기 편하다. - 사람은 생각을 공유 못하고 전자우편으로 소통한다. - 액터는 이름, 행동, 의사소통으로 구성 Message passing No shared memory
  • 16. Actor Model Bruce : “그 때(루비를 만들었을 당시)로 돌아간다면, 어떤 기 능에 변화를 주고 싶으세요?” Matz: “Thread를 없애고, Actor 나 또는 진보된 형태의 동시 성 기능을 추가했을꺼예요.” Interview with Yukihiro Matsumoto (the creator of Ruby) from the book, “Seven Languages in Seven Weeks”
  • 17. STM (Software Transactional Memory) 소프트웨어 트랜잭셔널 메모리(Software Transactional Memory, STM)는 컴퓨 터 과학에서 병렬 컴퓨팅에서 공유 메모리으로의 접근을 제어하기 위한 데이터 베이스 트랜잭션과 유사한 동시성 제어 구조이다. 여기에서 트랜잭션은 공유 메 모리에 읽기 및 쓰기를 수행하는 코드 조각을 가리킨다. 하나의 트랜잭션 안에서 수행되는 읽기 및 쓰기는 논리적으로 한 순간에 수행되는 것으로 이해할 수 있 다. http://ko.wikipedia.org/wiki/소프트웨어_트랜잭셔널_메모리 http://en.wikipedia.org/wiki/Software_transactional_memory ACI(원자성, 일관성, 고립성) 보장 - D(지속성) 제외
  • 18. 변해가는 요구 조건 운영 서버 수 데이터 크기 응답 시간 가동률
  • 19. Reactive Application event-driven 이벤트 기반의 비동기 통신 scalable 수요에 맞게 쉽게 확장 및 업그레이드 resilient 장애에 내성이 높음 responsive 적절한 응답 및 빠른 반응 속도
  • 20. Akka.io JVM 위에서 작동하는 reactive application을 쉽 게 만들기 위한 라이브러리 및 런타임 Actor Programming Model Asynchonous/non-blocking Isolated mutable state
  • 26. 참고자료. [H3 2012] 꽃보다 Scala http://www.slideshare.net/kthcorp/scala-15041890 Actors and Threads http://www.slideshare.net/mperham/actors-and-threads Akka.io http://akka.io/ The Reactive Manifesto http://www.reactivemanifesto.org/