안수찬 블로그

오픈소스 네이밍: 에러 모니터링을 위한 Sentry 와 스타크래프트2

Introduction

안수찬 @dobestan

안수찬 @dobestan

서울대학교에서 컴퓨터공학을 전공하고, 오랜 기간 서비스 기획 및 개발을 해 왔습니다. 이러한 전문성을 인정받아 미래부 소프트웨어 마에스트로에 선정된 바 있습니다. 현재는 모바일 방송국, 퍼스트캔버스에서 컨텐츠로 새로운 가치를 그리고 있습니다. 나는 안수찬이다. 그러므로 나는 할 수 있다. me@ansuchan.com


오픈소스 네이밍: 에러 모니터링을 위한 Sentry 와 스타크래프트2

Posted by 안수찬 @dobestan on .
Featured

오픈소스 네이밍: 에러 모니터링을 위한 Sentry 와 스타크래프트2

Posted by 안수찬 @dobestan on .

최근에도 Python Django 를 이용한 백엔드 어플리케이션 개발을 진행하고 있습니다. 기존에 사용하던 Sentry 라고 하는 서비스를 이용해서 Django 의 에러 모니터링을 하고 있는데, sentry 의 문서를 살펴보다 최근에 카페에서 혼자 스타2를 하다가 재미난 사실을 알게 되어서 Sentry 를 간단하게 소개하며 이에 대한 내용을 공유합니다. 결론적으로 얘기하면, Sentry 라는 이름은 스타크래프트2와 관련이 있습니다.

Error Monitoring 을 위한 Sentry, Raven

Sentry 는 에러 모니터링/로깅을 위한 서비스입니다. Disqus 에서 에러 로깅을 위한 django application 인 django-db-log 으로 시작되어, 현재는 오픈소스 로 공개되어 있으며, Django 뿐만이 아니라 다양한 백엔드를 지원하고 있습니다.

  • Self-hosted 로 직접 설치해서 사용할 수도 있고,
  • GetSentry.com 서비스를 이용해서 사용할 수도 있습니다.

이렇게 Error Logging 을 위한 서버가 "Sentry", 그리고 서버로 에러 데이터를 전달하기 위해서 개발된 Sentry Client 를 "Raven" 이라고 합니다. 즉, Sentry 를 사용하기 위해서는 다음과 같은 큰 구성을 가지고 있습니다.

  1. [서버] Sentry Server
    1. Self-hosted Sentry ( 직접 배포하여 운영하는 형태 )
    2. Sentry Web Service ( GetSentry.com )
  2. [클라이언트] Raven: raven-python, raven-node, ...

실제로 Raven 구현체를 살펴보면 authentication, versioning, context 등의 꽤나 다양한 기능을 제공하고 있는데, 기본 설정으로 사용하는 입장에서는 DSN 을 설정하는 것 만으로도 쉽게 사용을 할 수 있으니 여기에서는 세부적인 사용 방법에 대해서는 따로 다루지 않고 넘어가도록 하겠습니다. ( * DSN: Data Source Name, Raven Client 에서 Sentry 로 연결하기 위한 고유의 주소 )

Django 프로젝트에서는 다음과 같이 간단한 설정만으로 이를 설정하고 에러 모니터링을 쉽게 할 수 있습니다:

// settings.py
INSTALLED_APPS = (  
   'raven.contrib.django.raven_compat',
    # ...
)

RAVEN_CONFIG = {  
  "dsn": "'{PROTOCOL}://{PUBLIC_KEY}:{SECRET_KEY}@{HOST}/{PATH}{PROJECT_ID}'",
}

Node.js 에서는 다음과 같이 적용할 수 있습니다:

StarCraft2 에서의 Sentry, Raven

아마 스타2를 즐겨하시는 분이라면 Sentry, Raven 이라는 이름 대신에 "파수기", "밤까마귀" 라는 이름으로 더 익숙할수도 있겠습니다. 저는 스타2가 국내에서 망한 이유를 스타1 의 익숙한 영문명이 아니라, 이상한 한국말로 바꿨기 때문이라고 생각합니다. 아니, "오버로드"라는 멋진 이름 대신에 "대군주" 라는 어색한 표현으로 바꾸다니요. Sentry 와 Raven 은 각각 스타크래프트의 유닛 이름입니다. ( 물론, 그 이전에 각각 "보초", "까마귀" 라는 뜻을 가진 영어 단어이기도 합니다. )

아군을 보호하는, Sentry

스타크래프트2의 프로토스 파수기
Sentry ( 파수기 )

