하나의 리파지토리(Repository)? 아니면 많은 리파지토리? 대답은 둘 다 아닙니다.

다음은 요즘 가장 많이 질문받는 것 중에 하나입니다.


"모든 소스코드를 꼭 하나의 리파지토리에 관리해야 하나요?"

이는 복잡한 질문입니다. 먼저 답을 찾기 전에 우선 왜 고객들이 이런 질문을 하는지 이해하도록 노력해 볼까요.


IT는 주로 중앙 집중화(Centralization), 최적화(Optimization) 이런 단어를 좋아합니다. 한 곳에 모든 코드를 모아 두는 것은 중앙 집중화 및 최적화를 위한 분산 데이터의 차세대 관리 방법처럼 보입니다. 모든 것을 한 곳에 두는 것은 더 나은 액세스 관리를, 더 나은 백업 및 복구를 관리하고, 모든 사람이 코드의 재사용을 극대화 할 수 있음을 의미합니다.


하지만, 이는 오늘날의 개발자의 행동에 직접적인 영향을 끼칩니다. 크고 작은 IT 조직의 개발자들이 자신을 위해 또는 팀을 위해 오픈소스, 오픈코드 관리시스템을 다운로드하는 것을 흔히 볼 수 있습니다. 특정 위치에 하나의 리파지토리를 구성하는 것 대신에 광대한 리파지토리의 디지털 열도(Archipelago)를 만드는 처럼 모든 서버 그리고 개발자들의 하드 드라이브에 구성된 리파지토리 또한 볼 수 있습니다. 이는 마치 다윈에 의해 기록된 핀치새처럼 팀과 팀사이의 프로세스와 표준의 근간이 진화되고 있는 것 같습니다.


이는 딜레마입니다. 회사들은 단일 리파지토리 전략을 추진하지만, 개발자들은 코드의 로컬 컨트롤과 소유권을 원한다는 것입니다.


회사가 원하는 것은 무엇일까요?

하나의 리파지토리를 원한다고 얘기할 때, 진정 회사가 원하는 것은 무엇일까요? 늘 그렇듯 회사는 여러 문제를 해결하기 위해 노력하며, 일반적으로 다음과 같을 것 입니다.


  • 리파지토리에있는 모든 Artifacts에 대한 가시성
  • 중앙 액세스 제어관리
  • 거버넌스 지침과 감사보고 요구사항에 대한 적합성
  • 업무 구분에 맞는 Artifacts의 세그먼트화
  • 코드 공유 및 리팩토링 활동 지원
  • 엔터프라이즈 대상의 광범위한 영향 분석
  • 오용, 남용 그리고 악의적인 활동에 대한 통제
  • 지속적인 리파지토리 백업


위에 나열된 것들은 자연스레 Architectural 한 것은 아니며, 모두 기능적인(Functional) 요구사항들입니다. 하나의 리파지토리 구성으로는 이런 요구사항들을 만족하기 쉽지만, 팀 기반으로 분산된 리파지토리 구성으로는 달성하기에 매우 어렵고 어떤 경우에는 불가능합니다.


개발자가 원하는 것은 무엇일까요?


개발자들은 보다 속도있게 개발하기 위해 최소한의 테크놀로지와 최소한의 프로세스만을 필요로 합니다. 일전에 페이스북 창업자이자 CEO인 마크 주커버그는 "Move fast and break things"이라고 얘기했는데 이 의미는 다음과도 같습니다.


  • 예산 승인없이 획득할 수 있는 솔루션
  • 자신의 요구에 맞게 사용하기 쉽고 유연한 리파지토리
  • 최소한의 프로세스, 통제 및 제어
  • 쉬운 관리 (또는 없거나)
  • 단순한 라이선스 (또는 없거나)
  • LAN 및 WAN을 통해 빠른 체크 아웃과 체크인 (특히 최신버전 내려받기)


