.png)
프로젝트의 개요
- 오류 및 로그의 모니터링을 제공하여 실시간으로 오류를 발견하고 심사하고 우선 순위를 정할 수 있는 통합 관제 솔루션 제공.
- Exception 이나 오류 및 로그들을 빈도수 체크 및 이벤트 그룹화 및 시각화해서 볼 수 있도록 제공.
- 프로젝트는 크게 데이터를 수집 및 제공해주는 Backend 영역과 수집된 정보들을 시각화해서 보여주는 Frontend 영역. 그리고 서비스에서 연동하여 서버로 데이터를 전송하는 SDK 로 나뉘게 됨.
구현 사항
공통
- Typescript 언어를 사용한 개발.
- Module bundler 는 webpack 사용을 권하지만 parcel 및 rollup 과 같은 기타 bundler 를 사용해도 무방.
- eslint 또는 prettier 를 활용.
- 코딩 컨벤션 통일 및 runtime error 를 줄이기 위함.
- jest, mocha 와 같은 test framework 를 통한 테스트 활성화.
- 가능하다면 test coverage 를 나타낼 수 있는 페이지 구성.
- development, production 두가지 단계의 phase 를 두어 개발과 실제 배포상황에 대한 분기가 필요.
- 경우에 따라서 여러 단계의 phase 로 나눠서 개발해도 무방.
- 팀내 코드리뷰는 pull request 를 활용.
- 코드리뷰가 완료된 pr 에 한해서만 merge.
- branch 전략은 팀내 기호에 맞게 정하면 되지만 develop, master 와 같은 브랜치들은 protection branch 로 정하여 review 및 test 및 정적분석 job 이 정상적으로 끝나야지만 merge 가 가능하게 설정.
- (Optional) CI 서버를 적극활용하는 것으로 전해들었는데 pull request 시에 테스트 수행. 가능하다면 lint 와 같은 정적분석 도구가 수행되도 됨.
- 개발에 필요하다고 생각되는 오픈소스는 적절하게 사용해도 무방.
Backend 영역
- 로그 수집을 위한 서버 및 DB 구축.
- Node JS 기반으로 작업하되 Express, Koa 와 같은 WAS 는 팀내에서 논의 후 선택해서 사용.
- DB 는 Mongo DB 사용을 권함.
- 가능하다면 Swagger 를 통해 API 문서를 제공할 수 있게끔 함.
- 개발 서버와 리얼 서버를 분리해서 관리.
- 특정 error level 이상의 오류 발생시 메일이나 slack 에 알림을 전달할 수 있도록 제공.
- (Optional) 예를 들어 Develop 브랜치에 머지가 됐을 때 hook 을 사용하여 자동으로 개발서버에 배포될 수 있도록 작업.