ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 토스 slash23 데이터 세션 정리
    Review/IT 2023. 7. 1. 08:20

    은행 데이터플랫폼 오픈소스로 전환하기

    기존 정보계 시스템의 문제점

    • 토스뱅크는 초기에 타은행 시스템 구조를 그대로 따와서 구축이 되었고, 타 은행들과 동일하게 계정계, 채널계, 정보계 세가지 영역으로 구성됨
    • mysql뿐만 아니라 MongoDB같은 NoSQL도 하둡으로 보내 분석에 활용하고 있다
    • 보고서를 위해서 이런 데이터들을 오라클엑사로 다시 보내야하는 문제가 있어서 불필요한 데이터 이동이 생김
    • 오라클 엑사의 비용이 하둡에 비해 10배나 높았으므로 하둡으로 시스템을 통합하려는 목표

    기존에 잘 돌고 있는 정보계 시스템을 옮기는 방법

    • Concern & Challenge
      1. 기존에 잘 돌고 있는 것을 무엇으로, 어떻게 대체할 것인가
      2. 기존 시스템과 동일한 값임을 어떻게 보장할 것인가
      3. 이미 구축한 상황에서 옮기는데 드는 비용이 더 클 것같다

    • 토스뱅크에서는 쿠버네티스에서 대부분 환경이 구성되어있기 때문에 스케일링이 쉬움

    • 대부분의 DW에서는 PK만 지원되도 무방하므로 스토리지 부분에서는 HDFS와 KUDU를 조합해서 오라클엑사를 대체

    • 시중에 나와있는 솔루션들은 db에 부하를 적게주기 위해서 파일베이스 기반으로 읽음

    • xStream API가 Dictionary Building 및 Logmining Session Spawn으로 Live 환경에서는 Throughput이 약 20배 이상까지도 차이가 난다

    • 에어플로우를 사용하여 공통 DB를 통해 이기종간 태스크 선행조건을 확인했다.→1번문제 해결
    • 오라클에서 공통마트를 가져와 하둡에서 정합성을 검증하는 정합성 batch를 돌려서 주기적으로 돌림→정합성 batch를 1~2주간 확인하면서 틀리지 않는걸 확인하면 다시 하둡데이터를 오라클로 이관
    • 처음에는 임팔라로 이관하는 방법을 생각, 하지만 임팔라는 암시적 형 변환이 지원되지 않아서 숫자형 변수를 하려면 dicimal로 꼭 캐스팅을 해줘야함. 그래서 많은 쿼리에 캐스트를 해줘야했고 몇 지원안되는 함수 때문에 마이그레이션 비용이 컸음
    • 반면 스파크는 암시적 형 변환이 지원되고 오라클 문법 대부분 지원됨(단, Merge Into는 delta Lake, Hudi, IceBerg와 같은 스토리지 필요→100개 넘는 배치 프로그램 바꾸는데 1명의 개발자가 1달도 안걸리는 등 임팔라 대비 비용 축소

    • 토스뱅크에서는 GoCD를 통해서 제3자검증, 서비스/배포 책임자 검증, 배포 이력 관리를 하고 있다

    앞으로 방향성

    1. 차세대 DW 시스템(후디, 아이스버그 등)
    2. CDC 시스템 고도화(noSQL CDC 구축 예정)
    3. 스쿱을 대체할 Nifi 도입 준비

    Kafka 이중화로 다양한 장애 상황 완벽 대처하기

    토스증권에서 카프카가 어떻게 활용되는지

    • 사용자에게 실시간으로 제공하는 거래소정보, 로그, 분석 등에 카프카를 활용하고 있음
    • 카프카 자체가 가용적으로 디자인된 아키텍처이고 모니터링으로 대응 프로세스를 통해 클러스터의 일부 노드 장애는 극복이 가능하지만 IDC 전면 장애의 경우에는 IDC 이중화가 안되어 있다면 치명적임
      • 증권사는 IDC 장애에 대응하도록 메인 IDC와 떨어진 IDC에 DR(Disaster REcovery)를 구축해야함
    • DR은 보통 Active-Standby로 구성함 Standby가 장애시 Active로 전환
      • 하지만 장애 상황이 발생했음에도 Standby를 잘 관리해주지 않으면 버전문제나 장애가 해결이 안되는 경우가 발생하기 때문에 토스증권에서는 평소에도 Active-Active로 이중화 구성해서 사용중

    • 카프카의 STATE의 일관성을 어떻게 유지할지 고민해보고 이중화를 구성하는 것이 포인트

    • 이중화를 통해 양쪽 IDC로 유저의 트래픽이 각 50%씩 나눠 가지고 있음
    • 특이한 건 한쪽 IDC만 컨슈머가 존재함→메세지 미러링을 통해서 전체 합치면 메세지양이 200%가 되기때문에 컨슈머가 양쪽에 붙으면 두 배 중복해서 소비하는 상황을 방지하기 위해서

    모니터링

    • 클러스터에 발생하는 메트릭 정보를 프로메테우스로 수집하고 타노스 룰러를 이용해서 정의한 조건이 충족되면 알림을 주는 방식으로 모니터링 구현
    • 클러스터 로그는 엘라스틱서치를 통해 에러 로그 발생을 엘라스틱얼럿으로 받고있다
    • 현재 시계열 데이터의 이상 징후를 탐지하는 머신러닝 모델도 개발하고 있음

    대규모 로그 처리도 OK! Elasticsearch 클러스터 개선기

    • 토스증권에서는 하루 수십억건 로그를 엘라스틱서치로 검색하고 분석하고있음
      • 일일 6TB, 약53억 건
      • 90일 리텐션 570TB, 4800억 건
    • 거의 대부분 로그 검색과 분석은 최근 보름 이내의 로그를 대상으로 하기에 Hot-Warm 아키텍처로 도입해서 운영하기로 함→Hot Node보다 3배 더 큰 디스크를 가진 Warm Node를 구성 후 생성된 지 오래된 인덱스는 Warm 이동하도록 인덱스 생명주기 관리 정책을 구성함, 90일 리텐션 설정

    엘라스틱 서치 튜닝

    • 점점 적재되는 양이 많아지면서 클러스터 내부 오류가 잦아짐
      • 매무 많은 Fielddate 메모리 사용
      • 빈번한 Long GC 발생
      • Stop the World
      • 인덱스 맵핑에서 일부 필드 설정에 필드데이터 옵션을 잘못 사용한 경우
      • mapping Explosion
        • 입력으로 들어오는 json key가 많으면 동적으로 스키마를 업데이트하는 과정에서 리소스를 많이 사용해 클러스가 불안정해짐
        • 따라서 동적 필드 매핑을 사용하지 말고 구조화되지 않은 문자열이 들어가는 필드는 text타입, 그 외에는 keyword, numeric등으로 맵핑되도록 하는 것이 중요

    • 엘라스틱서치가 불안정해지면 맨먼저 인덱스 맵핑을 봐주는 것이 좋다 그 다음으로 샤드를 살펴봐야한다
    • 프라이머리 샤드를 더 늘린다면 샤드가 특정Node에 쏠리지 않게 샤드의 수를 Hot 노드의 배수로 설정하는게 좋음

    로그스태시에서 벡터로 전환

    • 로그스태시는 JVM기반으로 시스템 자원을 많이 사용함, 파이프라인이 늘어나면 날수록 메모리를 많이 사용하게됨→경량화 필요
      • vector
      • fluentd

    • 다양한 유즈케이스가 있는 fluentd지만 로그 가공이 로그스태시나 벡터에 비해 불편하다는 판단에서 최근 급성장하고 있는 vector로 선택
      • 벡터는 로그스테시처럼 코드로 유연하게 작성할 수 있다는 강점
      • 공식 홈페이지의 메뉴얼이 잘되어있음
      • 프로메테우스로 로그파이프라인 모니터링을 쉽게 구현 가능
      • 최근 급격히 관심을 받으며 스타수로 플루언트디를 넘어섬

    데이터센터 확장

    • 각 IDC마다 클러스터를 복제해서 사용한다는 것은 비용이 크게 증가함에 따라서 IDC 간에 하나의 클러스터를 구축할 수 있는 방법에 대해서 고민
    • 노드들이 빈번하게 통신하는데 데이터 센터 간의 네트워크 레이턴시가 높으면 클러스터 전체적으로 성능저하가 발생해 엘라스틱 서치에서는 권장하지 않음
    • 가까운 IDC간의 레이턴시 정도면 조금의 지연보다 비용절감으로 오는 효과가 더 크다는 판단

    느낀점

    • 카카오 사태를 반명교사 삼아 DR에 대해 대처하기 위해서 많은 준비를 한 것 같다. 꼭 그 사태때문만이 아니라 원래부터 증권이나 뱅크쪽은 DR에 대해 더 다른 도메인보다 중요하긴 하지만….
    • 왜 다른 오픈소스가 아니라 이 오픈소스여야하는지 이유를 들어 설명하는 부분이 좋았다. 어떤 트레이드오프 때문에 선택했는 지를 각자의 회사마다 개인마다 다르기 때문에 지금 어떤 것이 가장 최우선인지 중요한 가치가 무엇인지에 더 집중해야겠다.

    댓글

Copyright 2023. 은유 All rights reserved.