Websocket pusher 서비스 중에 Ruby 기반의 slanger라는 것이 있다.
알림에 대한 중요성과 비동기적인 작업에 대한 처리를 우선 시 하여 시스템 또는 서비스를 설계할 때 puhser를 고려해 볼 수 있다.
웹 소켓 기반의 실시간 메시징을 지원하는 애플리케이션들은 대부분 유저가 원하는 정보를 Pull(가져오기)하는 것과 달리 유저가 원하든 원하지 않든 정보를 Push(내려주기)해야 할 경우가 있기 때문에 Puhser 시스템이 필요하다.
카카오톡을 예로 들면, 애플리케이션은 서버와 연결된 채널이 존재하면 해당 채널을 통해 데이터를 받고, 연결된 채널이 존재하지 않으면 외부 pusher 시스템(APNs, FCM, GCM 등)을 통해 데이터를 전달 받는다. 데이터를 제공하는 서버 입장도 동일하게 클라이언트와 연결된 채널이 존재하면 데이터를 채널로 전송하고, 그렇지 않으면 외부 pusher시스템을 통해 전달되도록 요청을 보낸다. (sungjk.github.io 참고)
slanger는 명령어를 통해 프로세스를 실행하면 서버가 구동된다.
ubuntu 시스템에서 rvm 설치를 먼저 진행
ruby 기반이며, slanger 서버를 구동하기 위해 ruby 2.3.0 이상의 버전이 설치되어야 한다.
시스템에 이미 루비가 설치되어 있다면 루비젬을 통해 RVM을 설치할 수도 있지만, RVM은 기존 루비 환경과 별도로 직접 설치하는 것이 좋다. 대부분의 유닉스 기반 시스템에는 이미 RVM을 사용하는데 필요한 패키지들이 설치되어 있다. (http://rvm.io/rvm/prerequisites) 우분투는 curl이 기본적으로 설치가 되어있지 않기 때문에 RVM을 설치하기에 앞서 curl 을 설치한다.
- 패키지 업데이트 및 curl 을 설치
# apt-get update
# apt-get install curl -y
- RVM에서 제공하는 설치 스크립트를 통해 github 저장소로부터 RVM을 다운로드
# curl -L https://get.rvm.io | bash -s stable
- 외부에서 받은 스크립트를 내용도 확인하지 않고 곧바로 실행하는 부분이 꺼려질 경우 스크립트를 다운로드하고 내용 확인 후 실행도 가능하다.
# curl -L get.rvm.io >rvm-installer
# less rvm-installer
# bash rvm-installer
어떤 방법을 선택하던 스크립트는 RVM을 저장소에 내려 받고 시스템에 설치한다.
RVM은 사용자의 홈 디렉터리 아래의 .rvm 또는 /usr/local/rvm 형태로 설치되며, 설치 시 터미널에 경로가 출력되니 꼭 확인이 필요하다.
필자는 설치 당시 /usr/local/rvm 으로 설치가 되었다.
이제 rvm 명령어를 사용할 수 있도록 환경변수 설정을 해보자.
root의 bashrc 파일에 적용을 하였으며, 일반 사용자로 로그인해 사용하는 경우 /home/user/.bashrc 파일을 이용한다.
# vi /root/.bashrc
:wq
저장하고 나온 후 bashrc 를 적용하거나 재로그인
# source /root/.bashrc
이제 rvm 명령어 사용이 가능하다.
rvm 으로 ruby를 설치
rvm으로 ruby를 설치하기 전 루비 필드에 필요한 시스템 라이브러리와 유틸리티를 설치한다.
# rvm autolibs packages
아무 결과가 없어 ruby설치로 넘어갔다.
# rvm install 2.6.0
(버전은 선택적으로)
이미 설치를 진행했기 때문에 설치가 되어 있다는 메세지와 다시 설치할 경우 reinstall을 이용하는 방법이 출력된다.
ruby 설치가 완료되었으면 ruby 2.6.0을 사용하기 위해 다음 명령어를 실행한다.
다음 포스팅에서는 본격적으로 slanger 설치 및 세팅에 대해 정리해보고자 한다.
감사합니다.
'Programming' 카테고리의 다른 글
python tor 네트워크 크롤링 (0) | 2020.03.12 |
---|---|
git pull 시 id/pw 인증 비활성화 하기 (0) | 2020.02.03 |
구글 스프레드시트 인증 중 에러 (0) | 2020.01.16 |
gogs docker 설치하기 (0) | 2020.01.09 |
git pull 명령어 정리(작성중) (0) | 2020.01.09 |