26
맛만 보자 액터 모델이란? Jeff Lee

맛만 보자 액터 모델이란

Embed Size (px)

DESCRIPTION

맛만 보자 액터 모델이란

Citation preview

Page 1: 맛만 보자 액터 모델이란

맛만 보자 액터 모델이란?Jeff Lee

Page 2: 맛만 보자 액터 모델이란

변해가는 주변 환경

멀티코어

CPU 클럭 상승의 한계분산환경

ScaleUp의 한계

클라우드 컴퓨팅 활성화

Page 3: 맛만 보자 액터 모델이란

Parallel(병렬성) vs Concurrent(병행성)

Page 4: 맛만 보자 액터 모델이란

Concurrent(병행성)의 도전암달의 법칙(Amdahl's law)

병렬 컴퓨팅에서 멀티 프로세서를 사용할 때 프로그램의 성능향상은 프로그램의 순차적인 부분에 의해 제한된다. 예를 들면, 프로그램의 95%가 병렬화 할 수 있다면 이론적인 최대 성능 향상은 아무리 많은 프로세서를 사용하더라도 최대 20배로 제한된다.http://en.wikipedia.org/wiki/Amdahl's_law

Page 5: 맛만 보자 액터 모델이란

Concurrent(병행성) 방법

ProcessesThreads

Page 6: 맛만 보자 액터 모델이란

Concurrent(병행성) 데이터 전달 방법

ShareCopy

Page 7: 맛만 보자 액터 모델이란

Concurrent(병행성)

Page 8: 맛만 보자 액터 모델이란

Theads

Page 9: 맛만 보자 액터 모델이란

Theads

Page 10: 맛만 보자 액터 모델이란

Thead의 문제점

Shared mutable state예측이 불가능한 상황이 만들어짐

Synchronoizationmonitor & lockdeadlock, starvation, livelock

Page 11: 맛만 보자 액터 모델이란

Thead의 문제점

Thead는 프로그램 하기 어렵다.

“Thread를 사용하는 대부분의 프로그램들은 버그로 가득 차 있다.”

Havoc Pennington @ Dreamforce 2011

Page 12: 맛만 보자 액터 모델이란

현재 최선의 방법

Page 13: 맛만 보자 액터 모델이란

Actor Model다른 액터에 한정된 개수의 메세지를 보낼 수 있다. 유한한 개수의 액터를 만들어 낼 수 있다. 다른 액터가 받을 메세지에 수반될 행동(behavior)을 지정 할 수 있다. 이런 일들이 동시적으로 진행되는데 있어 미리 정해진 순서는 없다.

- 칼 휴이트(1973)

Page 14: 맛만 보자 액터 모델이란

Actor Model

현실에 액터(사람)를 상상하면 이해하기 편하다.- 사람은 생각을 공유 못하고 전자우편으로 소통한다.

- 액터는 이름, 행동, 의사소통으로 구성

Message passingNo shared memory

Page 15: 맛만 보자 액터 모델이란

Actor Model

Page 16: 맛만 보자 액터 모델이란

Actor ModelBruce : “그 때(루비를 만들었을 당시)로 돌아간다면, 어떤 기능에 변화를 주고 싶으세요?”

Matz: “Thread를 없애고, Actor 나 또는 진보된 형태의 동시성 기능을 추가했을꺼예요.”

Interview with Yukihiro Matsumoto (the creator of Ruby)from the book, “Seven Languages in Seven Weeks”

Page 17: 맛만 보자 액터 모델이란

STM (Software Transactional Memory)

소프트웨어 트랜잭셔널 메모리(Software Transactional Memory, STM)는 컴퓨터 과학에서 병렬 컴퓨팅에서 공유 메모리으로의 접근을 제어하기 위한 데이터베이스 트랜잭션과 유사한 동시성 제어 구조이다. 여기에서 트랜잭션은 공유 메모리에 읽기 및 쓰기를 수행하는 코드 조각을 가리킨다. 하나의 트랜잭션 안에서 수행되는 읽기 및 쓰기는 논리적으로 한 순간에 수행되는 것으로 이해할 수 있다.

http://ko.wikipedia.org/wiki/소프트웨어_트랜잭셔널_메모리http://en.wikipedia.org/wiki/Software_transactional_memory

ACI(원자성, 일관성, 고립성) 보장 - D(지속성) 제외

Page 18: 맛만 보자 액터 모델이란

변해가는 요구 조건

운영 서버 수데이터 크기응답 시간가동률

Page 19: 맛만 보자 액터 모델이란

Reactive Application

event-driven이벤트 기반의 비동기 통신

scalable수요에 맞게 쉽게 확장 및 업그레이드

resilient장애에 내성이 높음

responsive적절한 응답 및 빠른 반응 속도

Page 20: 맛만 보자 액터 모델이란

Akka.io

JVM 위에서 작동하는 reactive application을 쉽게 만들기 위한 라이브러리 및 런타임Actor Programming Model Asynchonous/non-blockingIsolated mutable state

Page 21: 맛만 보자 액터 모델이란

Actors

Page 22: 맛만 보자 액터 모델이란
Page 23: 맛만 보자 액터 모델이란
Page 24: 맛만 보자 액터 모델이란

Remoting

Page 25: 맛만 보자 액터 모델이란

Supervisor

Page 26: 맛만 보자 액터 모델이란

참고자료.[H3 2012] 꽃보다 Scalahttp://www.slideshare.net/kthcorp/scala-15041890Actors and Threadshttp://www.slideshare.net/mperham/actors-and-threadsAkka.iohttp://akka.io/The Reactive Manifestohttp://www.reactivemanifesto.org/