30여 개 금융사 전산시스템 장애 알림 자동화
챗GPT가 알아서 수집해 슬랙에 보내 준다면?
[현재 일시적인 장애로 서비스 이용이 불가능합니다]
늦은 밤이나 이른 새벽에 금융 애플리케이션을 사용할 때 가끔 보이는 문구다. 단순히 계좌내역을 조회하려고 했다면 마음 편히 앱을 종료하겠지만, 급한 일 때문에 출금해야 했다면? 그리고 그 일이 반복된다면? 언제 오류가 해결되는지 초조하게 지켜보다 결국에는 다른 은행 계좌로 자금을 옮기게 될 것이다.
‘금융사 전산시스템 장애 안내 자동화’ 프로젝트는 그렇게 출발했다. 데일리펀딩 고객이 이용하는 농협 가상계좌는 국민은행과 신한은행, 카카오뱅크와 토스뱅크 등 총 30여 개의 실 계좌은행과 연결돼 있다. 이 실 계좌를 통해 입출금을 시도했을 때 서비스 점검 중이라고 뜬다면, 고객은 데일리펀딩 서비스에 오류가 있다고 판단할 수 있다. 실제로는 다른 금융사의 전산 장애나 점검 때문인데도 말이다. 그래서 에러가 나면 금융사 장애 알림을 띄우고 어떤 기관에서 어떤 장애가 발생했는지 파악해 공지로 등록해야 했다. (더 구체적인 과정은 너무 피곤하므로 생략한다.)
만약 이 과정에서 조금이라도 안내가 지체되면 고객은 원인을 모른 채 불편을 겪을 것이다. 데일리펀딩 플랫폼을 믿고 사용해도 되는지 불안해 하는 것도 물론이다. 금융사 전산시스템 중단 알림이 자주 뜨는 때, 고객에게 신뢰와 편의를 드리기 위해서는 수작업에 머물면 안 되겠다고 생각했다.
신뢰성과 편의성을 강화하기 위해 IT기술을 어떻게 활용할지 MIT님과 대화 나누다가, 챗GPT를 활용해 반복되는 이 업무를 자동화하기로 했다. 언제나 그렇듯, 가설은 완벽했다.
‘챗GPT는 30여 개의 금융사 페이지로 이동해 예정된 서비스 점검 사항을 확인한다. 그리고 그 정보를 요약 정리해 슬랙으로 보내 준다. 관리자는 슬랙에서 간단히 ‘확인’ 버튼만 누르면 공지사항이 등록된다. 그럼 꼭 개발자가 아니더라도 누구든지 슬랙 메시지에서 버튼을 클릭해 언제 어디서든 일을 처리할 수 있다.’
그런데 챗GPT는 아직 이 모든 과정을 할 수 없단다.
챗GPT와 크롤링, N8N 그리고 도커까지…
보완하고, 연결하고, 주고받아야 완성되는 작업
핵심은 꽤 다양했다. 우선 웹 페이지는 서버 사이드 랜더링(SSR)과 클라인트 사이드 랜더링(CSR) 두 가지 방식을 채택하는데, 챗GPT는 각각의 방식에 따라 어떻게 랜더링할지 몰랐다. 또 은행 사이트의 공지사항 페이지에서 ‘장애 안내’ 게시글을 선별하고, 내용을 들여다 보고 파악하는 과정을 처리하는 데 한계가 있었다. 요즘은 크롤링 봇이 웹 사이트의 데이터에 접근하기 어렵게 조치하는 추세니까.
우선 검색엔진을 활용해 장애 일정을 확인하기로 계획했다. 네이버, 구글 같은 포털사이트에 ‘금융사 장애’ ‘시스템 장애 알림’ ‘은행 장애 일정’ 같은 키워드를 다양하게 지정한 다음, 한 달 이내의 검색 결과가 최신순으로 나오게 정렬했다. 검색 결과가 페이지로 나타나면, 그 페이지의 링크를 수집해 목록을 만들었다. 날것 그대로 전부 긁어 오는 건 간단한 스크래핑 작업이니까. 그렇게 긁어 온 데이터를 챗GPT에게 던져 명령했다. “이 중에서 은행 시스템 중지와 관련된 것만 추출해 링크를 반납해”라고.
그러면 챗GPT는 엄청 복잡한 HTML 코드 안에서 관련된 글만 찾아 잘 포장해서 전달해 줬다. (대충 던졌는데도 찰떡같이 알아듣는다) 여기서 끝나면 다행이련만 그렇지 않았다. 세부 내용을 확인해야 하니 그 모든 링크를 타고 들어간 뒤 다시 상세하게 긁어 오라고 했다. 페이지를 다 긁어 오는 거라 내용이 엄청 길어질 수밖에 없으니, assistant GPT라는 Open AI 기능을 활용한다. 프롬프트 생성 규칙에 맞게 instruction을 설정하고 조건에 맞는 결과만 응답하라고. 물론 매일 돌아야 하는 서비스이니, 데이터베이스로 Redis를 사용해 기존에 확인했던 내용은 보관처리해 같은 내용이 챗GPT에 중복 요청되지 않도록 했다.
다음 미션은 챗GPT가 정리한 것을 자동으로 슬랙에 공유하는 것이었다. 요즘 핫한 자동화 툴인 N8N과 Make, 재피어 등을 알아봤다. 이 자동화 툴은 API에 요청을 언제 보낼지, 요청을 받았을 때 어떤 행동을 할지 다 정할 수 있기 때문이다. 이 중에서 N8N은 오픈소스라 개발자의 자유도도 높고, 워크 플로우가 어떻게 진행되는지 시각적으로 보여 준다는 장점이 있다. 게다가 셀프 호스팅까지 가능하다. 굳이 개발자가 아니더라도 다양한 직군의 동료가 다 같이 보면서 자동화를 구현할 수 있고, 업무 흐름도 파악하기 쉽다. 서버이기 때문에 다른 서버와 API를 사용해 데이터를 주고받는 것까지 가능하다. 자동화 서비스가 중단되지 않도록 클라우드에 서버를 설치하고 도커를 이용해 N8n, redis, 비즈니스 로직을 처리하기 위한 API 서버를 분리했다.
워크 플로우 그림으로 보여 주면 생산성 극대화돼
우르르 쏟아지는 신기술 속 진주 찾아야
MIT님과 초반에 논의했을 때, 슬랙 버튼을 활용한다는 건 참 좋은 아이디어라고 생각했다. 금융사 특성상 외부에서 장애 등록을 하려면 내부망에 접속해야 하는 등 번거로움이 동반된다. 그러나 슬랙의 Interaction을 활용하면 언제, 어디서든 버튼을 통해 내부망에 있는 비즈니스 로직을 처리할 수 있다. 슬랙 버튼을 누르면 그 내용이 우리 서버로 이동하고, DB에 등록이 된다. 데일리펀딩에 오기 전까지는 생각도 하지 못한 것이었는데, 반복적으로 일어나는 업무를 슬랙으로 자동화한다니. 효율적인 업무 방식을 추구하시는 MIT님의 개발 방향이 개인적으로 좋은 자극이 됐다.
이번에 도입한 기술이나 툴은 실제로 업무에 활용하는 사례가 거의 없었다. 외국 개발 커뮤니티나 깃헙(GitHub), 미디엄, ‘Reddit의 r/automation’ 커뮤니티를 비롯해 N8N 커뮤니티나 오픈AI 커뮤니티까지 샅샅이 뒤져 보는 수밖에. ‘개발 덕후들’은 어떻게 자동화했는지 살펴보고 ‘이런 것까지 구현할 수 있구나’ ‘마음만 먹으면 엄청 세밀하게 자동화할 수 있구나’ 느꼈다.
그러나 금융사의 새 소식이 네이버나 구글 검색에 바로 반영되지 않는 한계는 아쉬움으로 남았다. 검색엔진에 포함되지 않는 중단 소식도 다 잡아낼 수 있기를 희망했기 때문이다. 그러려면 결국 은행사 각각의 공지를 가져오는 작업이 필요했다. 각각의 금융사 개별 특성에 맞게 코딩하는 작업은 비효율적이라 최신 스크래핑 툴로 그 과정을 간편화하고 효율화하고 싶었다. 다양한 툴을 발견했고 효율화, 자동화, 비용 모든 것을 고려해 UI Vison RPA라는 툴을 확인했는데, 안타깝게도 headless 환경에서 자바스크립트로 브라우저 확장을 로드하는 게 정책상 금지돼 있었다.
다만, UI Vison RPA는 시각적으로 스크래핑 방법을 확인하고 그 결과를 확인하기 간편하고, 자바스크립트로 그 절차를 추출할 수 있다. 패턴과 절차가 명확한 스크립트는 AI가 처리하기 간편하니, UI Vison RPA로 스크래핑 결과를 확인하고, 챗GPT에게 Playwright을 활용해서 코드로 처리하는 방법을 선택했다.
챗GPT에게 ‘해줘~’라고 명령하는 것만으로는 처리되지 않았지만, 이 과정에서 현재 계속해서 발전하고 있는 스크래핑, 크롤링 기술과 러프한 데이터를 간편하게 가공해 주는 AI의 잠재력을 실감했다. 프로젝트 진행 중 발견한 GPT operator, Flowith 등 정말 ‘딸깍’ ‘해줘’로 해줄 날이 멀지 않았음을 느낀다.
정말 다양한 신기술이 우르르 쏟아지고 사용 방법도 어렵지 않으니, AI를 활용해 거침없이 도전해 보면 좋을 것 같다.