백오피스 로그인 간헐적 실패

상황

내부 채널로 통해 백오피스 로그인이 잘 되지 않는다고 제보가 들어왔다. 계속 실패하는 것은 아니고 간헐적으로 실패해서 불편하지만, 업무는 진행할 수 있다고 들었다.

문제

로그인이 이따금씩 실패하는 원인은 해당 사용자가 문제가 있는 백오피스를 통해 로그인이 했기 때문이다. 문제가 있는 백오피스는 무엇일까. 백오피스는 사용량이 많지 않지만 기본적으로 2개의 pod(instance라고 해도 무방)로 구성되어 있다. 문제가 있는 백오피스는 사실 이 2개의 pod 중 하나의 pod를 말한다. 문제가 있는 pod에 접속했을 때마다 로그인이 되지 않았던 것이다.

해결

그러면 왜 하나의 pod만 문제가 있는 것일까. 보통 배포를 할 때 동일한 코드를 다 적용하기 때문에 코드가 다르진 않다. 그럼 해당 pod 안의 애플리케이션이 문제가 있는 것일까. 사이드카가 이상 작동해 pod 전체에 영향을 주고 있는 것일까. 원인을 찾아보던 중 바로 이전에 백오피스 관련 배포를 앞두고 vault 설정 값을 변경 했던 기억이 떠올랐다. Vault 설정을 먼저 바꿔도 애플리케이션이 이미 실행되고 있어 문제가 없겠지 생각했다. 그리고 배포가 연기되었을 때에도 vault 설정 값을 원복하지 않았다. 왜냐하면 며칠 뒤에 배포를 진행할 예정이었기 때문이다. 

그러나 원인은 vault 설정 값에 있었다. 2개의 pod 중 하나의 pod가 이상이 있어 자체적으로 기존에 있던 pod가 죽고 새로운 pod가 실행되었기 때문이다. 자체적으로 회복(recovery)하는 바람에 애플리케이션이 내가 변경했던 vault 값을 참조하여 새로 실행이 되었다. 새로운 vault 설정과 이전 코드가 서로 맞물리지 않으면서 로그인 기능이 예외로 빠지는 상황이었다. 해결 방법은 vault 설정을 원복한 후, 애플리케이션을 새로 실행했다.

반성

운영하면서 놓치는 부분인데 시스템이 항상 동작한다고 해서 문제가 없는 것은 아니다. 문제가 발생했을 때, 자체적으로 회복하기 때문에 내 눈에만 동작하는 것으로 보이는 것뿐이다. 설정을 변경한 후, 바로 문제가 발생하지 않는다고 넘어갈 수 없다. 실제로 이 설정이 애플리케이션과 맞물리면서 동작했을 때 문제가 없는지 확인해야한다. 그렇지 않다면 설정 자체도 코드 배포와 반드시 동일시 해야한다.