본문 바로가기

소프트웨어-이야기/인프라

(Phusion Passenger) 패신저는 뭐하는애일까

패신저는 프로세스를 관리하는 역할을 한다. 그리고 HTTP Request를 라우팅처리해준다.


패신저에서 프로세스란 개념은 무엇일까?

레일즈 애플리케이션 인스턴스를 하나 실행시킨걸, 패신저의 프로세스로 보면 될 것 같다.

레일즈 인스턴스를 하나 띄어놓는 것은 패신저가 프로세스를 하나 띄어놓는 것과 같다.

그리고 레일즈 인스턴스를 하나 죽이는 것은, 패신저가 프로세스를 하나 죽이는 것과 같다.


패신저의 프로세스 개념에서 알아둬야하는건 뭘까?

각 프로세스의 메모리는 다른 프로세스들과 분리된 영역이다. 

프로세스 A에서 power_blogger='rails_blogger' 라고 변수를 할당해놔도, 

프로세스 B에서는 power_blogger라는 변수를 가져다가 사용할 수 없다.


프로세스들끼리 데이터를 공유하려면 어떻게 해야할까?

데이터베이스, Redis, Memcached 같은 데이터 저장소를 별도로 사용해야한다.


프로세스가 크래시나도 다른 프로세스에 영향을 주지 않는다

어플리케이션에서 에러가 나거나, 프로세스에 문제가 생겨서 크래시가 발생하면 

패신저는 그 프로세스를 재시작해준다. 

각 프로세스들이 독립적으로 관리되기 때문에 다른 프로세스에는 영향을 주지 않는다. 


패신저에서는 프로세스의 뭘 관리하지?

프로세스 감독하기

크래시가 난 프로세스를 재시작해주고, 요청이 다른 프로세스에서 잘 처리되도록 감독 / 관리해준다.

로드밸런싱 

트래픽이 들어왔을 때, 어느 프로세스에서 요청을 처리하게할지 로드밸런싱하는 역할을 한다.

동적으로 프로세스 갯수 관리하기 

그리고 요청이 많이 들어오면 프로세스를 더 많이 만들고, 적게 들어오면 프로세스를 죽이는 역할을 한다. 


참고 자료 

Phusion Passenger - Process

Pushion Passenger - Process Manager