[Webhook]

- 웹훅은 새 이벤트 (클라이언트 측 응용 프로그램이 관심을 가질 수있는)가 서버에서 발생한 경우 서버 측 응용 프로그램이 클라이언트 측 응용 프로그램에 알릴 수있는 메커니즘을 제공합니다.


- "역방향 API" 라고도 합니다 . 일반적인 API는 클라이언트가 서버를 호출합니다. 반면 웹훅의 경우 웹훅 (클라이언트에서 제공하는 URL)을 호출하는 서버 측에 등록하면 서버에서 특정 이벤트가 발생했을 때 클라이언트를 호출합니다.


* 특정한 Event가 발생하면 ➔ Trigger로 웹훅이 동작하고 -> 지정한 Action이 일어납니다


[Yona - Mattermost 를 통한 웹훅 테스트]

1. Mattermost 의 팀 설정에서 Incomming Hook 생성 (생성된 webhook url 복사)

2. 요나의 프로젝트 -> 설정 -> 웹훅 -> 새 웹훅 생성 항목에 복사한 Mattermost 웹훅 url 추가

3. 해당 프로젝트에서 이슈 생성 및 수정, 삭제 등등 작업

4. Mattermost 채널에서 봇에 의한 이슈 알림 확인

------------------------------------------------------------------------------------------------------------


1)



2)



3)



4)



---

[Yona 란]

- 네이버에서 개발한 설치형 이슈트래커

- 팀 업무 및 회사의 업무 생산성이 높아지며 정보의 생성, 축적, 공유가 훨씬 편해짐
- 개발조직 / 비개발조직 간의 진정한 협업을 지향
- 그룹 및 프로젝트 단위로 관리 가능(사내에선 프로젝트를 팀 단위로 사용 예정)
- 각종 문서나 파일을 쉽게 공유할 수 있는 게시판 있음

[설치 방법]

* Docker 사용

* docker-compose file


version: '2'
services:
yona:
image: pokev25/yona:latest
container_name: yona
restart: always
environment:
- BEFORE_SCRIPT=before.sh
- JAVA_OPTS=-Xmx2048m -Xms1024m
volumes:
- /home/yona/data:/yona/data # 데이터를 유지할 위치 설정
ports:
- "9000:9000"

yona_db:
image: mariadb
container_name: yo_db
restart: always
volumes:
- /home/yona/mysql/data:/var/lib/mysql # 데이터를 유지할 위치 설정
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: 1234
MYSQL_DATABASE: yona
MYSQL_USER: test
MYSQL_PASSWORD: 1234
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci

# docker-compose -f docker-file.yml up -d


* 컨테이너 시작 후 오류가 발생하고 요나가 정상 실행되지 않을 수 있음. (설정이 제대로 완료되지 않은 상태)

* /home/yona/data/conf/application.conf  - 해당 파일이 생성된 것을 확인하고 수정하기

(db 연결 설정 : db_name 은 docker 를 이용해 mariadb 를 생성할 때 지정한 이름과 동일하게 입력)

~~~~

# MariaDB

db.default.driver=org.mariadb.jdbc.Driver

#db.default.url="jdbc:mariadb://192.168.0.0:3306/db_name?useServerPrepStmts=true"

db.default.url="jdbc:mariadb://192.168.0.0:3306/yona?useServerPrepStmts=true"

db.default.user=test

db.default.password="1234"

~~~~

(현재 서버 설정 확인)

application.scheme="http"

application.hostname="192.168.0.0"

application.port="9000"

~~~~

(메일 알림 기능을 사용하려면 아래 설정 수정 필요)

smtp.host = smtp.gmail.com

smtp.port = 465

smtp.ssl = true

smtp.user = "내이메일@gmail.com"

# Be careful!!! Not to leak password

smtp.password = "password"

smtp.domain = gmail.com

#true to use mock mailer for testing, false for using real mail server

smtp.mock = false

# optional, size of mail archive for tests, default: 5

smtp.archive.size = 5

~~~~

(나머지 설정은 필요 시 확인 후 수정)


* 설정 변경 후 다시 컨테이너 시작하면 정상적으로 실행됩니다.



[옵션 몇가지]

* 설정 파일 : /home/yona/data/conf/application.conf


- 가입시 관리자가 승인해야 하는 기능

# signup.require.admin.confirm = true


- 특정 도메인의 이메일만 수신을 가능하게 제한하는 기능

# application.allowed.sending.mail.domains = ""


- 최초 가입시 메일로 유효 메일 확인을 하는 기능

# application.use.email.verification = true


- 로그인 하지 않으면 어떠한 페이지도 보이지 않게 만드는 기능

application.allowsAnonymousAccess=true


--------------------------

* 이슈 트래커 - 이슈 트래킹 시스템 (ITS = ISSUE TRACKING SYSTEM)

* 다른 단어로 버그 트래킹 시스템 이라고도 함


- 협업 규모가 커질수록 이슈 트래커의 필요성이 커짐.

- 있으면 좋다 (근데 익숙해지기 전까지는 불편할 수도)


[고려사항]

