Scripties - Bibliotheek - Universiteit van Amsterdam
현대 컴퓨팅에서 고성능 시스템에는 동시성 프로그래밍이 필수적이다. Akka 플랫폼은 이러한 요구를 충족시키는 프로그래밍 모델을 제공한다. 그러나 Akka에 대한 체계적인 성능 분석 연구는 존재하지 않는다. 따라서 본 학위논문은 그러한 연구를 제안한다. 이를 위해 먼저 마이크로벤치마크 실험에서 Akka의 성능을 자바와 비교하여 Akka의 오버헤드와 서로 다른 스레딩 모델을 보여주었다. 더 나아가 Akka를 다른 모델들과 비교하기 위해 Computer Language Benchmarks Game(CLBG)의 두 애플리케이션을 Akka로 이식했고, 원래 CLBG 모델들과 CPU 사용량, 압축된 코드 크기, 샘플링된 메모리 사용량으로 성능을 비교했다. 그 결과 Akka는 자바와 유사한 성능을 보였다. 이 분석을 바탕으로, 비차단(non-blocking) 동시 실행 애플리케이션에서는 Akka가 자바와 비슷한 성능을 낼 수 있지만, 일반적으로 Akka의 코드 크기는 더 크다는 결론을 내린다.
우리가 사는 세상은 날이 갈수록 (실시간) 연결성을 더욱 중요하게 여기며, 고성능 분산 애플리케이션에 대한 수요는 계속해서 증가하고 있습니다. 좋은 성능을 보장하기 위해서는 적절한 설계와 구현이 중요하며, 이러한 애플리케이션에 적합한 프로그래밍 모델을 선택하는 것 또한 중요합니다. 동시성(Concurrency)은 이러한 분산 애플리케이션에서 중요한 역할을 합니다.
Akka 플랫폼은 액터 기반 모델을 통해 네이티브 동시성을 제공함으로써 분산 애플리케이션에서 뛰어난 성능을 보인다고 주장합니다. 이 플랫폼은 실시간 클라우드 기반 서비스를 전문으로 하는 회사인 Lightbend가 만든 모듈 모음인 Akka 툴킷을 포함합니다 [1]. 이 툴킷은 두 가지 주요 프로그래밍 언어인 Scala와 Java를 지원합니다. 이 프로젝트에서는 우리가 언어에 익숙하기 때문에 Akka의 Java 구현만을 평가합니다.
문제는 현재 Akka를 다른 모델과 비교한 체계적인 성능 분석 연구가 없다는 것입니다. Akka의 성능 분석은 새로운 애플리케이션을 설계할 때 올바른 모델을 선택하는 데 도움을 줄 수 있습니다. 이 논문은 언급된 문제를 해결하는 것을 목표로 합니다.
Akka와 다른 모델들을 비교하여 체계적인 성능을 제시하기 위해, 우리는 이 논문에서 다음의 연구 질문에 답하고자 합니다:
"Akka 액터 모델은 다른 모델들과 비교하여 어떤 성능을 보이는가?"
이 논문은 Akka의 핵심 모듈인 Akka 액터 모델의 성능을 평가하는 데 중점을 둡니다. Akka는 액터 모델 프로그래밍 원칙을 사용하며, 우리의 성능 분석은 이 추상화(abstraction)가 예를 들어 Java의 일반적인 객체 지향 프로그래밍(OOP)과 같은 다른 프로그래밍 원칙에 비해 성능에 어떤 영향을 미치는지에 대한 통찰력을 제공합니다.
연구 질문에 답하기 위해 우리는 두 가지 다른 유형의 비교를 제안하며, 구체적으로 두 개의 하위 질문을 다룹니다:
SQ1에 답하기 위해, 우리는 간단한 합성 프로그램(synthetic program)을 통해 Java 멀티스레딩과 Akka 액터를 마이크로벤치마킹합니다 (3장). 두 번째 하위 질문(SQ2)을 위해, 우리는 Computer Language Benchmarks Game(CLBG)을 사용하여 Akka를 다른 많은 모델들과 벤치마킹합니다. CLBG는 아직 Akka를 기본적으로 지원하지 않기 때문에, 우리는 CLBG에 포함된 기존 입력 프로그램을 Akka로 이식(porting)하는 과정에 대해서도 보고합니다. 이 이식 과정과 CLBG 결과는 4장에서 찾아볼 수 있습니다. 5장에서는 보고서를 마무리하고 우리의 연구 결과를 논의합니다.
만약 Akka와 같은 새로운 모델이 기존 프로그램에서 다른 모델들보다 훨씬 더 나은 성능을 보이지 않는다면, 기존 프로그램을 다시 작성하는 것은 그만한 가치가 없을 수 있습니다. 모든 프로그래밍 모델은 주어진 프로그램에 따라 관련성이 달라지는 각기 다른 사용 사례와 기능을 가지고 있기 때문에, (현재로서는) '최고의' 모델과 같은 것은 없다는 점을 잊어서는 안 됩니다. 이에 대한 좋은 비유는 이것입니다: 뛰어난 단거리 선수이면서 동시에 마라톤 선수가 되는 것은 매우 어렵다.