참고 https://learnyousomeerlang.com/finite-state-machines#what-are-they 1. FSM(Finite State Machine)과 간단한 예시 FSM (유한상태머신)은 특정한 수의 State를 가지고, 이 중 하나의 State가 항상 Active되는 추상적인 모델을 의미한다. Dog에 대한 세 가지 State를 정의한 FSM를 살펴보면 다음과 같다. barks wag tail sits 짖고, 꼬리를 흔들고, 앉아있는 상태가 있다. 그리고 각 상태는 특정 작업이 트리거 되었을 때 다른 상태로 전이된다. 예를 들어 'sits' 상태의 개는 'see squirrels' 입력이 들어왔을 때 'barks' 상태로 전이된다. 위는 또 다른 예시인 고양이의 FSM이다...
참고 https://learnyousomeerlang.com/event-handlers#handle-this 1. Event Handlers 이전 글(https://ojt90902.tistory.com/1672)에서 작성했던 Pub - Sub 모델은 특정 이벤트가 발생했을 때, EventServer가 구독자에게 이벤트를 전송해준다. 이벤트를 받은 구독자들이 그 이벤트에 대한 각각의 작업을 진행한다. 이 방식은 각 구독자 프로세스가 이벤트를 따로 처리하기 때문에 '처리하는데 오랜 시간이 걸리는 함수'를 실행하는 경우에는 유용하다. 그러나 간단한 작업일 경우, 이벤트 구독을 기다리는 프로세스에 CPU 스케쥴러를 소모하기 때문에 컴퓨팅 파워를 효율적으로 사용하지 못할 수 있다. 이벤트마다 처리해야 할 작업이 ..
참고 https://learnyousomeerlang.com/building-applications-with-otp#a-pool-of-processes 1. Building an Application With OTP 얼랭 Application은 관련된 코드와 프로세스로 이루어진 하나의 그룹이다. OTP Application은 프로세스에 OTP behaviour를 사용해서 VM이 프로세스를 설정, 해체하는 방법을 알려주는 형태다. 예를 들어 OTP Behaviour를 사용하는 경우, init(), terminate() 등이 구현되어야 한다. 이번 장에서는 OTP Application의 일부를 작성할 것이고, 가장 먼저 프로세스 풀을 구현하는 방법에 대해서 이야기한다. 프로세스 풀은 어플리케이션에서 실행되는..
참조 https://learnyousomeerlang.com/supervisors#from-bad-to-good 1. From Bad To Good 이전에 구현했던 Supervisor는 process_flag(trap_exit, treu)를 이용해 시스템 프로세스가 되어서 워커 프로세스의 종료 신호를 받고 되살리는 작업을 했었다. 그런데 이 단순한 Supervisor는 근본적인 문제 두 가지를 가지고 있다. 단순 통신 오류로 Retry 한번만 다시 하면 사용할 수 있는 프로세스인데, 죽이고 처음부터 시작해야 함. 하나의 Supervisor는 하나의 워크 프로세스만 관리할 수 있음. OTP에서 제공해주는 슈퍼바이저는 위 단점을 해결해준다. 2. Supervisor Concepts 슈퍼바이저는 슈퍼바이저 -..
참고 https://learnyousomeerlang.com/what-is-otp#its-the-open-telecom-platform 1. What is OTP? erlang에서 안정적인 코드 작성을 위해서 link, monitor, servers, timeouts, trapping exits, hot cod loading, naming processe, supervisor 등의 기능을 사용해야했었다. 그런데 이런 코드들은 비즈니스 로직과 관련되었다기 보다는 부수적인 기능이다. OTP Framework는 이런 기능들을 프레임워크 형태로 지원해주고, 덕분에 개발자는 비즈니스 로직에만 집중할 수 있게 된다. 따라서 OTP Framework를 사용하는 것이 좋다. 2. The Common Process, A..