[회고] 오류 코드가 운영 배포 및 사용된 사건에 대해서

JJeong·2021년 12월 14일
0
  • 무슨 일이 있었나?
    : 특수 단가를 저장하는 시스템이 제대로 작동하지 않아서, 계속 기본 단가로 저장되고 있었다. 오픈 이후부터니까 약 1달 정도 되었다.

  • 원인이 무엇인가?
    : 프론트 코드가 잘못되어 있었다. inputFields에서 unitPrice를 제거해야 했는데, addInputFields에서 제거하고 있었다.

  • 장애를 복구하기 위해서 어떤 액션을 취했나? (내가 한 일 뿐만 아니라 팀 단위로)
    : 우선 코드를 수정하여 빠르게 staging에 배포하였다. 몇 시간 후 운영에 배포될 예정이다. 팀 단위 대응은 회의 시간에 논의할 것이다.

  • 이 장애를 사전에 어떻게 예방할 수 있었을까?
    - 팀의 업무 프로세스의 빈틈을 점검한다.
    : 오픈할 때부터 있던 결함이다. 테스트를 확실하게 했어야 했는데 그러질 못했다. 프로세스를 하나하나 적어서, 확실하게 했어야 했다.
    - 내가 한 부주의는 어쩌다가 일어났는가?
    : 개발 일정이 바빠서 테스트에 소홀한 면이 있었다. 에러가 발생하지 않아서 당연히 데이터도 잘 저장되고 있다고 생각한 면도 크다. 너무 핵심적이고 중요한 기능이었다. 서버로 데이터를 넘기는 부분은 정말 너무너무 중요하기에, 반드시 데이터 확인을 해봐야 했다.
    - 어떻게 이런 실수를 개인적으로, 시스템적으로 막을 수 있을까?
    : 내가 어떤 기능을 개발한 것인지 확실하게 이해하고 그에 따라 테스트를 작성해서 실행해야 한다. 상황을 설정하고, 테스트 시나리오를 철저히 만들어 테스트해야 한다.

  • 나/팀이 어떻게 하면 더 빠르고 효율적으로 장애에 대응할 수 있을까?
    - 시스템 보완이 필요한 점이 있는가?

    • 팀 차원의 보완
      위 글을 작성한 시점에서 1달 정도가 지났고 테스트를 좀더 철저하게 진행하고 있다. 개발자는 dev, 운영팀은 staging에서 각자 테스트를 하고 댓글로 표시한다. 조금 결이 다르지만 매번 배포 때마다 스모크 테스트를 진행하게 되었다. 주요 서비스가 안 되는 채로 시간이 흘러버리는 최악의 상황은 막을 수 있다.

    • 개인적 차원의 보완
      구글 스프레드 시트에 구체적으로 테스트 시나리오를 작성한다. 기능이 안 되는 건 금방 표시가 나지만, 데이터 오염은 따로 확인하지 않으면 알 수 없다는 걸 알았기 때문에 반드시 체크한다. 혼자 진행하기 어려울 정도로 큰 테스트는 단체 메신저에 올려 도움을 받고 있다.

0개의 댓글