OTP 4

[Erlang OTP]죽지 않는 서버 만들기(2) (feat. supervisor)

이번 포스팅에서는 슈퍼비전 트리에 하위 워커로 추가되는 자식 프로세스들의 정보에 대해 정리하려 한다. 슈퍼바이저의 동작, 설정에 대한 내용은 이전 포스팅에 있다.2018/06/07 - [IT] - [Erlang OTP]죽지 않는 서버 만들기(1) (feat. supervisor) Child Specification 슈퍼바이저의 하위 워커로 등록되는 자식 프로세스들은 다음과 같은 정보를 가진다.1. id : 슈퍼바이저가 자식 프로세스의 정보를 식별할 때 사용된다. 2. start : 자식 프로세스를 시작할 때 호출하는 정보를 정의한다. 이 자식 프로세스를 시작하면 실행할 함수의 모듈명-함수명-파라미터가 들어간다. - 가져도되고 안가져도 됨 3. restart : 언제 자식 프로세스가 재시작되는지에 대한 설..

IT 2018.06.10

[Erlang OTP]죽지 않는 서버 만들기(1) (feat. supervisor)

?Supervisor슈퍼바이저는 트리 형태로 연결된 하위(자식) 프로세스들을 감시 및 제어하는 감독자(?) 템플릿이다. 프로세스 시작, 종료 뿐 아니라 상태를 감시하고 있다가, 필요한 경우 재시작 시키는 원리로 죽지 않는 서버를 만들 때 유용하게 쓰인다. 하위에 또 다른 슈퍼바이저 프로세스가 들어갈 수 도 있고, 슈퍼바이저마다 자식 프로세스들의 재시작 방식도 설정할 수 있다. ?Supervisor Flag자식 프로세스들의 재시작 방식을 결정하는 요소들이다. 크게는 2가지로 sup_flags, strategy이다. sup_flags는 재시작 주기, 몇 번 재시작할지를 설정하는 값인데, intensity와 period로 구성되어 있다. 예를 들어 동일한 원인으로 서버가 계속해서 죽는다면 재시작 시키는 의미가..

IT 2018.06.09

[Erlang OTP]서버 만드는 법 (feat. gen_server)

?gen_server gen_server(generic server, 제네릭 서버)는 서버 템플릿같은 것으로, 클라이언트-서버 모델에서 서버 측 기능을 지원하는 인터페이스 함수를 제공한다. gen_server에 미리 정의된 모든 인터페이스 함수는 각각 매칭되는 callback 함수를 가지고 있으며, 이 부분이 바로 사용자가 필요한대로 작성하게 되는 곳이다. ?죽지 않는 서버 callback 함수가 실패하거나 올바른 값을 리턴하지 않으면 제네릭 서버 프로세스는 종료된다, 즉 서버가 죽는다. 그래서 제네릭 서버 프로세스가 죽으면 제네릭 서버의 모든 모듈을 사용할 수 없다. 서버를 안죽이려면 어떻게 해야 하는가? 물론 코드를 잘 짜서 콜백함수가 실패할 일이 없도록 예외처리를 꼼꼼히 하는 방법도 있지만, 예측하..

IT 2018.06.01

Standard Erlang OTP behaviors

Erlang을 사용하면서 가장 편리하다고 느꼈던 부분은 OTP behavior다. behavior는 공통적인 행위 패턴들을 형식으로 만들어 놓은 것인데, behavior 모듈과 callback 모듈로 나뉜다. behavior 모듈의 경우 Erlang OTP에서 제공하는 부분인데 무정지, 동적 코드 갱신 같은 기능도 있어서 이런 부분에 대한 구현은 신경쓰지 않고 callback 모듈만 만들면 된다는 점이 좋은 것 같다. gen_servergen_statemgen_eventsupervisor 간단하게 살펴 보면 대략 아래와 같은 행동을 수행한다.gen_server : 서버-클라이언트에서 서버 구현. gen_statem : state machine.gen_event : 이벤트 처리.supervisor : su..

IT 2018.05.31
반응형