23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
컴퓨터 사이언스 분야에서 액터 모델이란 동시 계산을 위한 기본 수단으로써 액터를 사용하는 수학 모델입니다. 액터는 요청 메시지를 수신하고, 뭔가를 결정(계산)하거나, 다른 액터를 생성하거나, 메시지를 다른 액터들에 전송하거나 하는 방식으로 요청 메시지 처리를 할 수 있습니다. 또한 프라이빗 상태(액터 자신만 변경 가능하고, 액터 외부에서는 접근이 불가능한)를 관리 할 수 있습니다.
이러한 액터 모델은 1973년 Carl Hewitt에 의해서 계산의 이론적 이해를 위한 프레임워크와 동시성 시스템 구현을 위한 기반 이론으로 제시 되었습니다. Carl Hewitt의 언급에 의하면 이전에 나온 계산 모델들과 다르게 액터 모델은 물리학의 상대성 이론이나 양자 역학에서 영감을 얻었고, Lisp,Simula,Smalltalk같은 언어와 패킷 스위칭등에 영향을 받았다고 합니다. 또한 액터 모델은 고속 네트워크로 통신할수 있고 각각의 로컬 메모리를 가지는 수십,수백,수천 개의 독립 프로세스들로 구성된 고성능 병렬 컴퓨팅 기계의 출현을 예상하고 개발 했다고 합니다.
오래 전에(제가 태어나기도 전에) 제시된 이러한 모델이 왜 요즘 사람들의 관심을 받고 있을까요 ? 휴잇의 언급에 답이 있습니다. 요즘(사실 조금 오래 전부터) CPU의 성능 향상은 물리적 한계 때문에 코어의 클럭을 높이는 방식 보다는, 코어의 개수를 늘려서 성능 향상을 하고 있습니다. CPU의 코어 개수는 계속 늘어 가지만, 이를 제대로 활용해서 CPU의 성능을 최대한 사용하는 소프트웨어의 개발은 쉽지 않습니다. Thread나 Lock같은 저수준 구성 요소들로 CPU성능을 최대한 끌어 내면서, 오류 없는 동시 처리 프로그램을 개발하기는 쉽지 않습니다. 이러한 어려움때문에 동시 처리 프로그래밍 모델로써 액터 모델이 사람들의 관심을 끌고 있습니다.
스칸디나 반도에 있는 어떤 산(mountain)이름 입니다. 농담 입니다. Lightbend(구 typesafe)사에서 Open Source로 개발한 Actor Model 구현체 입니다. 당연히, 액터 프로그래밍을 지원 합니다. Akka는 JVM상에서 동시성 프로그램, 분산 프로그램, Fault-tolerant프로그램을 개발하기 위한 툴 킷과 runtime을 제공하기 위해서 개발 되었습니다. 스칼라 언어로 개발되었으며, 스칼라와 자바 바인딩을 지원 합니다(자바를 쓰셔도 akka툴킷을 사용할 수 있습니다. 개인 취향 문제 지만, 코드가 상당히 ugly합니다).
''365 x 24시간 어떤 상황이 발생해도 대량의 요청에 대해서 아주 짦은 시간안에 응답을 할수 있는 아키텍쳐를 가지는 애플리케이션 ?''
아카는 "The Reactive Manifesto"를 준수하는 애플리케이션을 개발하는데 적합 합니다. Reactive 애플레이케이션은 Reactive Manifesto에서 정의하는 아래의 요구사항들을 준수하는 Architecture를 가지는 애플리케이션을 의미 합니다.
처음 접하시는 분들은 쉽게 와 닫지 않습니다. 부연 설명을 덧붙이면, 여러 분이 개발하는 애플리케이션 시스템이 "Event-Driven기반으로 대량의 요청에 대해서 아주 짧은 시간안에 응답을 하고, 요청이 늘어나도 시스템의 확장도 쉽게 되고, 반응 속도도 떨어 지지 않고, 심지어 시스템 구성 요소(H/W or S/W)에 장애가 발생해도 장애를 잘 극복하면서 항상 응답"을 할 수 있으면 여러 분이 개발하는 애플리케이션은 Reactive 애플리케이션 입니다.
아카 툴킷을 이용해서 이런 애플리케이션을 개발하는 방식에 대해서 하나씩 알아가 보도록 하지요. 다음 번 글에서는 Akka에서 구현한 액터 모델에 대해서 조금더 자세히 소개 하겠습니다.
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.