다시 한번 얘기하자면, 이 또한 Architectural 한 것이 아니며, 단지 요구사항 리스트입니다. 마치 회사의 가버넌스 요구와 상충된것처럼 보이지만 공통점이 있고 모두의 요구사항을 충족시킬 수 있는 적절한 테크니컬 솔루션이 존재합니다.


놓친 부분들...


개발자들은 본인이 개발한 코드가 개발에 사용됐던 플랫폼이 아닌 다른 곳에서 서비스되는 것을 꺼려합니다. 메인프레임 개발자는 COBOL 코드를 윈도우에서 구동하는 것을 절대 원치 않을 것이고, 유닉스 개발자 또한 마찬가지일 것 입니다. 중국 베이징에 있는 개발자들은 자신의 코드가 불가리아에서 호스팅되는 것을 원치 않을 것이고, 미국 보스턴에서 관리되는 것 또한 원치 않을 것 입니다. 그외 또, 수 많은 코드 페이지와 어쩌면 ASCII에서 EBCDIC으로의 컨버전 문제가 잇따라 나타날 것 입니다.


오늘 날 대부분의 개발자들은 그들이 사용중인 개발용 플랫폼에 디자인된 코드 분석 도구를 사용합니다. 이 얘기는 코드를 계속 그 플랫폼에 놓고 사용한다는 얘기이며, 다른 의미로는 하나의 리파지토리에서 다시 분산된 플랫폼으로 코드를 중복하여 이용한다는 의미도 됩니다.


하나의 리파지토리 vs. 여러 분산된 리파지토리? 이런 관점보다는 소스 코드 리파지토리가 회사의 지적 재산이라는 것을 고려해야 합니다. 이는 회사가 제공하는 제품이나 서비스보다 더 가치있고 중요한 자산이기 때문에, 적대적인 외국 정부, 파렴치한 경쟁자, 불만을 품은 직원 그리고 조직적인 범죄의 타겟 및 초점이 되고 있습니다.


안전하고 견고한 SDLC: 차세대 표준 리파지토리


SDLC는 Software Development Life Cycle의 약어입니다.

미래의 리파지토리는 안전한 데이터 관리에 중점이 된 Best practice의 형태로 설계되어야 합니다. 리파지토리의 보호가 가장 중요하며, 다음 조건을 꼭 충족해야 합니다.


  • 단일 포인트 액세스 제어
  • 강력한 감사기능
  • Artifacts 암호화
  • Artificats, 로그, 감사 추적, 보고서 및 소프트웨어 자체 임의 변경에 대한 탐지


이상적인 리파지토리 아키텍처


이상적인 리파지토리 아키텍처를 만드는 것은 리파지토리가 하나 또는 여러개? 이런 문제가 아닙니다.

여기 모든 기업과 모든 개발자의 요구를 충족할 핵심 요소들이 있습니다.


  • 코드의 침투 및 노출에 대한 방어가 된 안전한 리파지토리
  • 프로세스 중심의 플랫폼에 상관없이 적용되는 하나 이상의 개발 프로세스 그리고 모든 개발 방법론을 지원
  • 견고하고 변경할 수 없는 로깅 및 감사 추적
  • 사용자 및 툴 관리의 단일 포인트
  • 개발자가 선택한 플랫폼에 저장되는 Artifacts
  • 해당 플랫폼에 최적화 된 본래의 유틸리티에 의한 백업
  • LAN과 WAN을 통한 고속 성능
  • 사용자 부하, 리파지토리 크기, 관리되고 추적되는 버전과 변경의 양에 상관없는 고속 성능
  • 코드중복을 줄이고 오용을 제한하면서 필요에 따른 코드의 최소한의 캐싱


우리는 이것을 '단일 가상 리파지토리(Single Virtual Repository)'라고 부릅니다.


