IT 67

[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 기초] Erlang 시작하기

Erlang Shell 운영 체제에서는 사용자가 입력한 명령을 하나씩 해석해서 실행시키는 커맨드 인터프리터(command interpreter)를 갖고 있는데, 유닉스(UNIX) 쉘(shell)이나 윈도우 명령 프롬프트(command prompt)가 그 예이다. 얼랭에도 이런 커맨드 인터프리터가 존재하는데, 이를 얼랭 쉘(Erlang shell)이라 부른다. 사용하는 운영 체제의 커맨드 창에서 erl이라고 치면 아래와 같이 생긴 얼랭 쉘이 켜진다. 오늘은 윈도우 환경에서 진행했어요. 맥 유저들은 이전 포스팅을 참고해서 얼랭 쉘을 켜신 뒤 진행하시면 됩니다. 2018/05/30 - [IT/Erlang] - macOS에 Erlang 개발 환경 셋팅하기얼랭 쉘에 간단한 연산을 입력해보자. 아래와 같이 1+2...

IT 2018.06.07

[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

[Healthcare/IT/표준] FHIR로 시작하는 헬스케어 표준 살펴보기

* 공부하면서 알게 된 내용과 실제 몇몇 경험을 바탕으로 쓴 내용으로 오류가 있을 수 있습니다.* 처음 접하는 사람에게 어떻게 설명해줄 수 있을까.. 하는 관점에서 쓴 글입니다. * 작성일: 2018-05-30 FHIR(Fast Healthcare Interoperability Resources) FHIR라고 쓰고 Fire 처럼 읽는다. (http://wiki.hl7.org/index.php?title=FHIR) FHIR를 접하게 된건 3년 정도 됬고 구현도 해봤지만 과연 내가 알고 쓰는건가.. 하는 의문이 들어서 공부겸, 정리겸 적어보려고 한다. 용어 그 자체로 볼 때 FHIR는 Fast (상대적으로) 빠르고 Healthcare 헬스케어 영역에서 사용하는 Interoperability 상호운용성을 가진..

IT 2018.05.30

macOS에 Erlang 개발 환경 셋팅하기

맥북에서 Erlang으로 개발하려면 3가지를 설치해야 하는데 Erlang OTPRebarIDE 첫 번째로 Erlang OTP, 개발에 필요한 Erlang 라이브러리들이다. homebrew로 간편하게 설치할 수 있다. 터미널에 > brew install erlang이라고 입력하면 끝!!! * 윈도우 환경에서는 Erlang 홈페이지에 들어가 32비트 / 64비트 각자 환경에 맞는 .exe 파일을 다운로드 받아 실행시키면 된다. 설치가 잘 되었는지 확인하기 위해 얼랭 쉘을 실행시켜 본다.> erl아래와 같은 화면이 나오면 성공 ! * ctrl + G -> q 를 입력하면 얼랭 쉘에서 빠져나올 수 있다. Erlang OTP 설치가 완료되면 다음으로는 Rebar를 설치해보자. 얼랭 응용 프로그램들을 컴파일하고 테..

IT 2018.05.30
반응형