Akka 문서 - 감독 및 모니터링

Ada·2023년 9월 13일

Akka

목록 보기
16/32

감독이란 무엇인가

액터에서 발생할 수 있는 예외는 두 가지 유형이 있다:

입력 유효성 검사 오류

일반적인 try-catch나 다른 언어와 표준 라이브러리 도구로 처리할 수 있는 예상되는 예외

예상치 못한 실패

예를 들어 네트워크 리소스를 사용할 수 없거나, 디스크 쓰기가 실패하거나, 아니면 애플리케이션 로직에 버그가 있을 수 있다.

감독은 실패를 처리하며, 비즈니스 로직과는 별도로 유지되어야 한다.

데이터 유효성 검사와 예상되는 예외 처리는 비즈니스 로직의 중요한 부분이다.

따라서 감독은 액터의 메시지 처리 로직과 섞이지 않고 추가된다.

감독이 제공하는 세 가지 전략

  1. 액터를 계속 실행하면서 내부 상태를 유지

  2. 액터를 다시 시작하면서 내부 상태를 초기화하고, 다시 시작할 때 잠재적인 지연이 있을 수 있다

  3. 액터 영구 중지

액터들이 계층 구조의 일부이기 때문에, 모든 자식 액터가 예상치 못하게 중지되면,
액터 자체가 재시작하거나 중지하여 기능 상태로 돌아갈 수 있다.

이는 감독과 자식을 모니터링 하는것을 조합하면 가능하다.

최상위 액터

액터 시스템은 생성 중에 적어도 두 개의 액터를 시작함

  1. /user: 사용자 보호자 액터
    이것은 사용자가 제공하는 최상위 액터로, 자식으로서 하위 시스템을 생성하여 애플리케이션을 부트스트랩 한다. 사용자 가디언이 중지되면 전체 액터 시스템이 종료된다.
  2. /system: 시스템 보호자(가디언) 액터
    이것은 모든 일반 액터들이 종료되더라도 로깅이 활성 상태를 유지할 수 있도록 순차적인 종료 과정을 달성하기 위해 도입되었다. 시스템 가디언이 사용자 가디언을 지켜보고, 사용자 가디언이 중지된 것을 확인하면 자체 종료를 시작함으로써 실현된다.

재시작이란 무엇인가

특정 메시지 처리 중에 실패한 액터가 있을 경우, 실패의 원인은 세 가지 범주로 나뉜다.

  1. 특정 메시지에 대한 시스템적인 (즉, 프로그래밍) 오류

  2. 메시지 처리 중에 일시적으로 실패한 외부 리소스

  3. 액터 내부 상태의 손상

특별한 상황이 아니라면, 액터의 내부 상태가 문제를 일으켰다고 판단할 수 있는 세 번째 이유를 무시할 수 없다. 이로 인해 액터의 내부 상태를 초기화해야 한다. 감독자가 다른 하위 액터나 자기 자신이 이러한 문제로부터 영향을 받지 않을 것이라고 판단한다면—예를 들어 오류 처리 전략을 의도적으로 사용한 경우—액터를 재시작하는 것이 최선이다. 이렇게 하려면 기본 'Behavior' 클래스의 새로운 인스턴스를 생성하여 실패한 액터 인스턴스를 새로운 것으로 교체해야 한다. 새 액터는 이후 메시지 처리를 재개하는데, 이 과정은 액터를 사용하는 외부에서는 거의 눈에 띄지 않는다. 단, 오류를 일으킨 메시지는 다시 처리되지 않는 예외가 있다.

생명주기 모니터링이란 무엇인가

생명주기 모니터링은 Terminated 메시지를 사용하여 모니터링하는 액터에 의해 구현된다.

액터와 예외

액터가 메시지를 처리하는 동안 일종의 예외가 발생할 수 있다.

메시지에게 무슨 일이 일어나는가

메시지 처리 중 예외가 발생하면, 이 메시지는 손실된다.

메일박스에게 무슨 일이 일어나는가

메시지 처리 중 예외가 발생하면 메일박스에는 아무 일도 일어나지 않는다.

액터에게 무슨 일이 일어나는가

액터 내의 코드에서 예외가 발생하면, 그 액터는 일시 중지되고 감독 과정이 시작된다.




참조

아카 공식문서 - Genaral Concepts

profile
백엔드 프로그래머

0개의 댓글