관리와 운영 관점에서 보면 하나의 리파지토리처럼 보이지만, 내부를 들여다보면 SCCM 소프트웨어는 각각의 플랫폼, 각자의 위치에서 모든 Artifacts를 관리하고 있습니다.


개발자 관점에서 보면, 자신의 코드는 팀과 함께 배치되어 빠른 접근이 가능합니다. 또한 코드 분석 도구가 코드 복제를 따로 하지 않고 바로 실행할 수 있다는 것을 의미합니다. 각 팀은 그들이 갖고 있는 또는 위임 가능한 프로세스를 가질 수 있기에, 프로세스와 액세스 규칙이 특정 프로젝트 또는 Artifacts 레벨에 정의될 수 있습니다.


중앙 제어를 하지만, 분산된 데이터를 유지하는 것 입니다.


Why Serena


세레나는 세계적으로 가장 진보하고 성공적인 소프트웨어 변경 및 구성 관리(SCCM) 솔루션을 제공합니다.


메인프레임 개발자를 위한 전설적인 ChangeMan ZMF 솔루션이 있으며, "어디에서나 개발하고, 어디에든 배포한다"라는 접근 방식으로 메인프레임에서 개발할 수 있음은 물론이거니와 Eclipse 기반의 IDE를 이용하여 z/OS부터 z/Linux, Unix 시스템 서비스 그리고 Websphere 애플리케이션 서버까지 어떠한 메인프레임 플랫폼이라도 배포와 실행을 수행할 수 있습니다.


분산 환경의 경우, 타의 추종을 불허하는 테크놀로지, Dimensions CM  솔루션이 있습니다. 이는 전 세계적으로 국방, 정보, 금융, 보험, 제약 분야와 같은 가장 진보적으로 알려진 조직에 의해 사용중입니다. 그 뛰어난 기능은 개발자에게 매우 세련된 도구를 제공하여 코드 품질을 유지하면서 속도있는 개발을 돕습니다.


ChangeMan ZMF와 Dimensions CM은 '단일 가상 리파지토리(Single Virtual Repository)' 중심으로 설계되었고 개발자와 회사 거버넌스 팀에게 바로 그들이 원하는 것을 제공합니다.


그리고, 개발 영역이 메인프레임과 분산환경에 걸쳐 점점 확장되는 엔터프라이즈를 위해 Serena Release Control 솔루션은 개발 및 배포활동에 관련된 여러 플랫폼에 걸친 싱글 포인트 관점의 단일 가상 리파지토리를 제공하며, ChangeMan ZMF, Dimensions CM 뿐만 아니라 다른 제 3의 리파지토리들 또한 제어할 수 있도록 합니다.


세레나는 30년 이상 SCCM 시장을 리드하고 있습니다. 전 세계적으로 가장 정형화된 대기업들(Highly Regulated Large Enterprises, HRLEs)의 매우 복잡한 개발 업무를 뒷받침하는 경험을 토대로 소스 코드 리파지토리의 설계 및 구현에 있어서 압도적인 우위를 지키고 있습니다.


빛 좋은 개살구 같은 시간이 갈수록 성능이 저하되는 저렴해 보이는 솔루션에 속지 마시고, 단일 리파지토리의 단순함이 전부가 아님을 유의하시기 바랍니다.


단일 가상 리파지토리는 개발자와 IT 거버넌스의 요구를 충족하는 유일한 솔루션이며, 세레나는 견고한 SDLC 환경을 위해 이 솔루션을 당장이라도 제공할 수 있는 준비되어있는 유일한 존재입니다.


References: http://www.serena.com/blog/2015/08/source-in-one-basket/

'Dimensions CM' 카테고리의 다른 글

Cherry Pick Merge  (0) 2016.12.08
Dimensions CM 14.3: Pulse Agile 기능 살펴보기  (0) 2016.09.06
What's New in Dimensions CM 14.2?  (0) 2015.10.16
Dimensions CM 14  (0) 2014.12.26