SQL서버를 데브옵스에 실제 구현 내용을 간결한 발표자료를 통해 설명하는 비디오(20분) 입니다.

이 내용은 액티피오의 고객인 뉴질랜드의 SaaS 클라우드 업체인 3C Port Trade가 직접 설명합니다.


(안녕하세요. 액티피오의 APAC 필드 CTO인 안토니 밴드워트입니다. 오늘은 액티피오 뉴질랜드 팀의 코살라와 APAC 이사인 조 하슬 그리고 3C Port Trade 에서 온 특별 손님인 가레트 페리와 함께 합니다.)

(가레트, 당신의 사례를 직접 들려주시겠어요?) 고마워요 안토니.

안녕하세요. C3 Post Trade의 가레트입니다. C3 Post Trade는 금융 관련 여러 SaaS 클라우드 서비스를 제공하는 회사입니다.  우리는 전세계에서 모이는 대용량 데이터를 처리하고 있으며, 최근 데이터 보호, 관리, SQL 서버 자원 자동화를 실현했습니다.

지금부터, 우리의 여정과 액티피오의 역할에 대해 이야기하겠습니다.
3가지 핵심 영역별로 알아봅니다. (1)SQL서버 가용 그룹의 운영 환경에 대한 보호와 복구, (2)테스트 환경에 데이터 제공하기, (3)데브옵스 파이프라인 상에서 개발자의 경험입니다.

(1) SQL서버 가용 그룹의 운영 환경에 대한 보호와 복구
SQL 서버 운영 현황: 운영 환경에 SQL 서버 가용 그룹이 하나 있고, 여기에서 데이터베이스 25개와 총 3TB 데이터를 다루고 있습니다. 회복력을 위해 지구 반대편 2곳에 2개의 데이터 센터를 두고 있습니다. (데이터베이스들의 가용성과 회복력이 크리티컬한 요소임)

보호/복구 요구사항: (이 데이터베이스들은 우리에게 매우 크리티컬하므로) 솔루션 전체가 견고할 것, 접근과 데이터의 보안성이 확보될 것, 특정 시점으로 데이터 복구가 가능할 것, 데이터 자산 백업을 (각 단계와 로그 등) 구조적으로 관리할 수 있을 것, 보존 정책이 유연해서 지난 달의 어느 시점으로도 복구가 가능할 것 등입니다.

우리가 실현한 해법: 우리의 SQL 서버 가용 그룹은 A센터와 B센터 2곳에 있습니다. 데이터베이스 25개, 총 3TB 데이터가 A센터 안의 주 서버에 있습니다. 이 주 서버는 같은 A센터 안의 보조 서버와 동기화로, B센터의 보조서버와는 비동기로 연결되어 있습니다. SQL 서버 가용 그룹은 장애 시 대체(Fail Over)를 즉시 실현합니다. 장비 하나 또는, 센터 한곳에 문제가 생겨도 서비스는 지속됩니다.

보호와 복구 면에서 액티피오의 역할:
A센터에 설치된 Sky 어플라이언스가 A센터의 보조 서버를 증분 백업 합니다.
B센터에 설치된 두번째 Sky는 액티피오 스트림스냅(Actifio Stream Snap) 복제를 통해 A센터에서 확보된 증분 백업을 B센터로 끊임없이 복제합니다. 그 결과 양쪽 모두 같은 데이터 이력을 확보하게 됩니다.

복구 시나리오: 만약 데이터 손실이 발생하면 운영 데이터베이스를 이전의 특정 시점으로 복구해야 합니다. 다들 알다시피, 어느 시점으로 되돌릴 것인지를 결정하는 것이 가장 어렵습니다. 특히 RTO(복구 완료까지 걸리는 총 소요 시간 목표) 이내에 복구를 완료하려면 빠르게 판단할 수 있어야 합니다.

우리는 액티피오를 통해 각 시점 별 복제본 여러개를 동시에 신속하게 마운트할 수 있습니다. 예를 들어 10:45, 10:50, 10:55 시점 버전을 동시에 마운트해 놓고 데이터를 점검합니다. 그 결과, 예를 들어 10:50 시점의 데이터로 되돌리기로 결정이 되면, 여러 어플라이언스들을 관리/조율하는 도구인 액티피오 AGM(Actifio Global Manager)을 사용하여 10:50 시점의 데이터베이스를 모든 데이터센터의 모든 노드에 동시에 반영합니다.

동시 반영이 완료되면, 주 데이터베이스에서 서비스를 다시 시작합니다. 보조 서버 등 SQL 서버 가용 그룹의 모든 노드가 이미 동기화 되어 있는 상태이므로, 주 서버의 서비스 재개와 가용 그룹 내 모든 연결 모두가 거의 즉시 실현됩니다.

이 조치와 별개로 액티피오가 해당 복제본을 아예 운영 환경의 주 스토리지로도 복제해주면 좋겠다는 생각을 할텐데, 액티피오는 마운트 무브 (Mountain Move)라는 새 기능이 있어서, 데이터베이스들을 바로 기동하고 나서, 백그라운드로 데이터 복제할 수 있다고 합니다. 멋진 기능입니다. 새 마운트 무브 기술을 우리 환경에 반영하는 것에도 현재 관심이 있습니다.

데이터 보호 측면에서 주요 성공 포인트: 액티피오는 SQL서버에서 네이티브 방식으로 영구 증분 (incremental forever) 백업을 수행하기 때문에 변칙 등 군더더기없으며, 그대로 증분 백업을 지속합니다. 복제 스트림이 매우 견고하다는 점은 널리 증명되었습니다. 우리의 경우  지구 반대편까지 가끔 연결 이슈가 있지만, 이 모든 것을 자동 관리합니다. 액티피오가 보호하는 데이터는 권한이 있는 사용자 계정이 있어야만 접근할 수 있고 마운트, 복제 등 모든 요청자와 작업은 감사(Audit)할 수 있습니다.

액피티오가 모든 백업을 관리합니다. 백업 관리는 실제로 변경 블럭과 해당 변경 시점을 기반으로 합니다. 따라서 불일치를 염려할 필요가 전혀 없습니다.

서로 다른 여러 시점의 데이터를 동시에 쉽고 빠르게 검토할 수 있을 것이라고는 생각조차 못했었습니다. 지금은 우리에게 정말이지 크게 도움됩니다. 이 모든 것을 통해 우리는 액티피오가 보호하는 SQL 서버들에 대해 RPO와 RTO 준수 자신감이 한층 더 높아졌습니다.

(2) 테스트 환경에 데이터 제공하기
테스트 환경 현황: 우리는 최신 데이터가 반영된 전체 데이터베이스를 대상으로 테스트하는 환경 여러개를 동시에 운영합니다. 모든 운영 환경의 전체 데이터베이스를 테스트 환경에 반영하는 작업은 매일 또는 하루에도 몇번씩 진행합니다.

데브옵스(DevOps) 면에서 우리가 원했던 요구사항: 운영계의 대용량 데이터를 최신 그대로 데브옵스에 제공할 것, 운영 환경 그룹과 똑같은 가용성 수준으로 복제 할 것, 복구는 30분 이내에 완료될 것, 데이터베이스들의 성능 역시 운영 환경과 같을 것, 테스트 환경 여러개를 동시에 지원할 수 있도록 솔루션의 확장성이 높을 것, 성능에 부담을 주지 않으면서 특정 시점의 환경을 동시에 여러곳에 제공할 것 등입니다.

데브옵스 테스트 DB 구성: 운영 환경을 다시 소개하면, 두 개의 데이터 센터가 SQL 서버 가용 그룹으로 묶여있고, A센터와 B센터 각각 액티피오 Sky가 있고, 서로 스트림 스냅으로 연결되어 있습니다. 그리고 여기에 많은 서버와 서비스들이 웹서비스, 메시지 브로커, UI 등등을 위해 있고 SQL 서버들도 데이터 센터에 걸쳐 퍼져있어서, 환경 자체는 상당히 복잡합니다.

그래서, 배포 절차는 Octopus Deploy라는 솔루션이 지휘합니다. Octopus Deploy는 먼저 환경 구축부터 시작합니다. 이때 액티피오 Sky가 2개 데이터센터 모두를 조율하여 모든 SQL 서버 노드들이 같은 시점의 상태에 맞춰지도록  SQL 서버 가용 그룹을 동기화 하고 마스킹 처리를 시작시킵니다. 데이터 마스킹까지 완료되면 Octopus Deploy는 운영 배포와 같은 방식으로 테스트 배포를 진행합니다. 이 전체 절차는 여러 테스트 환경 모두에도 그대로 복제됩니다.

테스트 데이터 제공 측면에서 주요 성공 포인트: 데이터 자산 관리가 간편해졌습니다. 전통적인 방식으로 데이터베이스를 복구하려면 통제가 매우 어렵습니다. 풀백업 복구 후 다시 각 차등 백업을 복구하고 다시 로그를 반영하는 작업을 데이터센터 2곳에 있는 모든 데이터베이스에서 수행해야 했었는데, 이제는 액티피오가 알아서 하므로 아무것도 신경쓰지 않고 그저 특정 시점 복구를 시작하기만 하면 됩니다.

복구 소요 시간은 기존 방식으로 SQL 서버 가용 그룹, 즉 데이터 센터 2곳과 모든 노드를 복구하는데 5시간이 걸렸었습니다. 액티피오는 15분만에 모두 완료합니다. 게다가 (필요하다면) 복구되는 데이터는 적어도 20분 이전인 최신 운영 환경의 실제 데이터입니다.

디스크 사용 측면에서 전통적인 방식으로 이 모든 환경을 지원할 때에는 총 36TB가 필요했습니다. 액티피오 Sky는 4TB만으로 이 모든 처리를 합니다. 믿기 힘들었지만 실제로 그렇습니다.

(3) 데브옵스 파이프라인 상에서 개발자의 경험
데브옵스(DevOps) 환경과 지속적 통합(CI, Continuous Integration) 파이프라인 상에서 개발자 경험 환경:  우리는 기능을 브랜치로 나누는 방법을 사용합니다. 많은 기능들이 종종 반복 개발 방식으로 진행됩니다. CI 파이프라인은 깃랩(GitLab)과 팀시티(Team City)를 사용합니다. 그 결과, 깃(Git) 저장소에 커밋된 것을 바탕으로 빌드와 패키징과 수천가지 단위 시나리오 통합 테스트를 자동화합니다. 또한 실제 운영 환경과 같은 수준으로 부하를 주는 성능 테스트와 업그레이드 시뮬레이션을 실시합니다.

데브 옵스 면에서 우리의 요구사항: 운영 환경의 실 데이터 전체를 다루고 검증할 수 있을 것,  CI 파이프라인 수행을 빈번하게 할 수 있을 것, 운영 데이터 전체 (3TB)를 CI 파이프라인에 반영하는데 걸리는 시간은 5분 이내일 것, 데이터베이스를 개발자 수십명과 에이전트 서버에게 제공할 수 있을 정도로 확장성이 있을 것, (무엇보다 중요한 것은) 마스킹된 특정 시점의 운영 환경의 데이터를 개발자가 간편히 마운트 할 수 있을 것, 우리의 다른 파이프라인처럼 데이터베이스 파이프라인 역시 API를 통한 자동화를 지원하여 안정성과 일관성을 보장할 수 있을 것 등입니다.

실제 워크플로우 1: 개발자가 기능 브랜치을 하나 열고 작업을 합니다. 코드를 변경을 마치고 저장소에 넣을 상태가 되면 Git에 밀어넣기(Push)를 합니다. TeamCity는 변경 사항을 식별하여 에이전트에 작업 내용을 전달합니다. (참고로, TeamCity는 빌드 관리와 지속적 통합을 위한 서버입니다.) 에이전트는 작업을 선택하고 Git에서 해당 기능 브랜치 가져오기(Pull)를 합니다. 그리고 나서 코드 빌드를 시작합니다. 빌드가 성공하면 이 파이프라인은 데이터베이스 테스트 단계로 넘어갑니다. 액티피오에 있는 라이브 복제본 (Live Clone)으로부터 마스킹된 운영 데이터를 제공받기 위해 에이전트는 액티피오 API를 호출합니다. 액티피오 라이브 클론은 사전 검증이 완료되어 어느 서버로도 즉시 마운트 될 준비가 된 데이터베이스 세트를 생성하여 제공합니다.

액티피오가 해당 에이전트로 데이터베이스를 직접 마운트하여 환경이 준비되고 나면, 배포 절차가 진행됩니다. 배포와 데이터베이스 업데이트 스크립트를 실행합니다. 데이터베이스 변경(업데이트 )작업은 종종 복잡하지만, 우리는 해당 기능 브렌치의 모든 패키지의 업데이트 스크립트 전체가 실제 운영 환경에서도 성공적으로 실행된다는 것을 확신할 수 있어야 합니다. 해당 업데이트 스크립트들이 모두 성공적으로 실행되면, 이 파이프라인은 성능 테스트 단계로 들어갑니다. 서비스 액션이 사전 정의된 기준에 부합하는지를 확인하고 테스트합니다. 기대 수준을 벗어나는 것은 빠짐없이 표시되므로 실제와 같은 데이터를 통해 파악된 성능 이슈를 모두 식별할 수 있습니다. 개발 중이라도, 테스트 결과는 TeamCity를 통해 해당 개발자에게 전달됩니다. 모든 것이 잘 되었다면, 녹색불이 표시되고 모두가 만족하게됩니다.

실제 워크플로우 2: 우리 개발자들은 마스킹된 운영 환경의 데이터를 대상으로 분석할 필요가 있습니다. 개발자가 이런 데이터에 접근하기는 매우 힘든 경우가 많습니다. 기능 브랜치에 변경 작업을 하고 난 후 유효한 상태의 데이터를 확보하기는 특히 더 어렵습니다. 하지만, 액티피오를 통해 자동화를 구현해 놓아서 이제는 간단한 작업이 되었습니다.

개발자는 CI 파이프라인 절차와 유사한 방식이 진행되어 마스킹된 데이터가 제공될 수 있도록 액티피오를 호출합니다. 그러면 액티피오는 해당 데이터를 마운트하여 개발자가 바로 사용할 수 있도록 해줍니다. 개발자가 필요한 디버깅이나 분석 작업을 완료하고 코드를 변경한 후에 다시 데이터를 직접 마운트하여 업데이트 스크립트를 실행해 봅니다.  CI 파이프라인을 모두 통과하는 지 즉 실제 배포에서 성공할 것인지를 확인할 수 있습니다. 확인 결과 성공이면 개발자는 변경 사항을 Git에 밀어넣습니다. 그러면 CI 파이프라인이 다시 시작되고 그 결과가 개발자에게 전달됩니다.

개발자는 필요할 때마다 기능 브랜치를 바꿔서 코드를 개발 환경에서 빌드한 후  3TB에 달하는 마스킹된 25개 데이터베이스 모두를 10분 이내에 개발 환경에 마운트하여 분석할 수 있습니다. 그 결과, 안정적이고 일관성 있는 환경에서 데이터베이스 업데이트와 디버깅을 할 수 있습니다.

데브옵스 측면에서 주요 성공 포인트: 평균 1분 40초만에 3TB 규모의 데이터베이스들을 모두 마운트합니다. 지난 달의 어느 시점이든 원하는 데이터를 가져오는데 이정도 시간 밖에 걸리지 않는 것은 밀을 수 없을 만큼 인상적입니다. 확장성도 좋아서, 동시에 액티브 마운트를 20개 넘게 우리가 유지해도 데이터베이스 모두 성능 상의 차이가 거의 없었습니다.

우리는 액티피오를 통해 시간당 평균 33TB를 마운트합니다. 그래도 Sky 어플라이언스 성능에는 거의 차이가 없습니다. 마치 한계가 없는 것 같이 우리가 밀어부치는 정도는 가뿐하게 모두 처리합니다. 디스크 사용은 20TB나 줄었습니다. 해당 파이프라인 전체가 매우 안정적이라는 것도 증명되었습니다.

우리가 이룬 것을 요약하자면, 데이터 보호에서부터 개발자 경험까지 파이프라인 전체에서 효율성 향상이 인상적입니다. 우리는 민첩하고 일관성 있는 (agile and consistent) 흐름을 유지하면서도 최상의 품질을 유지할 수 있게 되었는데, 액티피오가 획기적인 전환점 역할을 해주었습니다. 마치겠습니다. 감사합니다.

