서버 3

[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
반응형