최근에 Sentry 를 사내에 도입을 하게 되었다. 왜 도입을 했는지 그리고 도입을 하면서 어떤 장점을 얻게 되었는지 포스팅을 통해서 누군가에게 도입을 할 때 이런 포인트에서 도입에 대한 고민을 하는 것이 좋지 않을까? 라는 관점에서 진행을 해보려고 한다.
Sentry 를 도입하게 된 배경
일반적으로 sentry 의 경우 에러 모니터링을 하기 위한 에러 로그 서비스 이다.
정말 간단하게 도입이 가능하다는 점이 가장 큰 장점이다.
내가 고민을 한점은 에러 로그 모니터링이 되지 않는다 라는 점이다. 하나의 서비스를 여러가지 서버를 통해서 운영을 하는데 에러 모니터링은 한곳에서 집중되서 하는 점이 내가 보았을 때 이상하다고 생각을 하게 되었다. 어떤 서버에서 모니터링이 되는지 또한 모호하게 운영을 하는 것으로 확인을 하였다.
물론 에러 모니터링을 하는 Slack 채널을 통해서 진행을 하고 있었다. 하지만 특별하게 보지 않는다고 생각을 하게 되었다. 로그 또한 slack 으로 수집하는 것이 아니라 로그를 통해서 타임라인을 추적하는 식으로 일을 진행을 하게 된다.
그 점에서 어렵게 일을 하고 있다고 판단을 필자는 하게 되었다.
여기서 내가 생각한 점은 일단 사내에서 사용하는 인프라의 경우 GCP , AWS 로 둘 다 사용을 하면서 생기는 단점이 가장 컸다. 운영되는 유지 비용도 두배로 나가게 되는 단점을 안고 서비스를 운영을 하는 것으로 생각을 하게 되었다.
그렇다면, 기존에 에러 전파을 어떤 식으로 진행을 했는가? 실제 내가 에러를 추적을 하면서 생각한 프로세스의 경우 다음 과 같았다.
- 에러가 발생 : 에러가 발생이 되면 jira 혹은 슬랙을 통해서 담당자 및 개발자가 전달을 하게 된다.
- 특정 인프라 Slack 채널 : 인프라 별로 Slack 채널을 통해서 에러를 전달
- 개발자가 특정 인프라 로깅 추적 : 개발자가 특정 인프라 로깅을 통해서 추적을 하게 된다.
- 에러 로그를 분석을 통해서 에러 수정
다음 과 같이 큰 프로세스를 통해서 에러를 전파하는 방식을 가지고 있다. 여기서 개발자가 일을 하면서 리소스가 상당히 많이 되며, 이 부분에 있어서 일의 효율이 나지 않는 다고 필자는 생각을 하게 되었다.
필자의 현재 구조가 1 : N 으로 Slack 채널을 운영을 하다 보니 , 운영 하면서 한번 더 생각을 하게 된다.
어떤 서버에서 에러가 발생이 됬지 … ? 혹은 어떤 에러가 발생이 됬지 …?
그래서 필요한 것이 서버 별로 에러 로깅을 수집을 하고 추적을 쉽게 하고 싶었다. 앞서서 이야기 하면 , 현재 하나의 서비스를 여러 인프라를 통해서 서버를 올려 놓고 사용을 하고 있다. (GCP & AWS)
그렇기 때문에 통합적으로 사용을 할 수 있는 Sentry 를 생각을 하게 되었고, 팀장님 과 대화를 통해서 도입을 하게 되었다.
일단 사내에서 사용하는 aws cloud watch 를 통해서 로그를 수집을 하는 방법 과 GCP 의 로그를 Slack 을 보내는 방법 그리고 sentry 를 통해서 에러 로그를 수집하는 방법 2가지를 고민을 하게 되었다.
하지만 Sentry 의 가장 큰 장점인 빠른 적용이 내가 선택하는 중요한 이유가 되었다. 이부분에 대해서 가장 적은 리소스를 통해서 적용을 하고 싶었다.
가장 큰 장점
Sentry 를 통해서 가장 큰 장점은 직관적 로그 추적 과 빠른 Output 이다. 적용 방법 또한 쉽다.
위의 링크의 Docs 에서 상세하게 나와 있다.
결과적 이유
결과 적으로 2주 동안 시험적으로 신규 프로젝트에 진행을 하였다. 상당하게 좋은 점은 내가 발견 못한 에러 또한 추적이 가능하고 개선을 할 수 있다는 점이 놀라운점이라고 생각 한다. 또한 에러 모니터링을 숫자로 표현되며, 개발을 하면서 놓쳤던 부분을 잡을 수 있다는 점과 상당히 직관적인 UI 를 통해서 진행을 하기 때문에 좋다.
단점으로는 “유료” 라는 점이다. 이 부분에 있어서 회사에서도 지원을 해준다고 하기에 팀 버전을 통해서 진행을 하게 되었다. 추후에는 Sentry 를 통해서 “퍼포먼스” 체크를 해보려고 한다.
어떤 놀라운 장점을 가지는지 흥미로운 점인 점에서 상당히 좋은 서비스를 라는 것을 알게 되었고 기능 또한 많기 때문에 좀 더 docs 혹은 레퍼런스를 찾아서 더 쉽고 좋게 사용을 해볼 계획이다.