본문 바로가기

01. Concurrent Programming

Concurrency의 관점에서 본 JVM VS ERTS erlang과 Scala / Java는 각각 ERTS와 JVM이라는 가상 머신에서 동작하는 언어입니다. 그렇다면 Concurrency의 관점에서 각각의 Virtual Machine이 얼마나 효율적으로 작동하는 지 한번 생각해볼 만한 가치가 있습니다. 이 포스팅은 논문 “Comparison of Erlang Runtime System and Java Virtual Machine”을 바탕으로 만들어졌습니다. 들어가기 전에 말씀드리는 것은 JVM은 매우 많은 수정 / 보안을 거쳐서 기본적인 연산 속도가 매우 빠릅니다. Operation Performance의 측면은 보지 않으니, 참고 바랍니다. JVM vs ERTS Memory Architecture 기본적으로 JVM은 많이 사용하는 Oracle의 HotSp.. 더보기
OTP의 기본 gen_server 오늘은 OTP의 가장 기초적인 gen_server에 대해 한번 알아봅시다. gen_server는 모든 OTP server의 기본이 되는 것이라서 이것만 잘 알아도 erlang Code를 알아보는데 큰 도움이 됩니다. 먼저 우리가 gen_server로 무엇을 하고 싶은 지부터 생각해봅시다. 저번의 게시물을 리뷰 해봅시다. 여기서 보듯이 우리는 “서버를 켜고 → Request를 받아 그것을 처리하고 → 할 일을 다 했으면 서버를 내리고” 싶습니다. 매우 간단한 원리 입니다.(사실 여기서 요청을 하는 것을 처리하는 게 복잡한거지! 라고 하면 할말이 없긴 합니다.) 어찌 되었든 이러한 간단한 생각을 바탕으로 만들어진 것이 gen_server입니다. 그럼 "서버를 켜는 루틴, Request를 받아 그것을 처리하는.. 더보기
erlang OTP란 1. erlang OTP란erlang OPT는 Open Telecom Platform의 약자입니다. 여기서 Telecom이라는 부분 때문에 오해를 사는 부분이 있는데,erlang OTP는 매우 generic한 Actor Model입니다. Akka Document에도 알 수 있듯, 대표적인 Actor Model인 Akka에도 erlang OTP를 계승 발전하여 만든 부분이 많습니다.(Akka의 원래 이름도 Scala OTP였습니다. 그 흔적은 다음에서 찾을 수 있습니다. https://github.com/jboner/scala-otp) 그렇다면 Akka의 조상 격인 erlang OTP에 대해서 설명을 시작하겠습니다.(그렇다고 erlang/OTP가 구식이라는 것은 아닙니다. 현재 erlang과 OTP는 계속.. 더보기