만들지 않은 시스템도 고칩니다
운영 중인 시스템에 문제가 생겼는데,
만든 곳에 연락이 닿지 않거나 연락은 되는데 손이 오지 않는 경우가 있습니다.
저희는 저희가 만들지 않은 시스템도 받습니다.
받은 다음에 하는 일이 정해져 있어서 가능합니다.
원인이 어디에 있는지부터 봅니다
고객사가 운영 중이던 시스템의 메인 화면이 뜨지 않는다는 요청을 받았습니다.
저희가 개발한 시스템이 아니었습니다.
원인은 서버도 데이터베이스도 아니었습니다.
화면단(React) 코드의 예외 처리 누락이었습니다.
메인 화면 상단 배너가 외부 기관 API에서 받아온 코드를 아이콘 이미지와 연결해 표시하는데,
프로그램에 등록된 코드가 일부에만 한정돼 있었습니다.
등록되지 않은 코드가 내려오면 연결할 이미지를 찾지 못해 오류가 나고,
그 오류가 화면 전체의 렌더링을 중단시키는 구조였습니다.
배너 하나의 문제였지만 화면 전체가 죽은 것처럼 보였습니다.
반대로 해당 상황이 해제되면 화면이 저절로 정상화되기 때문에,
원인을 잡기 까다로운 형태였습니다.
건드린 범위를 정확히 적어 드립니다
조치 결과는 이렇게 보고했습니다.
- 대상
- 배포된 화면 리소스 파일 1개
- 내용
- 미등록 코드 수신 시에도 오류 없이 진행되도록 방어 처리
- 변경 범위
- 서버 설정 · 백엔드 · 데이터베이스 변경 없음
- 재기동
- 불필요
- 백업
- 원본 파일 보관
- 확인
- 메인 화면 및 하위 메뉴 전반 정상 동작
- 남는 제약
- 미등록 코드 항목은 아이콘만 표시되지 않음. 명칭 · 시각 등 정보와 나머지 기능은 정상
무엇을 건드렸고 무엇을 건드리지 않았는지가
운영을 책임지는 쪽에는 가장 중요한 정보입니다.
임시 조치는 임시라고 말합니다
위 조치는 운영 중단을 최소화하기 위한 임시 조치였습니다.
다음 배포 때 파일이 교체되면 함께 사라집니다.
그 사실을 조치 보고서에 그대로 적었고, 재발을 막을 세 가지를 따로 전달했습니다.
- 아이콘 매핑에 누락 코드 추가
- 외부 API 코드값 변동에 대비한 방어 코드 적용
- 해당 영역을 별도 오류 경계로 분리
수정 위치와 방향까지 확인해 함께 넘겼습니다.
저희가 계속 맡지 않더라도 다음 사람이 이어받을 수 있어야 하기 때문입니다.
운영 중인 시스템은 이렇게 만집니다
되돌릴 수 있는 상태를 먼저 만듭니다
- 운영 중 구조 변경이 필요하면 일자별 마이그레이션 SQL로 분리해 적용합니다
- 직전 스키마와 초기 데이터는 백업본으로 함께 보관합니다
- 배포 안내 문서도 버전별로 남깁니다
원인은 끝까지 나눕니다
- 표시가 계속 회색으로만 나오던 건은 원인이 세 군데였습니다
- 화면 분기 오류, 한쪽 기준으로만 작성된 조회 쿼리, 다른 기준 조회 시의 빈 결과
- 하나만 고치면 증상이 남습니다
절차가 있는 환경에서도 합니다
- 공공기관 시스템은 준공 이후 하자담보책임 기간에도 점검이 이어집니다
- 폐쇄망 접속 승인, 원격지 개발 승인, 접속 점검대장 정기 제출
- 정해진 절차를 지키며 운영해 왔습니다
이런 상황이면 연락 주십시오
- 만든 곳에 연락이 되지 않습니다
- 연락은 되는데 대응이 늦습니다
- 장애가 났는데 원인이 어디에 있는지 모르겠습니다
- 손대면 다른 데가 터질까 봐 아무도 건드리지 못합니다
- 담당자가 바뀌어 시스템 내부를 아는 사람이 없습니다
계약 형태
건별 대응, 기간 단위 운영, 특정 업무 범위 위탁 모두 가능합니다.
시스템 상태와 필요한 대응 빈도가 다르기 때문에 형태는 협의해서 정합니다.
먼저 상태부터 봅니다.
소스 · DB · 서버를 확인해 현재 상태와 필요한 작업을 문서로 정리해 드립니다.
그 문서만 받고 다른 곳에 맡기셔도 됩니다.