관찰 가능성이란 무엇일까요? 관찰가능성은 종종 "모니터링"과 동일한 의미로 쓰이곤 하지만, 본질적으로 그 의미가 다릅니다. "모니터링"은 운영 환경의 소프트웨어의 수치(metric)를 측정하고 그 수치를 기반으로 알람을 보내고, 수치를 시각화해서 보여주어 개발자 / 운영자들이 시스템의 상태를 파악할 수 있게 하는 행위 혹은 시스템이라고 할 수 있죠. 그러나 "관찰가능성" 은 본질적으로 수치를 수집하는 것을 넘어서 소프트웨어가 실행되는 분산된 어플리케이션(서버, 클라이언트, DB, 그외 모두)에서의 코드의 실행 흐름과 발생하는 모든 이벤트에 대해 무한에 가까운 카디널리티와 디멘셔널리티를 갖춘 구조화된 정보를 수집하고, 그 정보들을 빠르게(~10초 이내) 검색 / 집계하여 개발자 / 운영자가 현재 어플리케이션의 상태를 능동적으로 탐색하고 조사할 수 있도록 하는 시스템과 엔지니어링 문화를 말합니다.
여러분의 소프트웨어는 "관찰가능성"을 지원하나요? 소프트웨어 디버깅은 주로 어떤 방식으로 이뤄지나요? 운영환경에 문제가 생겼다는 것을 어떻게 전달받나요? 문제가 생겼다는 제보를 받았을 때 문제를 재현하려고 노력하고 있나요?
관찰 가능성에 관한 여러 질문들이 있습니다. 이 강의는 그 질문들에 대해 여러분의 소프트웨어와 여러분의 팀(혼자도 포함하여)이 어떤 방식으로 대처하는지 스스로 고민해보고, 떠오르는 의문과 더 좋은 방안을 제시하기 위해 제작되었습니다.