Skip to content

Google Cloud Source with [ Slack ] 사용하기

[ 본 글은 https://calmlake79.wordpress.com/2017/01/30/google-cloud-source-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0/ 에도 발행되었습니다. ]

Google Cloud Platform 을 사용하면 Google Cloud Source 라는것을 이용이 가능하다. 아직은 베타인 관계로 나중에 가격정책은 알 수 없지만, 우선 현재까지는 홈페이지에 공식적으로는 1GB까지라고 되어 있고, push 할때 메세지는 8GB 까지 사용가능하다고 하는 이 부분은 정확하지는 않다.  또한 Private Git을 무료로 사용할 수 있으며 홈페이지 ( GCP는 콘솔이라고 부름 )에서 현재 코드 변화를 볼 수 있고 사용법은 사실 Github과 크게 다르지 않다. ( 다를 이유가 없다. )

아무튼 본론으로 들어가서, Node와 이것을 같이 사용하다 보면 아무래도 PHP같은 언어와 다르고 또 JAVA와 달라서 몇가지 트릭이 필요하게 된다. 예를들면 PHP는 수정하며 바로 반영되니 서버를 재실행할 필요가 없지만 Node는 서버가 동작하고 있는 동안은 코드를 수정해도 반영이 되지 않는 점이 다르기 때문이다.

따라서, Cloud Source와 GCP의 Pub/Sub 을 이용하여 불편한 개발 환경을 한번 바꿔 볼 수 있지 않을까 했다. 우선 큰맘먹고 그린 아래의 도식도를 먼저 보겠다.

untitled-diagram

 

 

우선 위의 도식도를 간단히 설명해 본뒤 소스를 직접 보도록 하겠다.
[ 사용자1 ]이 코드를 수정한뒤  Push 를 하면 Cloud Source 는 Pub/Sub으로 업데이트 이벤트를 발생시킨다. 사전에 Node.js 로 된 Update.js 라는 프로그램은 Pub/Sub에 Subscribe를 하고 있다가 이벤트가 발생하면 Cloud Source로 부터 Git Pull 을 하게 된다. 변경된 파일들은 Compute engine에서 실제로 돌아가고 있는 Node 를 재 실행하게 된다. 본인의 경우에는 forever 를 이용하고 있으므로 forever restart 를 이용한다. 재실행을 한뒤에는 Slack 으로 Git Log 를 내보내게 된다. 물론 Slack 의 팀 채널에 들어가 있어야 하고 해당 채널에서는 사용자의 PC에 알림을 준다 ( 모바일도 )

대충 이러한 시나리오로 처음에 생각을 해보고 실제로 구현을 해봤다. 우선 말은 쉬운데 직접하려니 작업량이 상당했음.( 예쁘게 구현하는 부분에서…)

1

 

우선 좌측에 개발이라고 되어 있는 곳을 찾아서 적당한 저장소를 만들고 Clone을 한다. 이 부분은 기존에 Git을 쓸줄 안다는 전제를 하고 작업하기 때문에 긴 설명은 하지 않겠다.

 

2

저장소를 하나 개설하면 구글의 Pub/Sub은 자동으로 하나의 주제(Topic)을 만들어 준다. 그러면 그 토픽을 통해서 이벤트가 발생한다. Push를 하면 바로 바로 이벤트가 발생하는 식이다.

위의 코드가 실제 코드다. 다만 중간의 몇몇 부분들은 보안을 위해 가려놨다. 프로젝트 아이디나 혹은 실제로 동작할 수 있는 토큰등을 수정하고 적당한 위치에서 실행하면 동작을 한다.

3

 

마지막 스샷은 실제로 슬랙에 표시된 화면.
대충 저러하다. 상세보기를 누르면 바로 구글 콘솔로 간다.

Be First to Comment

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.