참고 https://learnyousomeerlang.com/the-count-of-applications#from-otp-application-to-real-application 1. 이번 챕터에서 할 일 이번 챕터에서는 다음 작업을 진행하려고 한다. 이전에 구현했던 ppool을 이용해서 특정 작업을 진행함. 특정 작업은 .erl 파일을 읽고, 각 정규표현식에 해당되는 수식이 몇 개 있는지 Count 하는 것임. 이렇게 구현할 어플리케이션의 이름은 erlcount라고 한다. 다음과 같은 구조로 갈 것이고, 각 모듈의 역할은 다음과 같다. erlcount_counter : 프로세스 풀의 워커로 동작함. erlcount_sup : 워커 프로세스의 슈퍼바이저로 동작함. erlcount_dispatch : 디..
참고 https://learnyousomeerlang.com/distribunomicon#firewalls 10 . The Calls from Beyond 앞선 장에서 분산 얼랭에서 필요한 기초적인 부분을 모두 공부했다. 아래에서는 알면 좋을만한 도구를 더 공부하려고 한다. 10.1 얼랭 쉘에서 분산 노드 실행하기 net_kernel:start([Name, Type, HeartbeatInMilliseconds]) % for example net_kernel:start([romero, shortnames, 15000]). 다음 명령어를 이용하면 얼랭 쉘에서 새로운 분산 노드를 실행할 수 있다. 얼랭은 각 분산 노드들이 살아있는 상태를 유지하도록 'HeartBeat'을 보내는데, 기본값은 15초다. 즉, 얼..
참고 https://learnyousomeerlang.com/distribunomicon#alone-in-the-dark 1. Alone in the dark 단일 서버에서 실행되는 소프트웨어는 그 서버가 다운될 경우 기능하지 못한다. 고가용성을 확보하기 위해 여러 서버에 동일한 어플리케이션을 배포할 수 있다. 그러나 이렇게 확보되는 '고가용성'은 한 대의 서버가 다운되었을 때, 이를 적절히 처리할 수 있어야만 확보할 수 있다. 많은 노드가 서로 통신하는 방법 통신의 Serialize, Deserialize 하는 방법 다중 프로세스의 개념을 많은 노드로 확장하는 방법 네트워크 장애를 모니터링 하는 방법 얼랭을 이용해 분산 시스템에 필요한 몇 가지 피쳐를 작성할 수 있다. 그러나 여기서 가장 중요한 부분은..
참고 https://learnyousomeerlang.com/ets#the-concepts-of-ets 1. ETS가 필요한 이유 ETS(Erlang Term Stroage)가 필요한 이유는 다음과 같다. 프로세스가 내부 스택 영역에 데이터를 저장하는 것은 일반적으로 좋은 선택임. 프로세스 간에 데이터를 공유해야 할 때는, 프로세스의 스택 영역에 데이터를 저장하는 것으로는 해결할 수 없음. 이런 이유 때문에 모든 프로세스가 전역적으로 접근할 수 있는 것이 필요한데, 이런 기능을 제공해주는 것이 ETS(Erlang Term Storage)다. 1.1 ETS란? ETS(Erlang Team Storage)에 대해서 간단히 알아보자. ETS는 Erlang VM에 포함된 인메모리 DB임. 업데이트 허용되고, G..
참고 https://learnyousomeerlang.com/building-otp-applications#why-would-i-want-that 1. 왜 OTP Application이 필요한가? 여러 개발자가 서로 다른 방식의 스크립트를 작성하고, 그 스크립트를 이용해 Suepervision Tree를 실행하는 경우 Conflict이 발생할 수 있다. OTP Application은 이런 유형의 문제를 해결해준다. 디렉토리 구조 구성 처리 방법 Dependency 처리 방법 환경 변수 및 Config 생성. Application 시작 / 중지 Application을 종료하지 않고도 충돌을 감지하고 실시간 업그레이드를 처리할 수 있는 기능 OTP Application은 위 기능을 제공해준다. 2. OTP ..