울면서개발하기
VERA ERP 개발일지

화면 전체 자동 점검과 코드성 조회 기억하기

· 커밋 2개

사용자가 프로그램 요청을 올리기 전에 문제를 먼저 찾고 싶어서 점검 도구를 만들었다. 그 도구가 화면마다 나가는 요청도 기록하게 되면서, 같은 요청이 화면마다 되풀이되는 것이 눈에 들어와 그것까지 줄였다.

한 일

화면 전체 자동 점검

개발 서버에서 브라우저 콘솔로 부르는 도구다. 메뉴 트리 순서대로 화면을 하나씩 열고 “조회” 단추만 눌러 본다(저장·삭제·신규는 누르지 않는다). 그 사이에 나온 콘솔 오류·경고, 처리되지 않은 예외, 서버 거래 오류, 화면이 띄운 메시지를 모은다. 운영 번들에는 들어가지 않는다.

체험 계정으로 보이는 메뉴 102개를 돌려 두 가지를 찾았다.

  • 지도를 그리는 화면이 웹 브라우저 컴포넌트의 내부 필드를 직접 읽고 있었는데 Nx 에 그 필드가 없어 지도가 그려지지 않았다
  • 출력물 화면이 쓰는 넥사크로 전역 하나가 없었다

둘을 고치고 다시 돌려 깨끗한 것을 확인했다. 값이 틀리거나 모양이 깨진 것, 조회 뒤 다른 단추에서 나는 오류는 이 도구로 잡지 못한다. 관리자 전용 메뉴도 아직 돌리지 않았다.

코드성 조회 기억하기

화면을 열 때마다 공통코드, 회계연도 목록, 서버 날짜 같은 요청이 되풀이해서 나간다. 이것을 기억해 두고 다시 쓴다.

  • 공통코드는 상위 코드마다 기억하고, 처음 보는 코드만 서버에 묻는다
  • 회계연도 목록과 서버 날짜는 응답을 잠깐 기억한다
  • 같은 비동기 요청이 이미 오고 있으면 새로 보내지 않고 그 응답을 함께 쓴다
  • 저장이나 프로시저 거래가 나가거나 로그아웃하면 기억한 것을 모두 버린다

메뉴 102개를 열 때 나가는 요청이 363개에서 237개로, 그중 동기 요청은 151개에서 89개로 줄었다.

기술 메모

동기 요청을 줄이는 것이 더 중요했다. 원본 넥사크로 화면의 공통 초기화는 공통코드와 콤보 목록을 동기 요청으로 받는다. Nx 도 화면 스크립트가 그 결과를 바로 다음 줄에서 읽기 때문에 동기 XHR 을 그대로 쓴다. 동기 요청은 기다리는 동안 화면 전체가 멈추므로, 전체 요청 수보다 동기 요청 수가 체감에 더 크게 남는다.

기억을 버리는 시점을 넓게 잡았다. 공통코드나 회계연도는 관리 화면에서 바뀔 수 있다. 어느 저장이 어느 코드를 바꾸는지 하나하나 따지지 않고, 저장·프로시저 거래가 하나라도 나가면 전부 버리게 했다. 조회만 하는 동안에는 기억을 쓰고, 무언가 바뀔 수 있는 순간에는 처음부터 다시 받는다.