참고 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 ..
1. 프로젝트 생성 다음 순서대로 erlang 프로젝트 생성 2. erlang 컴파일러 설정 rebar를 사용하지 않는 버전이기 때문에 Compile project with rebar는 체크하지 않음. Add debug info를 추가함 Additional 'erlc' arguments에 다음 인수를 추가해준다. +nowarn_unused_function +nowarn_unused_vars erlang 모듈을 컴파일 할 때, 사용하지 않는 인자들에서 Warning이 발생하면서 디버그 모드로 정상적으로 들어가지 못하는 경우가 있다. 이것을 해결하기 위해서 위 인자를 추가해준다. 3. EPMD 기동 https://www.jetbrains.com/help/idea/erlang-compile-run-debug...
참고 https://learnyousomeerlang.com/finite-state-machines#what-are-they 이전글 https://ojt90902.tistory.com/1688 5. FSM을 위한 예제 → 게임 내의 거래 시스템 실용적인 예제를 위해 온라인 게임에서 플레이어들끼리 거래를 FSM으로 구현해보고자 한다. 아래 FSM은 복잡하기 때문에 시나리오 자체를 이해하는데 난이도가 높다. 5.1 시나리오 설정 거래 요청 거래 수락 아이템 제안 제안 철회 거래 준비 완료 일방적으로 거래 취소하기 게임 내의 거래 시스템은 다음 작업이 가능해야한다. 그리고 전반적인 동작 방식은 다음과 같다. 각 플레이어는 자신의 FSM을 가진다. → A는 A's FSM을 가짐. 각 플레이어는 FSM을 통해 통..