- 이슈 관리 시스템은 개발팀외에 다른 팀과 협업시에도 사용하게 되므로 편리하고 쉬운 사용을 제공하는 것이 매우 중요하다.

  사용법이 너무 복잡하거나 UI 가 미려하지 않거나 잘 사용하기 위해서는 마크업 언어를 배워햐 하는등의 진입 장벽이 있을 경우 참여를 꺼리게 되며 개발팀 전용 도구로 인식되거나 버그 관리 전문 시스템 등으로 용도가 한정될 수 있다.

- 타 제품으로의 변경이 어려우므로 수정 및 확장성이 좋아야 한다.

- 외부 API 또는 시스템과의 연계를 많이 지원해줄 수록 좋다.

  특히 버전관리 (SVN, Git) 등 과는 거의 필수로 연동되야하므로 꼭 확인해보자.

- 검색 및 리포팅 시스템이 좋은지 확인.

- 사용하는 인원에 대해 메뉴얼 또는 교육이 필요함.

- 만들어 놨는데... 안쓰면...? 어느정도 강제해서 문화로 만들 필요가 있음.


* 참고 문서

https://en.wikipedia.org/wiki/Comparison_of_issue-tracking_systems

https://blog.gaerae.com/2014/05/issue-tracking-system-bug-tracking-system.html

https://blog.gaerae.com/2015/03/comparison-of-revision-control-software.html

https://www.lesstif.com/pages/viewpage.action?pageId=18219528



1) Asana
- https://asana.com
- 간결하고 유연한 프레임워크를 특징으로 하는 부분 유료 이슈 트래커.

2) Bugzilla
- https://www.bugzilla.org/
- Mozilla public license
- 모질라 재단에서 만든 이슈 트래커.

3) Phabricator
- https://www.phacility.com/
- 예전 나무위키:이슈 트래커가 이것을 사용했었다. 페이스북에서 내부용으로 사용하던 툴을 공개한 것.

4) Redmine
- http://www.redmine.org/
- 오픈소스 GNU v2 (무료)
- 언어 : Ruby
- Ruby 기반의 무료 이슈 트래커. 나무위키가 이전에 사용했던 이슈 트래커가 여기에 해당된다.
화면이 단순하고 필요한 기능만 있으며 svn/git 등의 형상관리 연계도 가능하다.
생활코딩에 관련 강의가 나와있어서 참고해도 좋다.

5) JIRA
- https://ko.atlassian.com/software/jira
- 언어 : Java
- Atlassian에서 개발한 유료 이슈 트래커.
같은 회사에서 만든 프로젝트 위키 사이트인 Confluence와 함께 사용하면 시너지 효과가 있다.

6) YouTrack
- https://www.jetbrains.com/youtrack/
- IntelliJ IDEA를 만든 JetBrains에서 개발한 유료 이슈 트래커.

7) Visual Studio Team Services
- https://visualstudio.microsoft.com/ko/team-services/
- 마이크로소프트에서 개발한 유료 이슈 트래커.
- VSTS를 클라이언트 기반으로 옮긴 Team Foundation Server도 있는데,
기업이 직접 서버를 호스팅하고자 할 때 사용된다.
VSTS는 이슈 트래커뿐만 아니라 비공개 Git 레포지토리, 지속적 통합,
그리고 Atlassian의 Confluence와 유사한 프로젝트 위키를 통합 제공하는 일종의 턴키 솔루션이다.

8) Trello
- https://trello.com/
- 간결하고 개성 있는 UI가 특징인 부분유료 이슈 트래커.

9) Mantis
- https://www.mantisbt.org/
- 오픈소스 GNU v2 (무료)
- 언어 : PHP
- 나무위키:이슈 트래커가 사용하고 있었다. 사마귀 캐릭터가 그려진 로고가 특징이다.
설치는 비교적 간단하지만, 그만큼 기능이 많이 부족하다.
버그 트래킹 중심으로 개발되어 이슈 관리가 어렵다.

10) Yona
- https://yona.io/
- 오픈소스(무료)
- 언어 : Java
- 네이버 개발자들이 만든 이슈 트래커. 네이버에서 내부용으로 사용하던 버전을 수정 공개한 것이다.
네이버 개발자들이 만들었기에 한글 처리가 매끈하다.
오픈소스 수익 구조 등의 문제로 요비(Yobi) 프로젝트가 포크되어 요나(Yona)로 이어졌다.


11) GitHub
- https://github.com/
- 기본적으로는 Git 호스팅 사이트이지만, 이슈 트래커 기능도 제공한다.

12) GitLab
- https://gitlab.com/
- GitHub와 유사한 사이트로, 이슈 트래커 기능을 제공한다.

13) Trac
- http://trac.edgewall.org
- 오픈소스 BSD (무료)
- 언어 : Python
- 기본 기능에 충실하며 미니멀리즘을 따르지만, 설치가 복잡하다.
TOW 등을 이용하면 설치는 비교적 간단하다.


* 요나 써보고 싶음.

* https://github.com/yona-projects/yona/wiki

+ Recent posts