토스뱅크, 망분리 규제 속에서 5,700개 대시보드 운영을 코드로 자동화하다

데이터 Read 양 83% 절감, 수기 관리 탈피로 완성한 금융권 데이터 플랫폼 운영의 전사 표준

주요 정량적 성과

  • 83.1% 일일 데이터 Read 부하 절감 (25,147GB → 4,251GB)
  • 92% 쿼리 소유자 매칭률 달성 (담당자 역추적 시간 무한대 → 1시간 이내)
  • 1년간 발생한 70건+ 운영 티켓을 전부 코드 및 자동화 파이프라인으로 자산화

요약

토스뱅크는 은행업 특성상 외부 인터넷이 차단된 망분리·온프레미스 환경에서 시스템을 운영하며, 권한 부여부터 회수까지 전 과정을 증빙해야 하는 엄격한 금융 컴플라이언스를 준수합니다. 데이터플랫폼팀은 이런 제약 속에서 5,700개가 넘는 대시보드와 1,200건 이상의 추출 새로고침을 태블로로 운영해야 했는데, 클라우드를 쓸 수 없는 조건에서 수작업 중심의 운영 방식은 더 이상 지속 가능하지 않았습니다. 이에 운영 자동화, 데이터 리니지, 거버넌스 세 영역의 문제를 하나씩 코드로 풀어내며, 금융권에 최적화된 데이터 플랫폼 운영 표준을 세웠습니다.

회사 소개

토스뱅크는 모바일 금융 플랫폼 '토스(Toss)'를 운영하는 비바리퍼블리카가 설립한 대한민국 제3호 인터넷전문은행입니다. "수요자 중심의 새로운 은행"을 비전으로 2021년 10월 공식 출범했으며, 복잡하고 번거로운 기존 금융의 틀을 깨고 사용자가 중심이 되는 직관적이고 편리한 금융 환경을 데이터 기반으로 구축해 나가고 있습니다.

도전 과제 (The Challenge)

기억에 의존한 형상 관리, 조용히 실패하던 백업, 게이트 없는 클러스터
서버 3대의 설정을 바꿀 때마다 담당자가 손으로 하나씩 반복 적용했습니다. 설정 값은 문서가 아니라 사람의 기억에 남아 있어서, 장애가 나면 원인을 찾기가 쉽지 않았습니다. 백업도 마찬가지였습니다. 백업 스크립트는 서버마다 흩어져 있어 실패해도 알림이 오지 않았고, 사본은 한 곳에만 있어 사고가 나면 그대로 유실될 위험이 있었습니다. 여기에 월요일 오전처럼 대시보드 새로고침 요청이 한꺼번에 몰리는 순간 이를 막아줄 장치가 없어, 클러스터 전체가 멈추고 핵심 배치 작업까지 함께 밀리는 일이 반복됐습니다.

무거운 쿼리에 주인이 없다
클러스터를 흔드는 무거운 쿼리가 나와도, 그걸 누가 날렸는지 알 방법이 없었습니다. 태블로가 쿼리를 실행할 때 커스텀 SQL을 랩핑한 형태로 감싸 호출하다 보니, 로그에 남는 쿼리와 워크북에 저장된 쿼리가 서로 달라 보였기 때문입니다. 담당자를 역추적하는 데 걸리는 시간은 사실상 무한대였습니다. 

"이 테이블 지워도 되나요?"라는 흔한 질문에도 쉽게 답할 수 없었습니다. 원천 데이터베이스부터 대시보드까지 이어지는 파이프라인 중간에 태블로 내부 메타데이터가 비어 있었기 때문입니다.

승인은 났는데, 권한은 사람 손을 거쳐야 열렸다

결재가 끝나도 권한이 바로 열리지 않았습니다. 운영자가 직접 서버에 접속해 손으로 클릭해야 부여됐고, 라이선스는 엑셀 대장에 일일이 손으로 적었습니다. 회수는 아예 정해진 절차가 없어서, 감사 때마다 대장과 실제 서버 상태를 하나하나 대조해야 했습니다. 문제는 더 있었습니다. 넓게 풀려 있던 관리자 권한 때문에 권한 없는 사람이 대시보드를 열어보는 일이 생겼고, 워크북 담당자가 자리를 비우면 그 프로젝트의 관리 업무 자체가 멈춰버렸습니다.

저희는 은행이다 보니 망분리 환경이라 클라우드를 사용할 수 없습니다. 태블로 서버도 온프레미스에서 직접 구축하고 관리해야 하고, 파일 하나를 반입·반출하려 해도 정해진 절차를 거쳐야 합니다. 여기에 컴플라이언스 이슈까지 따라붙습니다. 누가 언제 어떤 권한을 받았고 언제 회수했는지 전부 증빙해야 합니다. 그래서 저희에게 자동화는 있으면 좋은 게 아니라 필수였습니다. 절차를 코드로 남기고, 증빙을 위해 수기 작업을 없애야 했습니다.

최우영
데이터플랫폼팀, 토스뱅크

솔루션 (The Solution)

