관리 메뉴

밤 늦게까지 여는 카페

Golang Effective Study for intermediate (2) 본문

For Fun/Go-lang

Golang Effective Study for intermediate (2)

Jㅐ둥이 2020. 12. 19. 00:41
반응형

실제로 프로그램을 만들면서 golang을 공부하는 시간을 가져보겠습니다.

제가 프로그램을 만들 때, 거치는 과정대로 서술하겠습니다.

 

본 글은 2020년 9월달부터 작성되었습니다.

슬랙 API 및 기능이 변경될 시, 포스팅 된 내용과 다를 수 있으니 유의하시기 바랍니다.

문제 상황

최근에 고강도의 스트레스 테스트 케이스들을 작성하다 보니 테스트 케이스가 끝나기까지 길게는 40분까지 걸리게 되었습니다.

 

당연하게도 테스트 케이스의 결과를 기다리는 동안은 다른 작업을 진행합니다.

아무래도 작업에 열중하다 보면 테스트 케이스가 끝난 줄도 모르고 집중하게 되는데,

게 평상 시에는 문제가 안되지만 일의 쏟아질 때에는 나름 고민이 되더라구요.

 

그래서 "실행한 명령어가 끝나면 사용자에게 알려주는 프로그램"을 만들어서 이 문제를 해결해보고자 합니다.

 

Python처럼 인터프리터 언어를 사용하면 간단하게 개발할 수 있겠지만

이번 기회에 힙한 Golang과 친해져보기로 했습니다 ㅎㅎ

 

필요한 기능

1. 사용자가 알람을 받고 싶은 명령어 목록을 관리할 수 있어야 함

  • config 파일을 통해서 관리

2. 모니터링 하고 있는 프로그램이 끝났다는 것을 사용자에게 알려줄 수 있어야 함

  • 모니터링 하고 있는 프로그램을 화면 최상단으로 띄워줌
    • 로컬 환경에서만 가능하므로 패스
  • 사용자에게 메시지를 보내줌
    • 슬랙처럼 사무 공간에서 사용하는 메신저 앱들이 API를 지원해주므로 적절하다고 판단

 

개발 준비

  • git을 이용해서 버전관리를 할 것이며, 적용할 프로세스는 TDD입니다. 개인적으로 코드를 작성하면서 설계를 구체화 시킬 수 있는 TDD가 좋더라구요.
  • 에디터는 vscode를 사용했습니다. 처음에는 vim을 사용했었는데 설정을 제대로 안했는지 syntax 검사가 제대로 안되더라구요. 그래서 그냥 Golang은 vscode로 작성하고 있습니다.
  • 메시지를 보내줄 프로그램으로는 슬랙을 정했습니다. 이미 회사에서도 사용 중이라서 적합하다고 판단했습니다.
    구체적인 기능으로는 슬랙에 app을 만들고 app의 webhook을 이용해서 사용자에게 프로그램이 완료됬다는 메시지를 보내기로 하였습니다.

※ 슬랙에 app을 만들고 webhook 추가하는 법 ※

  • 슬랙에 로그인을 하고 api.slack.com에 로그인합니다.
  • 우측 상단에 Your Apps를 클릭해줍니다.

  • Create New App을 클릭해줍니다.

  • app 이름과 app을 배포할 워크스페이스를 선택해주고 Create App 버튼을 클릭해줍니다.
    (저는 테스트를 위해서 chatbot-test라는 워크스페이스를 만들었습니다)

  • app이 성공적으로 생성되면 아래와 같은 페이지로 이동됩니다.
    Incoming Webhooks를 클릭해줍니다.

  • Incoming Webhooks를 활성화시켜줍니다.

  • Incoming Webhhoks가 활성화되면 칸이 펼쳐집니다. Add New Webhook to Workspace 버튼을 클릭해줍니다.

  • 알람앱이 메시지를 보낼 채널을 선택해줍니다. 그리고 Allow 버튼을 클릭해줍니다.
    저는 제 계정을 선택했습니다.

  • 이제 생성된 주소로 예시와 같이 post 요청을 보내면 저의 계정으로 DM이 날아옵니다!

  • 짠!

 

 

개발

프로그램의 동작 방식은 다음과 같습니다.

config 파일을 읽고 config 파일에 나열되어 있는 명령어들을 모니터링 하는 go-routine을 생성합니다.

 

 

대략적인 설계가 끝났으므로 테스트 케이스를 작성합니다. 제일 먼저 필요한 테스트 케이스들은 다음과 같습니다.

 

1. 모니터링 하고 있는 프로그램이 끝났는지 확인하는 기능

2. 1의 기능을 config 파일을 통해서 관리할 수 있는지

3. 슬랙 API 테스트

  • Third party API를 테스트하기 위해서 mock 프로그램을 작성하는 것은 비용 대비 효과가 작다고 판단하여 제외했습니다.

작업을 진행한 repository입니다.

github.com/goodahn/AlarmForProgrammer

 

goodahn/AlarmForProgrammer

Contribute to goodahn/AlarmForProgrammer development by creating an account on GitHub.

github.com

다음 글에서는 코드를 직접 코드를 보며 진행하겠습니다.

반응형