NodeJS 로 만든 웹서버 무중단 업데이트 하는거 구글에서 찾아보니까

죄 서버 두 대 이상 개설해놓고, 순차적으로 서버 하나씩 죽이고 다시 실행하는걸

반복해나가는 방식이더라


말이 무중단이지, 실제로는 인스턴스 죽였다가 키는 거잖아?

그 순간 해당 인스턴스에 접속해있던 사람들은 모두 황천행...


-----

-----


그래서 본인은 NodeJS 로 웹서버 만들 때,

무중단 업데이트 기능만큼은 직접 구현해서 쓰고 있다.


원리는 간단해서 NodeJS 로 만든 웹서버 프로그램에서 

마스터 프로세스는 오로지 네트워크 통신만을 전담하고

주 작업은 슬레이브 프로세스에 넘기는 방식임


마스터 프로세스에 SharedMutex (읽기/쓰기락이 모두 가능한 mutex) 하나 냅두고

클라이언트로부터의 작업 요청 때는 읽기락을 걸고

무중단 업데이트가 필요할 때는 쓰기락을 걸고 슬레이브 프로세스들을 재가동하는 거임

이렇게 하면 업데이트가 필요하다해서 기존에 접속해있던 클라이언트가 황천가는 일은 결코 없거든


더불어 이렇게 하면 싱글 스레드 기반의 서버 프로그램이 아니라 

멀티 프로세스를 활용하는 서버를 만들 수도 있지.


-----

-----


그냥 간단한 스킬에 간단한 아이디어인데

이거 라이브러리화시키면 꽤나 유용하지 않을까 생각함


물론, 이걸 사용하려면 TGrid 가 지원하는 Worker Protocol 이 필요하고,

마찬가지로 TGrid 에서 지원하는 Remote Function Call 과 Remote Critical Section 이란 개념이 필요함