파수기는 거대한 수호 방패를 생성해 동맹 유닛을 보호하고 원거리 공격으로 받는 피해를 줄여준다.

Sentry(파수기) 는 프로토스의 유닛입니다. 최근 프로토스 저그전 빌드의 정석(?)이 되어버린 것 같은 "3관문 6파수기 트리플" 의 그 파수기가 맞습니다. 파수기는 "고밀도 사이오닉 에너지(?)"를 이용해서 아군을 보호하는 역할을 합니다. 잘 생각을 해보면 "아군을 보호해주는 프로토스의 sentry" 와 "error monitoring 을 위한 sentry" 와 유사하다는 생각이 듭니다. 서비스의 핵심적인 기능이나 로직은 아니지만, 뒤에서 문제가 생겼을 때 도움을 주는 헬퍼의 역할이라고 생각하면 꽤나 이름을 잘 지엇다는 생각이 듭니다. 실제로도 Sentry 문서의 구석을 살펴보면 다음과 같은 표현이 있습니다:

Sentry representing a Protoss unit that had a shield, which was fairly fitting as Sentry helps shield you from problems, but doesn’t prevent them, just like the unit.

프로토스에 Sentry가 있다면, 테란에는 Raven 이 있다.

스타크래프트2의 테란 밤까마귀
Raven ( 밤까마귀 )

밤까마귀는 감시선과 전투공병의 역할을 동시에 수행하는 다재다능한 병기이다. 첨단 감지 장치를 탑재하여 은폐하거나 잠복한 적을 찾아낼 수 있고, 자동 포탑으로 아군 병력을 보호하기도 한다.

사실 이 이름은 조금은 끼워맞춘듯한 느낌이 듭니다. Raven(밤까마귀)는 테란의 공중 유닛입니다. 기존의 스타1에서는 사이언스 베슬의 역할과 유사하다고 보시면 됩니다. 프로토스에 Sentry(파수기)가 있다면, 테란에는 Raven(밤까마귀)가 있다고 할 수 있겠습니다. ( 물론 비교 대상이 조금 이상하기는 합니다. ) 딱히 특정한 이유가 있다기 보다는 Sentry 와 짝을 맞추기 위해서 이러한 이름을 지은 것 같습니다. 실제로 Raven 의 경우에도 Sentry 문서의 구석을 살펴보면 다음과 같은 표현이 있습니다:

When we named the client we went with Raven, which represents a Terran air unit that also happens to place Sentry turrets.

정리하며

저는 개인적으로 개발을 하다 보면 모르는 단어들에 대해서 꼭 "어원" 을 살펴보고 넘어가고자 합니다. 예를 들면, "왜 Python 이라는 이름인가? (Monty Python's Flying Circus)", "왜 Django 라는 이름이 붙었을까? (guitarist Django Reinhardt)" 를 찾아보고 넘어가고자 합니다. 영어 단어를 외울 때 처럼 어원을 알고 있으면 훨씬 더 프로젝트를 만든 개발자의 생각을 조금은 더 따라갈 수 있다고 생각하고 있습니다.

이런 이름들 말고도, 오픈소스 프로젝트들을 살펴보다보면 꽤나 재미난 이름들이 많이 있는 것을 알 수 있습니다. {{ mustache }} 이러한 형태의 템플릿 문법이 콧수염을 닮아서 이름을 지은 mustache 와 같이 모양 그대로 지은 프로젝트도 있고, gulp 와 같이 "꿀꺽꿀꺽 삼키다" 라는 의미를 그대로 담은 ( workflow 가 순차적으로 실행되는 느낌(?) ) 네이밍도 있습니다.

이렇게 자기가 만든 프로젝트에 의미있는 이름을 짓고, 개발 생태계에 하나의 족적을 남기는 것이 정말 의미있고 멋진 일이라고 생각을 합니다. 저도 바쁘다는 핑계로 최근에는 개인 프로젝트를 잘 진행하고 있지 못한데, 얼른 더 공부하고 더 많이 고민해서 의미있는 프로젝트를 진행하고자 합니다.

안수찬 @dobestan

안수찬 @dobestan

https://ansuchan.com/

서울대학교에서 컴퓨터공학을 전공하고, 오랜 기간 서비스 기획 및 개발을 해 왔습니다. 이러한 전문성을 인정받아 미래부 소프트웨어 마에스트로에 선정된 바 있습니다. 현재는 모바일 방송국, 퍼스트캔버스에서 컨텐츠로 새로운 가치를 그리고 있습니다. 나는 안수찬이다. 그러므로 나는 할 수 있다. me@ansuchan.com

View Comments...