본문 바로가기 주메뉴 바로가기

최신IT소식

성공적인 데브옵스 데이터베이스 개발을 위한 열쇠

관리자 2018-04-17 조회수 304

Quest_thumb_20180411.jpg

 
성공적인 데브옵스 데이터베이스 개발을 위한 열쇠


데이터베이스 개발은 데브옵스 워크플로우의 민첩함을 가로막는 병목 지점으로 지적되고 있습니다. 프로덕션 베이터베이스의 민감한 특성과 데이터베이스 개발 프로세스의 복잡성 때문에 전통적인 데이터베이스 개발은 애플리케이션 개발과는 별개로 수행됐고, 이로 인해 기업은 빌드 자동화 프로세스에 데이터베이스 개발을 통합하지 못했습니다.

하지만 이런 상황은 변화할 수 있습니다. 
데브옵스와 데브옵스가 제공하는 혜택, 그리고 데브옵스의 도입 현황을 짚어본 지난 포스팅에 이어, 오늘은 성공적인 데브옵스 도입을 위한 핵심 요소와 데이터베이스 개발을 애자일 워크플로우로 통합해서 데브옵스의 모든 잠재력을 끌어내기 위한 방법을 살펴보도록 하겠습니다.

성공적인 데브옵스 프로그램을 위한 열쇠
데브옵스를 ‘도입했다’고 선언하는 것과 조직 전반에 실제 데브옵스 방식을 수용하는 것은 별개의 문제입니다. 데브옵스는 여러 팀에 걸친 협업과 소통을 강조하는데, 따라서 데브옵스의 성공을 위해서는 툴과 기술 못지 않게 문화적인 변화, 특히 전통적인 조직의 격리 구조를 타파하고 비즈니스 프로세스를 개조하는 것이 중요

합니다.


devops_figure_3.jpg
         <그림 1> IT 전문가와 경영진을 포함한 인적 요소, 즉 사람은 성공적인 데브옵스 프로그램을 위해 가장 중요한 요소입니다.

 

 

실제 구현한 기업의 이야기를 들어봅시다. 유니스피어 설문 응답자들이 꼽은 성공적인 데브옵스 프로그램으로 가기 위한 핵심 요소 세 가지는 다음과 같습니다.

- 사람
- 프로세스
- 기술

사람
오늘날 많은 조직은 격리된 채로 운영됩니다. 개발 팀, 운영 팀과 같은 개별 팀의 구성원들은 각자의 그룹에서는 효과적으로 일하지만 다양한 팀 간의 소통이나 협업은 제대로 이뤄지지 않는 경우가 많습니다. 예를 들어, 일부 IT 전문가들이 개발 팀에서 운영 팀으로 “벽 위로 코드를 던져서 넘긴다”고 표현할 만큼 단절은 심각합니다.

이러한 전통적인 경계를 허물기 위해서는 조직 내에서 하향식 노력이 필요합니다. 유니스피어 설문에서 성공적인 데브옵스 구현의 핵심 요소로 거의 균등하게 언급된 세 가지는 다음과 같습니다.

- 경영진의 지원 : 39%
- 언제든 사용 가능한 유연한 리소스 : 39%
- 교차 직무 팀 : 34%

최근 데브옵스 컨퍼런스에 참석한 여러 기업과의 대화에서 저희는 새로운 표현을 접했습니다. 바로 부족(tribe)입니다. 부족이란, 제공 프로세스를 능률화하기 위해 여러 직무 팀(개발, 테스트, QA, 운영, 위험 관리 등)의 담당자가 포함된 특정 프로젝트 팀 내의 개인들로 구성된 그룹을 말합니다. 많은 조직이 이미 이 방향으로 나악가고 있습니다. 유니스피어 설문 응답자의 74%는 자신이 속한 조직에서 애플리케이션 개발을 촉진하기 위해 이미 데이터베이스 개발자와 DBA가 동일한 팀에서 함께 작업하고 있다고 답했습니다.

프로세스
데브옵스의 목표는 소프트웨어의 빌드, 테스트, 릴리스를 빠르고 안정적으로 실행하는 데 있습니다. 많은 애플리케이션 개발 팀은 이미 소스 제어를 사용해 코드를 단위 테스트하기 위한 안정적이고 반복 가능한 프로세스를 두고 있습니다. 그러나 소프트웨어 애플리케이션은 데이터베이스 백엔드에 의존하는 경우가 많은데, 정작 데이터베이스 개발 및 릴리스 프로세스는 자동화와 표준화가 제대로 되지 않은 경우가 많습니다.



pasted image 0 (5).png
                              <그림 2> 데이터베이스 개발을 데브옵스에 통합하는 데 있어 가장 큰 과제



<그림 2>에서 볼 수 있듯, 유니스피어 설문에서는 이 목표의 달성을 가로막는 여러가지 과제가 발견됐습니다. 가장 큰 과제는 데이터베이스 개발자가 회귀 테스트를 자동화할 수 있도록 하는 것입니다. 당연히 그렇습니다. 특히 오라클 PL/SQL 코드는 많은 경우 고급 데이터 형식을 사용하고 상당히 복잡해질 수 있기 때문입니다. JUnit, Ruby와 같은 기술을 사용해서 기존 애플리케이션 테스트의 일부로 이 코드에서 단위 테스트를 수행하는 방법은 현실적이지 않습니다. 전용 PL/SQL 테스트 솔루션이 필요합니다.

