🔴 Erlang 프로세스 감시와 오류 처리 실전 가이드

Erlang 튜토리얼

고급 난이도
튜토리얼 타입
10/28 등록일

Erlang 프로세스 감시와 오류 처리 실전 가이드

고급
태그
튜토리얼 가이드 학습 Erlang 프로세스 감시 오류 처리 OTP 스프라우퍼 DOWN 메시지
## 학습 목표
Erlang에서 프로세스 감시 체계를 구축하고, 오류 발생 시 자동 복구 로직을 개발할 수 있는 실무 능력을 갖추는 것이 목표입니다. 특히 'DOWN' 메시지 처리와 try/catch 블록 활용법을 익히게 됩니다.

## 준비사항
- Erlang/OTP 환경 설정 (erlang.org에서 설치)
- 에디터: VS Code(Erlang 확장) 또는 Emacs
- 기본 지식: 함수형 프로그래밍, 모듈 구조 이해

## 단계별 진행

### 1단계: 기초 설정
Elixir CLI를 통한 기본 환경 구성 및 테스트 프로세스 생성

### 2단계: 핵심 구현
감시자(스프라우퍼)와 피감시자(워커) 간 관계 설정 및 메시지 처리 로직 구현

### 3단계: 고급 기능
다중 감시 트리 구성과 오류 유형별 분기 처리 로직 개발

### 4단계: 완성 및 테스트
실제 시나리오에서 프로세스 죽음 시 자동 복구를 검증하는 통합 테스트

## 다음 학습 단계
- 분산 시스템 구축(Erlang Distribution)
- OTP 설계 패턴 적용
- 고가용성 아키텍처 설계
코드 예제
// 1단계: 기초 설정
-module(supervisor_test).
-export([start/0, start_link/0]).

start() ->
    {ok, Pid} = supervisor:start_link({local, ?MODULE}, supervisor, [{worker, worker_test, []}]),
    Pid.

// 2단계: 핵심 구현
-module(worker_test).
-export([start/0, loop/0]).

start() ->
    spawn(fun() -> loop() end).

loop() ->
    receive
        {monitor, Ref} ->
            erlang:monitor(process, self()),
            loop();
        {'DOWN', Ref, process, Pid, _Reason} ->
            io:format("~p 프로세스 종료 감지~n", [Pid]),
            exit(kill)
    end.

// 3단계: 고급 기능
-module(supervisor_test).
-export([start/0, start_link/0]).

start() ->
    supervisor:start_link({local, ?MODULE}, supervisor, [
        {worker, worker_test, [1]},
        {worker, worker_test, [2]}
    ]).

// 4단계: 완성 및 테스트
-module(test_SUITE).
-export([all/0, init_per_suite/1, test_failure/1]).

all() -> [[test_failure/1]].
test_failure(_) ->
    Pid = supervisor_test:start(),
    erlang:exit(Pid, kill),
    timer:sleep(500),
    ok.
등록일: 2025년 10월 28일 02:45
언어 정보
언어
Erlang
카테고리
Functional
인기도
#28
학습 팁
코드를 직접 실행해보세요
변수를 바꿔가며 실험해보세요
오류가 나도 포기하지 마세요
다른 예제도 찾아보세요