-
Notifications
You must be signed in to change notification settings - Fork 1
프로젝트 개요 및 요구사항
ohmink edited this page Nov 17, 2020
·
1 revision
오류 및 로그의 모니터링을 제공하여 실시간으로 오류를 발견하고 심사하고 우선 순위를 정할 수 있는 통합 관제 솔루션 제공. 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.
- CI 서버를 적극활용하는 것으로 전해들었는데 pull request 시에 테스트 수행. 가능하다면 lint 와 같은 정적분석 도구가 수행되도 됨.
- branch 전략은 팀내 기호에 맞게 정하면 되지만 develop, master 와 같은 브랜치들은 protection branch 로 정하여 review 및 test 및 정적분석 job 이 정상적으로 끝나야지만 merge 가 가능하게 설정.
- 개발에 필요하다고 생각되는 오픈소스는 적절하게 사용해도 무방.
- 로그 수집을 위한 서버 및 DB 구축.
- Node JS 기반으로 작업하되 Express, Koa 와 같은 WAS 는 팀내에서 논의 후 선택해서 사용.
- DB 는 Mongo DB 사용을 권함.
- 가능하다면 Swagger 를 통해 API 문서를 제공할 수 있게끔 함.
- 개발 서버와 리얼 서버를 분리해서 관리.
- 특정 error level 이상의 오류 발생시 메일이나 slack 에 알림을 전달할 수 있도록 제공.
- (Optional) 예를 들어 Develop 브랜치에 머지가 됐을 때 hook 을 사용하여 자동으로 개발서버에 배포될 수 있도록 작업.
- (Optional) PM2 를 통한 Node JS 프로세스 관리.
- (Optional) 서버 이중화를 통해서 고가용성을 보장.
- React, Vue 와 같은 FE Framework 를 활용하여 개발.
- 가입 및 로그인 페이지 개발
- Root 계정과 더불어 일반 사용자 계정에 권한(Owner, Member)을 분리해서 관리할 수 있도록 구성.
- SDK 를 통해서 수집된 오류 및 로그들을 이벤트 그룹화 및 시각화해서 볼 수 있도록 제공.
- error level, browser 와 같은 SDK 가 수집하는 정보들로 필터링 및 그룹화해서 로그를 확인할 수 있도록 함.
- 로그 확인시 발생 빈도를 그래프로 확인할 수 있게끔 작업.
- Webpack 과 같은 module bundler 를 사용하여 module bundling 을 하되 bundle 사이즈 축소 및 사용성 개선을 위한 부분을 고려.
- module bundler 및 FE framework 에서 제공하는 코드 분할 기능을 적극 활용.
- transpile 과 polyfill 을 적극 활용하여 대부분의 브라우저에서 동작할 수 있도록 작업.
- ie 는 9 또는 11 이상의 브라우저에서 동작을 보장하면 됨.
- 모든 Issue 에는 댓글을 달 수 있게끔 작업.
- (Optional) Github API 활용
- Github SSO Login.
- Blame API 를 활용하여 코드에 해당하는 작업자 표기.
- (Optional) Issue tracker 로도 활용될 수 있도록 개발.
- 프로젝트의 멤버들에게 관련한 이슈를 할당할 수 있게끔하고 해결/작업중/미해결 과 같은 상태로 분리될 수 있게 작업.
- Jira, redmine 형태를 참조.
- NPM 으로 배포.
- SDK 통해서 자동적으로 수집되는 정보뿐만 아니라 서비스 개발자들이 Optional 하게 다양한 정보들을 수집할 수 있게끔 함.
- 자동적으로 수집되는 정보에 대해서는 FE, BE 에 따라서 다르게 구성 필요.
- freeform 형태의 정보들을 넘겨줄 수 있도록 구성필요. (ex. 성별, 나이, 국가, ...)
- (Optional) 가능하다면 SDK 의 기능별로 모듈 분리를 해서 mono repo 형태의 개발
📈 퍼포먼스 모니터링 📉
- HOME
- 프로젝트 개요 및 요구사항
- 프로젝트 설계
- DB 설계
- 프로젝트 구조
- 기술 특장점
- 피드백 & 추후 과제
- docker-compose로 mongodb 설치
- sentry sdk에서 보내는 실제 json구조
- acent sdk 설치 방법
🤞 Rules 🤞
🗒 스프린트 계획 🗒
🙋♂️ 데일리 스크럼 🙋♀️
📚 회고 📚