좋은 개발자가 알아야하는 9가지 포인트들 - 사고 대처 능력 키우기


  1. 기본기 확실히 하기

  2. 학습 능력 키우기

  3. 의사 소통 잘하기

  4. 문제 정의 잘하기

  5. 태스크 완료 시간 추정 잘하기

  6. 운영을 고려한 코드 작성하기

  7. 서비스 사고 대처 능력 키우기

  8. 결과를 내는데 집중하기

  9. 영향력 갖기 (코딩 멍키)


개발자로 일을 하다보면 피할 수 없는 것이 서비스와 관련된 사고를 내는 것이다. 보통은 버그로 인해 이런 일이 발생하게 되는데 이는 사실 코드를 많이 작성하는 개발자들에게 더 많이 발생할 수 밖에 없는데 동일한 사고를 안 내겠다는 개인적인 노력과 동일한 문제가 반복되는 것이 아니라면 성장과정으로 보는 조직적인 관점이 중요하다. 이로 인한 트라우마가 생긴다면 개발자의 커리어에는 치명적인 상처가 생길 수 있다.


개인의 성향에 따라서는 내 코드로 인해 서비스 사고가 났을 때 자책을 하다못해 움츠러들 수 있는데 이 경우 코드를 완벽하게 작성해야겠다는 결론에 도달할 수 있다. 이는 개인에게도 스트레스이기도 하고 조직 관점에서도 느린 속도로 이어지기에 개인적으로도 개발자의 커리어에서 사고는 언제 내느냐의 문제라고 바라보면서 사고 발생시 복기하고 어떻게 하면 재발을 막을지 생각해보는 것이 중요하다.


하지만 그 개인이 속한 개발 조직에서 사고의 책임을 100% 개인에게 돌릴다면 개인이 움츠러 드는 것은 어쩔 수 없다. 이는 특히 기술부채를 안고 갈 수 밖에 상황에서는 더 그러하다. 그러기에 개발 조직의 관점에서는 다음을 생각해보는 것이 좋다.


  1. 사고 발생시마다 프로세스를 개선하고 테스트를 추가하는 등의 노력을 병행하는 것이 더 좋다. 사고 마다 레벨을 정해서 심각한 문제들의 경우 사후 부검 프로세스를 통해 이유를 파악하고 재발을 막기 위한 조치들을 취해야 한다.

  2. 또한 사고가 발생했을 때 얼마나 빨리 이를 감지하고 문제해결 프로세스를 시작할지 사고 대처와 관계된 역량을 키우는 것이 중요해진다. 지난 포스팅에서 이야기했던 운영을 고려한 코드를 작성하는 것이 중요해지기 시작하는데 에러 메시지를 이해하기 쉽게 하고 여기저기 로그를 자세히 남기는 것들을 이야기했었다. 어느 정도 규모가 커진 조직이라면 처음에는 백엔드 엔지니어등이 코드 배포와 운영, 모니터링을 담당할 수 있겠지만 별도의 데브옵스 조직이 필요할지 점검해보는 것이 필요할 수도 있다.

  3. 주기적으로 중요 사고에 대한 조치가 취해졌는지 어느 정도로 조치를 취할지 논의할 필요가 있다. 안 그러면 사후부검만 하고 실제 예방 조치는 취해지지 않는 문제가 발생한다. 이는 엔지니어링 리더십의 책임이기도 하다.

  4. 많은 경우 크고 작은 문제들이 고객 리포트로 초기에 발견할 수 있기에 CS팀과의 원활한 커뮤니케이션이 필요할 수 있으며 이 역시 지난 포스팅에서 이야기했었다.

  5. 대부분의 큰 사고는 데이터베이스와 연관된 경우들이 많다. 그래서 데이터베이스의 오래 걸리는 쿼리를 선제적으로 모니터링하고 문제 되는 부분을 찾아 미리 최적화하는 것이 필요하다. 또 하나 해볼 수 있는 것은 중요한 페이지나 중요 API의 실행시간 (latency) 모니터링을 해보는 것이다.

     

온라인 서비스에서 사고는 언제 일어나느냐의 문제지 피해갈 수 있는 문제는 아니다. 사고를 안 내기위해 코드를 완벽하게 작성하려고 하는 것 보다는 문제 감지와 운영이 쉬운 코드를 작성하면서 코드 배포 프로세스와 서비스 모니터링 프로세스를 강화하는 것을 병행하는 것이 더 맞는 방향이다.

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2024년 5월 15일 오후 10:15

 • 

저장 196조회 10,122

댓글 1