태블로 서버 가이드: 아키텍처와 핵심 프로세스
태블로 서버(Tableau Server)를 운영하다 보면 대시보드 로딩 속도가 느려지거나, 특정 노드에서 추출 새로 고침이 실패하는 등 다양한 기술적 문제에 직면하게 됩니다. 이러한 문제를 직관이 아닌 논리로 해결하기 위해서는 태블로 서버가 내부적으로 어떻게 작동하는지, 즉 아키텍처(Architecture)를 정확히 이해하는 것이 필수적입니다.
이번 글에서는 태블로 서버를 지탱하는 9가지 핵심 프로세스의 역할과 상호작용 원리를 상세히 알아보겠습니다.
태블로 서버 아키텍처 개요
태블로 서버는 겉으로 보기에는 하나의 단일 프로그램처럼 보이지만, 실제로는 다양한 역할을 수행하는 여러 프로세스(Process)들이 유기적으로 연결된 분산 시스템입니다.
사용자가 웹 브라우저나 태블로 데스크탑을 통해 서버에 요청을 보내면, 이 요청은 가장 먼저 서버의 문지기인 게이트웨이를 통과합니다. 이후 요청의 성격(로그인, 대시보드 조회, 데이터 추출 등)에 따라 적절한 내부 프로세스로 전달되어 처리됩니다.
이러한 구조 덕분에 태블로 서버는 단일 컴퓨터(노드)에 설치할 수도 있고, 사용자가 많아지면 여러 컴퓨터에 프로세스를 나누어 배치하는 클러스터(Cluster) 형태로 확장하여 부하를 분산할 수도 있습니다. 즉, 아키텍처를 이해한다는 것은 이 데이터의 흐름과 각 프로세스의 역할을 파악하는 것을 의미합니다.
1. 게이트웨이 (Gateway)
모든 요청의 시작점입니다.
- 역할: 클라이언트(브라우저, 데스크탑 등)의 요청을 받아 적절한 내부 프로세스로 라우팅(Routing)하고 로드 밸런싱을 수행합니다.
- 특징: Apache HTTP Server를 기반으로 하며, 이미지나 CSS 같은 정적 파일은 내부 프로세스를 거치지 않고 직접 처리합니다.
2. 애플리케이션 서버 (Application Server)
사용자가 웹 포털(VizPortal)에서 경험하는 대부분의 인터페이스를 담당합니다.
- 역할: 로그인(인증) 및 권한 부여를 처리하고, 콘텐츠 탐색 및 검색을 위한 웹 UI를 렌더링합니다.
- 특징: REST API 요청을 처리하며, 평소 리소스 사용량은 낮지만 API 호출이 빈번한 환경에서는 부하가 발생할 수 있습니다.
3. 검색 및 찾아보기 (Search & Browse)
서버 내 콘텐츠 검색을 담당하는 숨은 조력자입니다.
- 역할: 사용자가 프로젝트나 워크북을 검색할 때 필요한 검색 인덱스를 제공합니다.
- 특징: Apache Solr 기술을 기반으로 하며, 리포지토리의 메타데이터를 인덱싱하여 빠른 검색을 지원합니다.
4. VizQL Server
태블로 기술의 심장이자 시각화 엔진입니다.
- 역할: 사용자의 드래그 앤 드롭 동작(시각적 요청)을 SQL 쿼리로 변환하고, 데이터베이스에서 가져온 결과를 다시 그래프 형태로 렌더링합니다.
- 성능: 대시보드 로딩 속도에 가장 큰 영향을 미치며, CPU와 메모리를 많이 사용하는 프로세스입니다.
5. 캐시 서버 (Cache Server)
서버 성능 최적화를 위한 공유 메모리 저장소입니다.
- 역할: VizQL Server, Backgrounder, Data Server 등 여러 프로세스 간에 쿼리 결과를 공유하여 중복 연산을 방지합니다.
- 특징: Redis(인메모리 데이터 저장소)를 기반으로 하며, 적절히 구성할 경우 대시보드 응답 속도를 획기적으로 개선할 수 있습니다.
6. 데이터 서버 (Data Server)
태블로의 강력한 데이터 거버넌스를 담당하는 프록시(Proxy)입니다.
- 역할: 클라이언트의 쿼리를 실제 데이터베이스로 전달하고, 데이터 소스에 대한 중앙 집중식 권한 관리를 수행합니다.
- 장점: 게시된 데이터 소스(Published Data Source)를 통해 여러 워크북이 하나의 데이터 연결을 공유할 수 있게 하여 DB 부하를 줄여줍니다.
7. 데이터 엔진 (Data Engine) & 파일 저장소 (File Store)
고성능 데이터 처리를 위한 듀오입니다.
- 데이터 엔진: 'Hyper' 기술을 기반으로 추출(Extract) 파일을 생성하고 조회합니다. CPU와 메모리 자원을 최대로 활용하여 고성능을 냅니다.
- 파일 저장소: 노드 간에 추출 파일(.hyper)을 자동으로 복제(Replication)하여, 어떤 노드에서도 데이터에 접근할 수 있도록 동기화합니다.
8. 백그라운더 (Backgrounder)
사용자가 보지 않는 곳에서 작동하는 스케줄러입니다.
- 역할: 추출 새로 고침(Extract Refreshes), 구독 이메일 전송, 알림 발송 등 예약된 작업을 처리합니다.
- 운영 팁: CPU를 매우 많이 사용하는 작업이므로, 안정적인 운영을 위해 VizQL(시각화) 노드와 분리하여 독립된 노드에 배치하는 것을 권장합니다.
9. 리포지토리 (Repository)
서버의 모든 메타데이터가 저장되는 곳입니다.
- 역할: 사용자 정보, 그룹, 권한, 콘텐츠 위치 등 서버 운영에 필요한 모든 데이터를 저장합니다.
- 특징: PostgreSQL 데이터베이스를 기반으로 합니다.
태블로 서버의 각 프로세스 역할을 명확히 이해하는 것은 장애 대응과 성능 튜닝의 기본입니다. 다음 포스팅에서는 이 지식을 바탕으로 '성능 최적화와 튜닝'에 대해 다뤄보겠습니다.