우리 회사 데이터베이스를 티베로로 변경하기
티베로 리플레이 구조 0 0 84,904

by 티베로 티베로 리플레이 Database Action Replay [2017.04.09]


소속 회사 POC 과정 중에 사용했던 ‘SQL 자동 재현’ 방식은 1개 업무에 대해 훌륭히 그 역할을 수행하였지만 전체 업무를 재현하기에는 여러 가지 한계가 존재함을 앞장에서 소개하였다.

그리고 티맥스는 그 한계를 넘어선 소속 회사의 전체 업무를 재현할 수 있는 솔루션 ‘티베로 리플레이’를 3개월 만에 개발완료하여 전환 프로젝트에 선보였다. 제조사가 상이한 데이터베이스에서 수행되는 모든 SQL을 어떻게 ‘저장’하고 티베로 데이터베이스에 ‘재현’할 수 있는 것일까?

리플레이의 핵심은 와스서버가 데이터베이스와 통신할 수 있도록 인터페이스 역할을 수행하는 JDBC 드라이버(소속 회사는 90% 이상의 업무에 JDBC를 사용한다)를 이용하는데 있다.

JDBC 드라이버는 와스서버가 요청한 SQL들이 데이터베이스까지 이동할 때 이용하는 일종의 교통 인프라(도로, 다리 등) 역할을 수행하므로 이곳을 통해 지나 다니는 모든 SQL들을 빠르게 복사하여 마치 포장(wrapping)하듯이 정해진 공간에 ‘저장’(jwl(JDBC Wrapper Log) 파일)하는 기능을 리플레이의 JDBC Wrapper 드라이버가 제공한다.

즉, JDBC Wrapper 드라이버를 기존 JDBC 드라이버가 존재하는 경로에 저장하고 JDBC 설정 파일만 일부 수정하면 원하는 시간동안 수행된 모든 SQL을 정해진 경로에 손쉽게 파일 형태로 저장할 수 있다.

한편, jwl 파일을 생성할 때는 운영 중인 와스서버에 가해지는 부하를 최소화하기위해 별도의 정리 작업 없이 있는 그대로 SQL 및 관련 정보들을 저장하게 되는데, 리플레이 ‘재현’을 담당하는 플레이어(Player)는 원활한 재현을 위해 jwl 파일에 저장된 로그를 순서와 세션별로 최대한 정리하고 정렬한 뒤 별도의 rpf(Replay PlanFile) 파일을 만들고 해당 플랜에 따라서 티베로에 부하를 재현하게 된다.

리플레이의 주요 특징을 요약해보면 다음과 같다.

  • 1. 리플레이는 ‘저장’을 담당하는 JDBC Wrapper 드라이버와 ‘재현’을 담당하는 플레이어로 구성된다.
  • 2. SQL 저장 시 JDBC Wrapper 드라이버를 사용하므로 운영 중인 데이터베이스에 가해지는 부하를 최소화할 수 있다.
  • 3. JDBC Wrapper 드라이버는 별도의 작업 없이 있는 그대로 jwl 파일에 SQL 로그를 저장하므로 운영 중인 와스서버에 가해지는 부하 또한 최소화할 수 있다.
  • 4. 재현을 통해 밝혀진 문제가 되는 SQL을 rpf 파일에 직접 수정(튜닝)하고 다시 재현할 수 있는 기능을 옵션으로 제공한다(해당 옵션이 존재하지 않는다면 운영 중인 어플리케이션에서 SQL을 수정하여 반영하고 다시 리플레이를 통해 저장해야 재현이 가능하다).

note : 본 내용은 전환 프로젝트를 위해 개발된 리플레이를 바탕으로 작성되었으므로 제품화된 리플레이의 구조와 기능과는 다소 상이할 수 있음을 참고하기 바란다.

  • [그림 2-7] 리플레이 구조 전체
  • 리플레이 구조 전체

  • [그림 2-8] 리플레이 구조- SQL 저장
  • 리플레이 구조 - SQL 저장

  • 참고1) 어플리케이션에 의해 수행되는 SQL에 대해서 각 Datasource class 별로 jwl 파일이 생성된다.
  • 참고2) Transaction begin/commit/rollback 호출 및 종료 시점, SQL, SQL의 수행 시작/종료 시점 등의 정보가 파일에 기록된다.

  • [그림 2-9] 리플레이 구조- SQL 재현
  • 리플레이 구조 - SQL 재현

  • 참고3) 플레이어는 재현 대상 세션 수 및 SQL 목록을 결정한 후 플랜 파일을 생성한다. 이후 세션 별로 매핑된 스레드(Thread)를 생성하며 앞서 만든 세션별 SQL 목록을 기반으로 재현을 수행한다.

  • - 해당 강좌는 도서 " [우리 회사 데이터베이스를 티베로로 변경하기]"의 내용을 옮겼습니다.
  • - 해당 도서는 기간계 DBMS(DATABASE MANAGEMENT SYSTEM)를 티베로로 전환하는 실제 프로젝트를 수행한 실무자가 DBMS 전환 과정과 실제 적용 사례, 문제 해결 과정 등을 자세하게 설명하고 있습니다.

- 강좌 URL : http://www.gurubee.net/lecture/2972

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입