brunch

You can make anything
by writing

C.S.Lewis

by Sunny Jan 13. 2022

Observability란 무엇인가요?

이 글의 원문은 Observability 톺아보기에서 확인하실 수 있습니다.


소프트웨어 시스템에서의 Observability에 대해 설명하기 전에 우선 단어의 유래를 알아봅시다. Observability란 개념을 처음 도입한 건 엔지니어 Rudolf E. Kálmán 입니다. Rudolf는 Observability를 아래와 같이 정의했습니다.


오직 시스템의 외부 출력만을 이용해서 
시스템의 현재 상태를 이해할  있는 능력
the ability to understand the current state of a system using only its external outputs.

Rudolf가 observability란 개념을 이용했던 건 엔지니어링에서의 control theory를 설명하기 위해서였습니다. 소프트웨어 시스템에서의 observability는 어떤 의미일까요?


소프트웨어 애플리케이션이 observability를 가지기 위해서는 다음 조건들이 충족되어야 합니다.


애플리케이션의 내부 동작을 이해함

Understand the inner workings of your application

애플리케이션이 처할 수 있는 모든 시스템 상태를 이해함

Understand any system state your application may have gotten itself into

외부 툴을 이용한 관측만으로 애플리케이션의 내부 동작과 시스템 상태를 이해함

Understand the things above, solely by observing that with external tools

시스템 상태가 어느 정도로 극단적이든 비정상적이든지 상관없이 이해함

Understand that state, no matter how extreme or unusual


쉽게 말하자면 소프트웨어 시스템에 대한 observability는 다음과 같습니다.


시스템에서 이전에 없었던 (한 번도 겪어보지 못한) 현상이 생기더라도 이를 이해하고 설명할 수 있는 척도
a measure of how well you can understand and explain any state your system can get into, no matter how novel or bizarre.

현대 소프트웨어 시스템에서 observability는 단순히 데이터 타입 혹은 입력을 의미하는 게 아닙니다. 우리가 관리하는 복잡한 시스템과 어떻게 상호 작용하고 이해하려고 하는가에 관한 것입니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari