2017.05.16

'제로 다운타임' 무중단 IT를 위한 DB 설계 방법

Barry Morris | CIO
다이아몬드는 단단하고 영원하지만 생산이 어렵다. 안정적이고 중단없는 응용프로그램을 만드는 것도 마찬가지다. 데이터베이스 관리 계획을 검토하고 이상적인 무중단 IT 구현 전략을 마련해야 한다.



다운타임으로 인해 발생하는 손해는 상당한 것으로 추산되지만 많은 CIO가 이를 밝히기를 꺼린다. 다운타임 비용은 시간당 수백 달러 혹은 수백만 달러, 심지어 수십억 달러까지 발생할 수 있다. 예를 들어 주식 자동거래 시스템이 시장 조정기에 잠시라도 멈춘다면 즉각적으로 수십억 달러 손실로 이어진다.

오늘날 다운타임의 의미는 더 커졌다. 단순히 비즈니스 위기와 손해 비용에만 국한된 문제가 아니다. 이제는 '모든' 시스템이 '항상' 가동하는 것이 기본 요건이 됐다. 무중단 IT 세상이 도래한 것이다.

최근 각광받는 다운타임 대응 기술 중 하나가 ‘이중화 마이크로서비스(Redundant MicroService)’이다. 노드를 추가해 과부하를 방지하고, 라이브 노드로 원활하게 리다이렉션해 노드 장애에 대처할 수 있다. ‘일래스틱 마이크로서비스(Elastic MicroService)’는 애플리케이션 계층에서 용량 조정과 장애조치를 할 수 있다.

블루그린(BlueGreen) 배포 모델을 통해 무중단 IT를 구축할 수도 있다. 이는 크레파스 색깔이 아니다. 유명 요리사인 줄리아 차일드의 표현을 빌자면 '급할 때 당장 쓸 수 있도록 미리 재료를 준비하는' 방법이다(블루그린은 두 개의 동일한 프로덕션 환경을 사용해 업데이트 프로세스가 실제 비즈니스에 사용되는 프로덕션 워크로드에 영향을 주지 않고 다운타임을 줄이기 위한 소프트웨어 배포 전략이다. 한 환경을 파란색으로, 이중화 환경을 녹색으로 표시한다). 웹 서비스 레벨에서 전체 애플리케이션 스택을 전환하는 것은 라이브 애플리케이션을 개선하기 위한 좋은 해결책이다.

모든 초록색 영역의 애플리케이션은 무상태(sateless), 즉 무중단 IT를 위한 준비된 재료이다. 재료 준비 외에도 해결해야 할 더 큰 문제가 많다. 특히 데이터베이스는 훨씬 까다롭다. 데이터베이스 제로 다운타임을 구현하는 것은 매우 어렵다. 그나마 할 수 있는 것이 '최선'을 다하는 것이다. 계획했든 아니든 모든 다운타임에 대한 서비스 수준 계약(SLA)을 최대한 만족시키기란 어려운 일이다.

전통적인 RDBMS를 위한 고가용성(HA) 솔루션은 복잡하고 취약하다. RDBMS 관리자는 온갖 종류의 타협적인 대안을 고민해야 한다. 대개는 라이브 업그레이드를 하기 위해 오라클 데이터 가드(Oracle Data Guard)를 사용해 재난상황이 발생했을 때 백업서버가 주 서버를 대신하는 액티브-스탠바이(Active-Standby)를 만들고, 구 버전에서 새로운 버전으로 무모하게 한꺼번에 건너오는 것이다. 이로 인한 최대의 효과는 다운타임을 줄이는 정도이지 제로 다운타임을 구현하는 체계적인 대안은 아니다. 작업에 필요한 인력과 툴 비용도 상당하다.

이상적인 데이터베이스 시스템은 다음을 갖춰야 한다:

- 단일 장애점(SPOF: single point of failure) 없음
- 동적 프로비저닝
- 푸시 버튼 백업 및 복원
- 온라인 유지 관리(업그레이드, 스키마 변경, 스토리지 관리 등)
- 관리 작업의 손쉬운 자동화
- 작업에 필요한 사용의 단순화

이를 '클라우드 네이티브(Cloud-native) 데이터베이스'라고 표현할 수 있다. 무중단 IT 추구로 인해 전통적인 단일 서버 데이터베이스에서 클라우드 네이티브 데이터베이스로의 이행이 지속될 것으로 예측된다.


탄력적인 인프라를 위한 애플리케이션 구축과 마이그레이션을 위한 현실적인 대안은 무엇일까? 대답은 크게 3가지로 나뉜다:

- 서비스로서의 데이터베이스(DBaaS)
- NoSQL 솔루션
- 탄력적인 SQL 솔루션

DBaaS 오퍼링은 클라우드 업체(IaaS) 및 서드파티에서 제공하는 '사용한 만큼 지불하는' 서비스이다. 장점은 골치 아픈 서비스 관리를 직접 할 필요가 없다는 것이다. 비용을 내면 SLA에 맞는 관리를 받을 수 있다. 단점은 일반적으로 기업 애플리케이션의 기능 및 운영의 유연성이 예상보다 훨씬 떨어진다는 것이다. 통제 권한도 마찬가지다.

NoSQL 솔루션은 확장성이 뛰어난 데이터베이스 기능을 제공한다. 기존 데이터베이스 시스템과 달리 단일 서버 솔루션이나 밀접하게 클러스터된 솔루션이 아니다. 이는 장애에 대한 복원력과 무중단 IT에 대한 지원을 훨씬 향상시킬 수 있는 장점이 있다. 단점은 NoSQL 솔루션은 표준 SQL을 사용하지 않으며, 일관성과 내구성 등 기존 데이터베이스가 제공하고 응용 프로그램이 일반적으로 기대하는 성능을 보장하지 않는다.

탄력적인 SQL 솔루션은 SQL RDBMS의 모든 이점과 함께 클라우드 네이티브 데이터베이스 시스템의 기능을 구현하는 것이 목표이다. 애플리케이션이 시스템과 상호작용하는 방식은 기존 데이터베이스와 동일하지만, 탄력적으로 분산 구축된 시스템의 보호를 받는다. 단점이라면 일래스틱 SQL 솔루션은 상대적으로 개발 역사가 짧아 베타 혹은 SQL 지원 수준이 기대에 미치지 못한다는 사실이다.

따라서 수년 동안 프로덕션 환경에서 지속된 버그가 있는지, 해결됐는지, 기존 애플리케이션을 쉽게 마이그레이션 할 수 있는 SQL 지원이 충분한지 등을 주의 깊게 살펴야 한다.

다양한 상황마다 그에 적합한 대답도 달리 해야 한다. 하지만 무중단 IT 구현이 목표라면 데이터관리 계획을 검토해야 한다. 항상 가동 중(always-on)인 애플리케이션은 항상 가동 중인 데이터베이스 시스템 상에서 가능하다. 그렇다면 당연히 설계 목표는 클라이언트/서버가 아니다.

* Barry Morris은 유럽과 미국 등에서 25년 이상 소프트웨어 경력을 갖고 있다. NuoDB의 창업자이자 CEO이다. ciokr@idg.co.kr 

2017.05.16

'제로 다운타임' 무중단 IT를 위한 DB 설계 방법

Barry Morris | CIO
다이아몬드는 단단하고 영원하지만 생산이 어렵다. 안정적이고 중단없는 응용프로그램을 만드는 것도 마찬가지다. 데이터베이스 관리 계획을 검토하고 이상적인 무중단 IT 구현 전략을 마련해야 한다.



다운타임으로 인해 발생하는 손해는 상당한 것으로 추산되지만 많은 CIO가 이를 밝히기를 꺼린다. 다운타임 비용은 시간당 수백 달러 혹은 수백만 달러, 심지어 수십억 달러까지 발생할 수 있다. 예를 들어 주식 자동거래 시스템이 시장 조정기에 잠시라도 멈춘다면 즉각적으로 수십억 달러 손실로 이어진다.

오늘날 다운타임의 의미는 더 커졌다. 단순히 비즈니스 위기와 손해 비용에만 국한된 문제가 아니다. 이제는 '모든' 시스템이 '항상' 가동하는 것이 기본 요건이 됐다. 무중단 IT 세상이 도래한 것이다.

최근 각광받는 다운타임 대응 기술 중 하나가 ‘이중화 마이크로서비스(Redundant MicroService)’이다. 노드를 추가해 과부하를 방지하고, 라이브 노드로 원활하게 리다이렉션해 노드 장애에 대처할 수 있다. ‘일래스틱 마이크로서비스(Elastic MicroService)’는 애플리케이션 계층에서 용량 조정과 장애조치를 할 수 있다.

블루그린(BlueGreen) 배포 모델을 통해 무중단 IT를 구축할 수도 있다. 이는 크레파스 색깔이 아니다. 유명 요리사인 줄리아 차일드의 표현을 빌자면 '급할 때 당장 쓸 수 있도록 미리 재료를 준비하는' 방법이다(블루그린은 두 개의 동일한 프로덕션 환경을 사용해 업데이트 프로세스가 실제 비즈니스에 사용되는 프로덕션 워크로드에 영향을 주지 않고 다운타임을 줄이기 위한 소프트웨어 배포 전략이다. 한 환경을 파란색으로, 이중화 환경을 녹색으로 표시한다). 웹 서비스 레벨에서 전체 애플리케이션 스택을 전환하는 것은 라이브 애플리케이션을 개선하기 위한 좋은 해결책이다.

모든 초록색 영역의 애플리케이션은 무상태(sateless), 즉 무중단 IT를 위한 준비된 재료이다. 재료 준비 외에도 해결해야 할 더 큰 문제가 많다. 특히 데이터베이스는 훨씬 까다롭다. 데이터베이스 제로 다운타임을 구현하는 것은 매우 어렵다. 그나마 할 수 있는 것이 '최선'을 다하는 것이다. 계획했든 아니든 모든 다운타임에 대한 서비스 수준 계약(SLA)을 최대한 만족시키기란 어려운 일이다.

전통적인 RDBMS를 위한 고가용성(HA) 솔루션은 복잡하고 취약하다. RDBMS 관리자는 온갖 종류의 타협적인 대안을 고민해야 한다. 대개는 라이브 업그레이드를 하기 위해 오라클 데이터 가드(Oracle Data Guard)를 사용해 재난상황이 발생했을 때 백업서버가 주 서버를 대신하는 액티브-스탠바이(Active-Standby)를 만들고, 구 버전에서 새로운 버전으로 무모하게 한꺼번에 건너오는 것이다. 이로 인한 최대의 효과는 다운타임을 줄이는 정도이지 제로 다운타임을 구현하는 체계적인 대안은 아니다. 작업에 필요한 인력과 툴 비용도 상당하다.

이상적인 데이터베이스 시스템은 다음을 갖춰야 한다:

- 단일 장애점(SPOF: single point of failure) 없음
- 동적 프로비저닝
- 푸시 버튼 백업 및 복원
- 온라인 유지 관리(업그레이드, 스키마 변경, 스토리지 관리 등)
- 관리 작업의 손쉬운 자동화
- 작업에 필요한 사용의 단순화

이를 '클라우드 네이티브(Cloud-native) 데이터베이스'라고 표현할 수 있다. 무중단 IT 추구로 인해 전통적인 단일 서버 데이터베이스에서 클라우드 네이티브 데이터베이스로의 이행이 지속될 것으로 예측된다.


탄력적인 인프라를 위한 애플리케이션 구축과 마이그레이션을 위한 현실적인 대안은 무엇일까? 대답은 크게 3가지로 나뉜다:

- 서비스로서의 데이터베이스(DBaaS)
- NoSQL 솔루션
- 탄력적인 SQL 솔루션

DBaaS 오퍼링은 클라우드 업체(IaaS) 및 서드파티에서 제공하는 '사용한 만큼 지불하는' 서비스이다. 장점은 골치 아픈 서비스 관리를 직접 할 필요가 없다는 것이다. 비용을 내면 SLA에 맞는 관리를 받을 수 있다. 단점은 일반적으로 기업 애플리케이션의 기능 및 운영의 유연성이 예상보다 훨씬 떨어진다는 것이다. 통제 권한도 마찬가지다.

NoSQL 솔루션은 확장성이 뛰어난 데이터베이스 기능을 제공한다. 기존 데이터베이스 시스템과 달리 단일 서버 솔루션이나 밀접하게 클러스터된 솔루션이 아니다. 이는 장애에 대한 복원력과 무중단 IT에 대한 지원을 훨씬 향상시킬 수 있는 장점이 있다. 단점은 NoSQL 솔루션은 표준 SQL을 사용하지 않으며, 일관성과 내구성 등 기존 데이터베이스가 제공하고 응용 프로그램이 일반적으로 기대하는 성능을 보장하지 않는다.

탄력적인 SQL 솔루션은 SQL RDBMS의 모든 이점과 함께 클라우드 네이티브 데이터베이스 시스템의 기능을 구현하는 것이 목표이다. 애플리케이션이 시스템과 상호작용하는 방식은 기존 데이터베이스와 동일하지만, 탄력적으로 분산 구축된 시스템의 보호를 받는다. 단점이라면 일래스틱 SQL 솔루션은 상대적으로 개발 역사가 짧아 베타 혹은 SQL 지원 수준이 기대에 미치지 못한다는 사실이다.

따라서 수년 동안 프로덕션 환경에서 지속된 버그가 있는지, 해결됐는지, 기존 애플리케이션을 쉽게 마이그레이션 할 수 있는 SQL 지원이 충분한지 등을 주의 깊게 살펴야 한다.

다양한 상황마다 그에 적합한 대답도 달리 해야 한다. 하지만 무중단 IT 구현이 목표라면 데이터관리 계획을 검토해야 한다. 항상 가동 중(always-on)인 애플리케이션은 항상 가동 중인 데이터베이스 시스템 상에서 가능하다. 그렇다면 당연히 설계 목표는 클라이언트/서버가 아니다.

* Barry Morris은 유럽과 미국 등에서 25년 이상 소프트웨어 경력을 갖고 있다. NuoDB의 창업자이자 CEO이다. ciokr@idg.co.kr 

X