코드 기반 형상 관리와 자원 격리로 운영을 표준화하다
설정 변경 작업을 코드로 옮겼습니다. Ansible로 작성한 작업 절차를 3대 서버에 한 번에 똑같이 적용하고, 모든 변경은 Git에 커밋해 리뷰와 검증을 거친 뒤에만 반영합니다. 백업도 사람이 아니라 시스템이 확인합니다. 매일 새벽 전체 백업을 만들어 별도 서버로 옮겨두고, 로컬 로그를 지우기 전에 '백업이 실제로 끝났는지'를 자동으로 검증합니다. 검증에 실패하면 로그를 지우는 대신 배치 자체를 실패시켜, 담당자가 곧바로 알아채게 만들었습니다. 어떤 워크북과 스케줄을 정리할지도 감이 아니라 매일 적재되는 조회 이력 데이터로 판단합니다. 

나아가 태블로 전용 쿼리 풀(Pool)을 분리하고 동시 실행 수를 제한(Admission Control)하여, 대시보드 새로고침이 폭주하더라도 클러스터 전체가 멈추거나 핵심 배치가 밀리지 않도록 자원을 격리했습니다.

정규화와 해시 매칭으로 끊긴 리니지를 다시 잇다
양쪽에 남는 쿼리 문자열을 똑같은 규칙으로 다듬었습니다. 불필요하게 감싸진 부분을 걷어내고 공백과 특수문자를 지운 뒤 고유한 해시(Hash) 값으로 변환하니, 서로 다르게 보이던 두 쿼리가 같은 값으로 맞춰졌습니다. 이 값을 기준으로 로그와 워크북을 연결하는 매칭 시스템을 만들었습니다. 추출이 5번 이상 연달아 실패하면 담당자에게 워크북 이름과 실패 원인을 자동으로 알리고, 별도 대시보드에서 전체 현황을 언제든 검색할 수 있게 했습니다. 

여기에 태블로가 제공하는 메타데이터 조회 기능으로 워크북과 데이터소스 정보를 가져와 실행 쿼리 분석 결과와 합치고, 원천 데이터베이스부터 최종 대시보드까지 한 번에 이어지는 리니지 지도를 완성했습니다.

권한을 자동 파이프라인과 그룹 단위로 재설계하다
권한 신청부터 승인, 부여까지를 하나의 파이프라인으로 연결했습니다. 결재가 끝나면 시스템이 곧바로 권한을 반영하고, 그 기록을 이력 DB에 자동으로 남깁니다. 회수도 사람이 아니라 시스템이 합니다. 퇴사자나 오래 쓰지 않은 계정을 주기적으로 찾아내 권한을 자동으로 거둡니다. 

넓게 풀려 있던 관리자 권한도 정리했습니다. 서비스 계정 하나만 남기고 나머지 관리자 권한을 전부 회수했고, 흩어져 있던 사이트를 하나로 합쳤으며, 프로젝트 접근은 개인이 아니라 그룹 단위로만 열어주도록 바꿨습니다. 워크북 담당자가 자리를 비워도 업무가 멈추지 않도록, 소유자가 아니더라도 프로젝트를 관리할 수 있는 프로젝트 리더(PL) 권한 셀프서비스 메뉴도 새로 만들었습니다.

태블로의 차별점 (The Tableau Difference)

온프레미스로 완전히 운용 가능하기에, 망분리 규제 안에서도 전사 표준이 될 수 있었다
토스뱅크에게 태블로의 가치는 단순히 시각화 기능이 아니라, 클라우드 없이도 은행권 망분리·컴플라이언스 요건을 그대로 만족시키며 5,700개 이상의 대시보드를 전사 표준 플랫폼으로 운용할 수 있었다는 데 있습니다. 특히 태블로 서버가 제공하는 Metadata API(GraphQL)와 메타 DB(PostgreSQL 저장소)는 별도의 무거운 개발 없이도 리니지 그래프 구축과 Extract Refresh Monitor 같은 운영 도구를 그 위에 쌓아 올릴 수 있는 확장 지점이 되어 주었습니다. 태블로 자체가 폐쇄망 안에서 안정적으로 돌아가는 기반이었기에, 그 위에 Ansible·Airflow·OpenMetadata를 결합한 운영 자동화 체계를 온전히 사내에서 완성할 수 있었습니다.

성과 (The Results)

1년 동안 토스뱅크 데이터플랫폼팀은 사람의 기억과 수작업에 의존하던 운영을, 코드와 파이프라인과 이력 DB로 남는 체계로 바꿔냈습니다. 그 결과 클러스터 안정성과 인프라 부하, 쿼리 추적 속도, 감사 대응까지 운영의 기본값 자체가 달라졌습니다.

  • 헤비 쿼리 마트화·스케줄 조정으로 일일 데이터 Read량 83.1% 절감(25,147GB → 4,251GB), 새벽 시간대(00~07시) 추출 새로고침 879건을 0건으로 전면 제거
  • 조회 이력 기반 정리로 추출 실패 건수를 일평균 12.7건에서 3.5건으로 72% 감소
  • SHA-256 해시 매칭으로 커스텀 SQL 매칭률 92% 달성, 무거운 쿼리 소유자 추적 시간을 무한대에서 1시간 이내로 단축
  • 권한 부여·회수 전 과정이 자동으로 이력 DB에 누적되어, 별도 수기 정리 없이 쿼리 한 번으로 금융 감사 증빙 완결
  • 1년간 70건 이상의 운영 티켓을 처리하며 발생한 모든 변경 사항을 코드와 파이프라인으로 자산화