사람이 아닌 시스템에서 문제를 찾자
서비스를 운영하다 보면, 예상치 못한 장애나 오류가 발생하여 고객이 정상적으로 서비스를 이용하지 못하는 상황이 생기곤 합니다. 장애가 일어나면 당장 시스템을 복구해야 하고, 고객 CS까지 처리해야 하다 보니 마음의 여유가 없습니다.
이때 문제를 해결하기 위해 개발자가 나서야 하는 경우가 많은데, 자연스럽게 "왜 이런 버그가 생겼지?", "개발을 제대로 안 했나?", "테스트를 잘했어야 하는 거 아니야?"와 같은 질문(이자 비난)을 하며 서로를 탓하는 분위기가 형성되는 경우가 있습니다.
물론 충분히 할 수 있는 질문이지만, 이런 식의 비난 섞인 분위기는 결국 개인에게 책임을 돌리는 결과로 이어지기 쉽습니다. 그리고 한 번 비난의 화살을 맞은 개발자는 적극적으로 문제를 해결하기보다는, 점차 자기 방어에 에너지를 쏟게 됩니다. 그러면 문제 해결도 늦어지고 팀 전체의 사기도 떨어지기 마련입니다.
그렇다면 어떻게 하면 개발자와의 협력을 높이면서도 장애가 다시 발생하지 않도록 실질적인 대책을 마련할 수 있을까요? 제가 몸담았던 다양한 팀에서의 경험을 바탕으로,이런 상황에서 제가 했던 고민과 생각을 나누고자 합니다. 혹시 비슷한 상황에서 다른 관점이나 의견이 있다면 들려주시면 감사하겠습니다.
제가 깨달은 주요 생각은 아래와 같습니다.
문제의 원인을 개인에서 찾고 비난하기보다는, 시스템이나 환경적인 원인을 살펴보며재발 방지 대책을 마련해보자.
저는 장애나 오류가 발생하는 가장 큰 이유 중 하나는, 역설적이게도 개발자가 열심히 일을 하기 때문이라고 생각합니다. 만약 새로운 기능 개발이 전혀 이루어지지 않는다면, 그만큼 오류가 발생할 확률도 줄어들겠죠. 하지만 서비스가 발전하기 위해서는 계속해서 새로운 기능을 만들고 개선하면서 변경사항이 생기면서 예기치 못한 문제가 발생하기 마련입니다.
물론 가능한 한 오류를 줄이기 위해 테스트와 점검을 철저히 해야 하지만, 100% 완벽함을 추구하기란 현실적으로 어렵습니다. 그렇기에 오류 발생 자체를 완전히 막는 게 어렵다는 생각만으로도 조금은 마음이 너그러워질 것 같습니다.
만약 이런 상황에서 “어떻게 이런 실수를 했냐”며 개발자를 비난하기 시작하면, 개발자는 점차 방어적인 태도를 갖게 됩니다. 새로운 시도를 두려워하고, 책임질 상황을 만들지 않으려 자발적인 아이디어 제안을 주저하게 되죠. 결국 팀의 창의성과 협업 분위기는 떨어지고, 서비스 품질 역시 정체될 가능성이 커집니다.
제가 속했던 조직 중 하나에서는, 새로운 기능을 만들어도 큰 칭찬은커녕 당연히 해야 할 일을 했다는 시선이 있었습니다. 반면 작은 오류가 한 번이라도 생기면, 개발팀에 대한 비판이 쇄도했습니다. 그러다 보니 개발자들이 변화를 거부하고 점점 수동적이 되는 모습이 안타까웠습니다.
예를 들어, 중요한 고객정보가 실수로 삭제되는 사고가 있었다고 가정해 봅시다. 이때 “개발자가 어쩌다가 그랬을까?”라는 질문에만 몰두해 개인을 비난하면, 정작 재발 방지를 위한 제도적·시스템적 개선은 이루어지지 않습니다.
하지만 자세히 들여다보면, 2차 확인 절차가 없었다거나 운영 중인 시스템에서 삭제 작업이 제한되지 않았다든지 하는 환경적 결함이 컸을 수도 있습니다. 즉, 누구라도 실수할 수 있는 구조였다면, 이를 바꾸는 것이 우선이라고 생각합니다.
안전관리 분야의 연구자 제임스 리즌(James Reason)이 제시한 스위스 치즈 모델(Swiss Cheese Model)은 이러한 상황을 잘 설명합니다. 사고가 단순히 한 사람의 실수 때문에 일어나는 것이 아니라, 여러 겹의 방어막(시스템)에 구멍이 생겼을 때 최종적으로 사고가 발생한다는 이론입니다. 결국 ‘개인의 실수’로 보이는 사건 뒤에는 시스템적 결함이 자리 잡고 있을 가능성이 높다는 것입니다.
이렇다고 해서 무조건 실수를 눈감아주고 넘어가자는 뜻은 아닙니다. 실수의 원인이 개인의 능력 부족이었는지, 아니면 애초에 실수하기 쉬운 환경이었는지를 살펴보고 예방책을 마련하는 것이 중요하다는 것입니다. 문제의 원인을 파악하면서 향후 문제를 줄일 수 있는 시스템을 개선하는 것이야말로 실질적인 대책이라고 생각합니다.
결국 “이 문제를 누구 탓으로 돌릴까?”라는 질문 대신 “다음에는 어떻게 하면 같은 실수를 막을 수 있을까?”라고 묻는 자세가 중요한 것 같습니다. 이렇게 된다면 개발자들은 두려움 없이 새로운 시도를 할 수 있게 되고, 다른 팀원들과도 적극적으로 소통하며 개선책을 찾으려 할 것입니다. 냉혹하게 처벌하기보다는 실수를 통해 배우고 성장할 수 있는 분위기가 조성되면, 오히려 서비스 품질도 상승하고 팀워크도 탄탄해질 것이라 기대합니다. 서비스는 특정 개인이 아닌, 함께 일하는 모두가 만들어 내는 것이니까요.
✅ 개인을 과도하게 비난하지 않는다.
✅ 실수를 일으키는 환경적인 요소가 있었나?
✅ 시스템 상에 문제가 있었던 것은 아닐까?
✅ 어떤 절차를 마련하면 재발을 방지할 수 있을까?
✅ 같은 실수를 방지하기 위해 어떤 걸 마련하면 좋을까?
장애나 오류는 서비스를 운영하는 과정에서 언젠가 반드시 부딪히게 되는 과제입니다. 그럴 때마다 개발자를 비난하기보다, “왜 이런 환경이 만들어졌을까?”, “어떤 절차를 추가하면 좋을까?”를 스스로 돌아보는 일이 정말 중요합니다.
저 또한 여러 프로젝트를 경험하면서 뼈저리게 깨달았습니다. 물론 비난보다 시스템 개선에 집중하는 문화가 한순간에 자리 잡기는 어렵지만, 작은 변화부터 시도하다 보면 분명히 더 나은 결과로 이어지리라 믿습니다.
혹시 이 글을 읽으시면서 떠오르는 다른 의견이나 경험담이 있으시다면, 언제든 자유롭게 나눠 주세요. 서로의 이야기를 통해 모두가 함께 성장할 수 있기를 바랍니다.