(감사합니다. 멋지네요. 데이터마스킹은 특정 솔루션 도구를 사용하나요? 아니면 직접 만든 마스킹 스크립트를 사용하나요?)

지난 몇년에 걸쳐 우리가 직접 만든 방식을 씁니다. 액티피오에서 여러 데이터 마스킹 도구와 직접 연동할 수 있다는 점을 알고 있지만 우리의 기존 절차를 데브옵스 파이프라인에 넣어서 연동합니다.

(훌륭하네요. 이미 신뢰할 수 있고 잘 아는 기존의 지적 자산을 버릴 필요 없이 그대로 재사용하고 있군요.)

네. 그렇죠. 맞아요.

(멋져요. 시간 당 데이터베이스 30개를 마운트한다고 했나요?)

네. 데브옵스 파이프라인에서 처리되는 갯수예요. 우리는 기능 브랜치가 많고 많은 개발자들이 변경 사항을 깃(Git)에 반영하기 때문에 바쁜 날에는 수많은 테스트가 진행되거든요. 그래서 그렇게 많이 했어요. 말하자면 매우 견고하기 때문에 훨씬 더 많이 할 수 도 있다고 확신해요. 얼마나 마운트를 더 할 수 있는 지 알려면 개발자들이 더 열심히 해야겠죠.

(예전에 테스트 데이터를 수작업으로 제공하거나 전통적인 방식으로 복구하던 환경에서, 개발자들이 얼마나 오래 기다려야 했는지 생각해보게 되네요. 이제는 기다리는 시간이 없어진거네요.)

맞아요. 일관성이 생겼어요. 개발자들이 알고 있는 시간 안에 처리할 수 있게 되었죠. 이제 우리는 개발자가 프로세스를 시작하고 앉아서 자동화가 진행되는지를 보고, 브랜치를 바꿔서 절차를 시작하고 커피한잔 가져오면 이미 빌드가 완료되고 데이터베이스도 이미 준비되어 있죠. 개발자가 가장 좋은 점이죠. 무엇보다도, 그저 바꾸기만 하면 나머지 모두가 일관성있게 확보된다는게 우리에게는 핵심이예요.

(멋지네요. 오늘 이야기 감사합니다.)

관련 스크린샷

(1)데이터 보호, (2)테스트 데이터 관리, (3)데브옵스 CI 파이프라인에서 개발자의 경험의 3가지 측면에서 설명합니다.
지구 반대편의 데이터 센터 2곳을 묶인 하나의 SQL 서버 가용 그룹을 한번에 즉시 복구
SQL 서버 가용 그룹을 통채로 여러개의 테스트 환경으로 복제
개발자는 실제와 같은 환경을 직접 마운트 하여 디버깅한 후 커밋을 하고, 커밋된 결과는 데브옵스 파이프라인에서 다시 실제와 같은 환경에터 자동 테스트 후 배포

SQL서버를 데브옵스에 실제 구현 내용을 간결한 발표자료를 통해 설명하는 비디오(20분) 입니다.

이 내용은 액티피오의 고객인 뉴질랜드의 SaaS 클라우드 업체인 3C Port Trade가 직접 설명합니다.

Actifio에 대하여

Actifio는 멀티-클라우드 복제 데이터 관리 소프트웨어 분야를 개척한 회사이다. Actifio 솔루션을 사용하면 데이터를 가상화하여 어느 곳으로든 바로 제공할 수 있다. 이 엔터프라이즈급 소프트웨어 플랫폼은 가상 데이터 파이프라인(Virtual Data Pipeline™) 특허 기술을 기반으로 구축되었으며, 하이브리드, 퍼블릭 및 멀티-클라우드 전략 추진 가속화, 고품질 애플리케이션을 구축 속도 향상, 사업 회복 능력과 가용성의 향상에 기여한다. 보다 자세한 사항은 Actifio.com 또는 트위터 @Actifio 를 참고.

문의처: https://actifio.devgear.co.kr, 02-595-4288
한국 내에서는 데브기어에서 지원과 사용자 생태계 강화를 위해 힘쓰고 있다.

궁금하신 점이 있으신가요?

기술 자료, PoC, 견적, 상담 등 필요한 사항을 남기거나 연락하려면?

갤러리

액티피오 기술이 어떻게 작동되는 지 알고싶은가요?