응답자들의 답변을 통해 드러난 또 다른 주요 과제는 
일관적인 코드 품질 달성입니다. 정적 코드 검토는 전통적으로 매우 주관적이고 불완전하며 깊이도 부족합니다. 자동화된 빌드 프로세스를 위해서는 최소 품질 기순을 확실히 충족하기 위해 다양한 코드에 걸쳐 일관적으로 적용할 수 있는 규칙 기반의 접근 방법이 필요합니다.

기술
물론 기술은 성공적인 데브옵스 도입에서 중요한 역할을 합니다. 많은 애플리케이션 개발 팀은 이미 버전 제어 시스템(version control system, VCS), 그리고 지속적 통합과 지속적 배포를 지원하기 위한 기술을 갖추고 있습니다(예를 들어, 젠킨스(Jenkins), 밤부(Bamboo), 또는 팀시티(TeamCity). 그러나 데이터베이스 팀에는 일반적으로 이러한 프로세스가 없고 따라서 이를 지원하는 기술을 활용할 수도 없습니다.

데이터베이스 개발을 데브옵스에 통합하는 방법
성공적인 데브옵스 프로그램의 핵심 요소에 대한 이러한 실제 기업 조직의 경험을 사용하면 데이터베이스 개발 작업을 통합함으로써 최대한의 데브옵스 속도를 달성하기 위한 이상적인 솔루션을 명확하게 그릴 수 있습니다.

이상적인 솔루션은 주요 데이터베이스 개발 작업을 데브옵스 워크플로우 내에서 실행할 수 있게 해줍니다. 품질과 성능 또는 안정성을 희생하지 않으면서 이와 같이 하려면 
데이터베이스 개발 작업은 호출 가능한 기능이 되어야 합니다. 구체적으로 말하면 이상적인 솔루션은 다음이 모든 작업을 자동화된 빌드 프로세스의 일부로 수행할 수 있어야 합니다.

- 사전 정의된 요구 사항을 기준으로 한 PL/SQL 코드 테스트로 기능적인 정확성 보장
- PL/SQL 코드를 검토해서 품질 및 유지보수 편의성 기준을 충족하는지 확인
- 데이터베이스, 스키마, 데이터 비교 및 동기화를 수행해 무결성을 확보하고 위험을 완화
- 변경 스크립트를 생성해 대상 환경에 빌드 아키텍트 배포
- 성공/실패 상태 시각화

더 폭넓게 보면 이상적인 솔루션은 다음과 같은 역할을 합니다.

- 협업 촉진
- 애플리케이션 및 데이터베이스 배포 전반에서 프로젝트 막마을 지킬 수 있도록 지원
- 현재 데브옵스 프로세스에 대한 중단을 최소화하면서 생산성 증대
- 거의 모든 지속적 통합 및 지속적 제공 툴에 통합 : 젠킨스, 밤부, TFS(Team Foundation Server) 등

비즈니스 환경과 기술 시장은 빠르게 변화하고 성장하므로 조직은 민첩해야 합니다. 데브옵스는 이해당사자 간 소통과 협업을 개선해 소프트웨어 개발의 속도와 품질을 모두 높이는 데 도움이 됩니다. 그러나 데이터베이스 개발은 너무 오랜 시간 동안 민첩한 데브옵스 워크플로우의 큰 장애물로 방치되었습니다. 즉,
 데브옵스의 잠재력을 모두 발휘하기 위한 핵심 요소는 주요 데이터베이스 개발 작업을 데브옵스 워크플로우 내에서 실행할 수 있는 역량
입니다.

오직 하나의 솔루션이 그러한 역량을 제공합니다. 
토드 데브옵스 툴킷(Toad DevOps Tookit)을 사용하면 앞서 살펴본 모든 주요 오라클 데이터베이스 개발 작업을 
데브옵스 워크플로우 내에서 실행

할 수 있습니다. 코드 테스트, 코드 검토, 데이터베이스, 스키마, 데이터 비교 및 동기화, 빌드 아티팩트 배포, 성공/실패 상태 시각화 등이 모두 가능합니다. 결과적으로 품질 성능 또는 안정성을 타협하지 않고도 데브옵스 파이파라인의 속도를 극대화할 수 있습니다.

또한, 토드 데브옵스 툴킷은 설치와 사용이 간편해 윈도우 시스템에서 실행됩니다. 젠킨스, 밤부, TFS 및 대부분의 다른 CI, CD 툴과 통합됩니다. 또한, 안정적이고 포괄적이며 품질이 뒤어난 제품을 제공하는 검증된 역량을 갖춘 퀘스트 개발 팀이 제공합니다. 토드 데브옵스 툴킷에 대해 자세히 알아보려면 
토드 소개 페이지를 참고하거나, 토드 커뮤니티에 가입해보시기 바랍니다. 

 

  • 등록된 댓글이 없습니다.