버전 관리 도구 제작 [Node.js] 서버

 기존의 나무꾼 영웅, 죽창 영웅은 한 서버에서 모든 것을 처리했습니다.하지만 이번 Serrata 프로젝트는 서버를 큰 기능별로 나눠서 관리를 합니다.

(보안상의 이유로 몇 가지 정보를 모자이크 처리했습니다.)

도표상에는 표현이 되어있지 않지만 실제로는 동일한 서비스 서버가 여러 대 있는 구조입니다.동일한 기능의 서비스 서버가 로드밸런스(부하밸런스) 서버에 의해 사용자를 분배받아 서비스를 처리하는 방법입니다.이와 같이 하면, 유저수에 따라 가변적으로 서버를 늘리거나(스케일 업), 생략하거나(스케일 다운 하거나 하는) 유저수에 관계없이 쾌적한 서비스를 제공할 수 있게 됩니다.

다만 문제는, 통합적인 서버 관리툴이 필요하다는 점입니다.

동일한 서비스 서버가 20대가 넘는다고 가정할 경우 서버를 업데이트하기 위해서는 일일이 20대 이상의 서버에 접속하여 서버파일을 교체하고 재부팅해야 합니다.

이게 평평하게 말하면 흙이 더럽거든요.

그 짓이 하기 싫어서 자동 일괄 도구를 만들었어요.

웹 서버에 접속해서 서버 일괄 업데이트 버튼을 누르면 현재 활성화되어 있는 모든 서비스 서버에 update server 요청을 뿌립니다.

그 결과 각각의 서비스 서버는 아래와 같은 로그를 보여주고 서비스 서버를 자동으로 업데이트하여 실행시킵니다.

서버측의 모듈은 Socket.io expressejs를 사용하고,

클라이언트 쪽 모듈은 socket.ionode-cmdfsssh2-sftp-client를 사용했습니다.

유지관리 클라이언트 프로세스의 로직은 다음과 같습니다.

1. maintenance Server로부터 “reqeust_update_server” 요청을 받았다. 2. sftp 클라이언트 생성 3. maintenance Server에 sftp 4. 서버 js 파일을 다운로드 5. 패키지 json 파일을 다운로드 6. sftp 클라이언트 종료 7. 서버와 패키지 파일을 다운로드 8. 패키지 json 파일을 다운로드 8. 패키지 json 파일을 다운로드 받은 경로 6. sftp 클라이언트 종료 7. 서버와 패키지 파일을 폴더

이렇게 작성을 했습니다.

순조롭게 돌아가는 걸 보니 재미있네요. 🙂

서비스 개시 전까지

서버 업데이트 로그 서버 업데이트 이력 및 롤백 특정 서버 업데이트, 세트 특정 서버 상태 확인

등등 여러 가지 기능을 구현해보도록 하겠습니다.기능의 추가는 노가다이기 때문에 그렇습니다만, 기술적으로는 특별히 어려운 것은 아니니까요.