미국 오바마 정부에 시작된 클라우드 퍼스트, 즉 연방정부의 IT 기반을 클라우드로 전환하는 전략은 2018년 클라우드 스마트 전략으로 한 단계 더 진화함으로써 연방정부의 클라우드 전환이 가속화되고 있다.
클라우드 스마트를 넘어 소프트웨어 현대화 전략으로
미 정부는 클라우드 퍼스트 전략 실행을 통한 경험을 바탕으로 클라우드 전환에 필요한 세 가지 핵심 축으로 보안, 조달, 그리고 인력을 제시하고 각 축의 관점에서 성공적인 클라우드 전환을 위한 요건 및 액션을 클라우드 스마트 전략에서 정의하고 있다. CIA의 C2S/C2E, 국방부의 JEDI/JWCC와 같은 프로젝트가 클라우드 퍼스트 스마트 전략을 대표하는 대형 과제다.
바이든 정부에 들어와서는 미 정부의 IT 현대화 전략의 한 축으로 소프트웨어 현대화 전략을 추진하고 있다. 현대전에서는 전장에서 효과적인 전투를 지원하고, 전투원들의 안전을 최대한 담보하기 위해서 엄청난 IT 자원이 투입된다. 따라서 반대편 적은 이러한 IT 자원에 대한 공격을 끊임없이 시도하게 된다. 공격의 방식은 직접적인 물리적 IT 자원에 대한 공격도 있겠지만, 해킹을 통한 사이버 공격도 큰 비중을 차지한다. 끊임없는 위협에 대응하고, 또한 시시각각 변하는 전장에서의 상황을 최대한 빨리 반영하여 전장에서의 우위를 확보하기 위해서는 신속한 소프트웨어 업데이트 및 개발이 필수다. 이런 배경으로 국방부에서는 소프트웨어 현대화 전략을 추진하게 된다.
소프트웨어 현대화 전략의 핵심을 요약하면 상용 클라우드를 활용하여 기민하게 소프트웨어를 안전하게 제작 및 배포하는 것이다. 이를 위한 프레임워크를 정의하여 필요한 기술 요소와 프로세스 전환 방식, 그리고 실행성과 기준을 제시하고 있다. 소프트웨어 현대화 전략에서 제시하고 있는 주요 목표 중 하나가 소프트웨어 공장(Factory) 생태계 구축이다.
소프트웨어 공장이란?
‘소프트웨어 공장’은 소프트웨어 설계 및 개발, 업데이트와 같은 반복적인 작업이 마치 공장에서 물건을 대량 생산하듯 체계적이며 조직적으로 자동화되는 것을 말한다. 이를 위해서는 탄력적이면서도 명확한 기준을 가지고 있는 프로세스가 필수다. 소프트웨어 개발뿐만 아니라, 이의 검증 및 배포까지의 전 과정이 마치 공장의 컨베이어 벨트에서 최종 제품이 조립되어 출하되는 것처럼 비유될 수 있다. 다만, 일반 공장과 확실히 구분되어야 하는 것은 단일 품종을 대량 생산하는 것이 아니라 끊임없이 업데이트되거나 혹은 새로운 요구사항에 부합하는 새로운 제품이 계속 출하되어야 한다는 점이다.
소프트웨어 공장 개념은 사실 완전히 새로운 개념은 아니다. 위키피디아에 의하면 소프트웨어 공장은 일련의 ‘조립’ 프로세스를 기반으로 사용자 요구사항에 따른 소프트웨어 애플리케이션, 또는 소프트웨어 컴포넌트 개발을 쉽게 할 수 있도록 ‘소프트웨어 자산’을 구조적으로 모아 놓은 것으로 정의하고 있다. 앞서 언급한 전통적인 제조 공정 기법을 소프트웨어 개발에 적용한 것이라 볼 수 있다. 소프트웨어 공학 및 소프트웨어 아키텍처 분야와 밀접한 관계가 있다.
전통적인 개념의 소프트웨어 공장에서는 새로 코딩하는 부분 없이 기존의 소프트웨어 컴포넌트를 가지고 조립(Assemble)하는 것이 원칙이다. 즉, IDE(통합 개발환경)와 같은 도구를 사용하여 새로 코딩하는 것은 ‘공장’에서 하는 역할이 아니다. 만일 새로 코딩할 필요가 있다면, 이는 신규 컴포넌트(부품)를 만드는 과정일 뿐이다. 이의 장점은 최종 소프트웨어를 만들기 위해서 모든 컴포넌트에 대한 이해 및 사전 지식이 없어도, 정확한 사양, 이에 부합하는 컴포넌트, 그리고 일관성 있는 조립 및 검증 프로세스, 이 전체를 아우르는 프레임워크만 있으면 단시간에 필요로 하는 안정적인 소프트웨어를 만들어 낼 수 있다는 것이다. 물론 최종 결과물을 활용 현장에 배포하는 절차도 포함한다.
일반적으로 소프트웨어 공장의 구성요소는 다음과 같다.
- 공장 스키마(Factory Schema): 소프트웨어 시스템 구축에 필요한 자산(컴포넌트)을 분류하고 이들과의 상호 관계(Interface)를 정의하여 소프트웨어 조립 시 활용할 수 있는 문서이다. 좀 더 포괄적으로 프레임워크로 작업에 필요한 절차나 지침을 포함할 수 있다.
- 아키텍처 및 패턴: 소프트웨어 공장에서 최종 애플리케이션 구현 시 적용하기 적합한 소프트웨어 아키텍처 및 디자인 패턴이다.
- 재사용 가능한 코드: 소프트웨어 공장의 핵심으로, 공통 기능을 구현하는 컴포넌트들이다.
- 템플릿(Template): 재사용 가능한 코드를 쉽게 활용할 수 있도록 미리 만들어 놓은 코드 템플릿이다. 함수 호출 시 필요한 매개 변수를 미리 일정한 형태로 자리 잡아 놓은 임시 변수(placeholder) 같은 것이 한 예이다.
- 구현 예: 소프트웨어 공장의 개발자가 구축할 때 참조할 수 있는 예제를 제공한다.
- 자동화 지침: 소프트웨어 공장의 개발자가 최소한의 노력으로 일련의 제작 과정을 자동화할 수 있는 절차 및 관련 도구들에 대한 가이드이다.
소프트웨어 공장을 이용한 애플리케이션 개발의 장점은 전통적인 소프트웨어 개발 방식보다 일관성, 품질, 그리고 타임-투-마켓(Time-to-market)에 있어서 더 좋은 결과를 가져올 수 있다는 것이다. 미국 연방정부에서 추진하는 소프트웨어 현대화 전략의 주요 목표로 국방부 차원에서 소프트웨어 공장 생태계 구축을 들고 있는 이유이다.
플랫폼 원을 중심으로 한 미 국방부의 소프트웨어 생태계
미 각 군에서는 이미 IT 현대화 전략에 의거, 체계적이며 안정적인 소프트웨어 조달을 위해 소프트웨어 공장 개념을 도입하고 있다. 소프트웨어 현대화 전략에서는 이미 투자된 소프트웨어 공장을 아우르는 국방부 차원에서의 소프트웨어 공장 에코시스템 구축을 주요 목표로 설정하고 있다. 소프트웨어 현대화 전략의 비전인 고품질의 안전한 소프트웨어를 빠르게 탄력적으로 조달하기 위해서는 이러한 에코시스템의 역할이 매우 중요하다.
위 그림은 미 공군 중심의 소프트웨어 생태계 개요도이다. 이 그림에서 플랫폼 원(Platform One)은 미 전역에 펴져 있는 소프트웨어 공장을 하나로 엮는 생태계를 만드는 핵심 역할을 한다. 이 플랫폼 원은 소프트웨어 현대화 전략에 따라 이젠 국방부 차원에서 데브섹옵스(DevSecOps) 엔터프라이즈 서비스를 제공하는 공식 플랫폼이다. 플랫폼 원의 로고의 캐릭터인 아기 요다의 주위에 적혀 있는 메시지를 눈여겨볼 필요가 있다.
“폭포수, 당신만이 막을 수 있습니다.”
“Waterfall, only you can prevent.”
폭포수(Waterfall) 모델은 전통적인 소프트웨어 개발 방법론을 말한다. 즉, 요구사항 분석, 설계, 개발, 통합, 테스트, 운영 각 단계가 치밀한 계획을 바탕으로 진행되는 개발 방법론이다. 오랫동안 일반적인 소프트웨어 개발 방법론으로 활용되며, 지금도 대형 외주 개발 소프트웨어 프로젝트에 적용되고 있다. 철저한 계획에 기반해 각 단계를 거침으로써 통해 소프트웨어의 품질을 높이고, 더불어 주어진 사양에 대한 개발 비용 및 납기 예측이 비교적 가능하다는 이유로 많이 활용되었다.
하지만 폭포수 모델의 단점은 변화 요구에 대해 기민하게 대응하지 못한다는 점이다. 사용자 경험을 중시하는 현대 소프트웨어 애플리케이션에서는 변화에 대한 적극적인 대응을 매우 중요시하고 있다. 이에 애자일(Agile) 방법론이 주를 이루게 되었으며, 이는 국방부와 같은 공공 기관에서도 예외가 아니다.
국방부 소프트웨어 현대화 전략의 비전에서도 빠르고 탄력적인 대응(Resilient Software Capability at the Speed of Relevance)을 명시하고 있다. 플랫폼 원의 모토로 “폭포수, 당신만이 막을 수 있습니다”를 제시하고 있는 것도 결국 소프트웨어 현대화 전략의 비전과 일치하고 있는 부분이다. 소프트웨어 생태계의 중심에 있는 플랫폼 원의 역할은 다음과 같다.
- 개발팀은 미션에 충실한 애플리케이션 구축을 할 수 있도록 소프트웨어 팩토리를 관리한다: 데브섹옵스(DevSecOps) 및 SRE(Site Reliability Engineer) 전문성을 바탕으로 개발팀과 공장팀을 분리할 수 있도록 한다.
- 다양한 등급에 대해, 데브섹옵스 파이프라인 및 소프트웨어 공장이 며칠 안에 활성화될 수 있도록 돕는다.
- 획일적인 아키텍처를 지양하는 대신 국방부 기준에 적합한 강화된(Hardened) 컨테이너를 구축하고 활용하도록 한다.
- 국방부 전체의 상호 호혜적(reciprocity)인 DSOP(DoD Enterprise DevSecOps Initiative)를 준수한다.
- 950개 이상의 엔터프라이즈 컨테이너(DB, 개발도구, CI/CD 도구, 사이버 보안 도구 등)를 중앙 집중화하여 관리한다.
- 공동 작업 도구, 사이버 보안도구, 소스 코드 저장소, 아티팩트(예를 들면, 애자일 방법론 구현을 위해 필요한 요소인 프로덕트 백로그, 스프린트 백로그, 프로덕트 인크리먼트 등) 저장소, 개발도구, 데브섹옵스 서비스 등의 관리 서비스 및 자원을 제공한다.
위와 같은 역할을 바탕으로 플랫폼 원에서는 데브섹옵스 서비스 외에도 클라우드 네이티브를 위한 접근 관리(CNAP: Cloud Natvie Access Point), IaC(Infra as a Code)를 통한 CI/CD, 클라우드 네이티브를 위한 DNS, 엔터프라이즈 협업 서비스, 신원확인 및 싱글 사인온 서비스 등을 제공한다. 플랫폼 원에 관해서는 향후 좀 더 상세히 다루어 볼 계획이다.
이러한 플랫폼 원의 서비스는 클라우드 원(Cloud One)이라는 클라우드 호스팅 서비스에 기반하고 있다. (위 그림 참조) 클라우드 원과 플랫폼 원 모두 공군의 소프트웨어 생태계를 위한 서비스였으나 이젠 국방부 전체 서비스를 다루고 있다. 보안 및 신뢰성이 담보된 아마존 AWS, 마이크로소프트 애저, 구글 클라우드서비스를 제공하며 오라클 클라우드도 곧 제공할 예정이다.
시사점: 소프트웨어 생태계와 강화된 컨테이너
미 국방부 소프트웨어 전략에서는 국방부 차원의 소프트웨어 공장 생태계 구축을 목표로 명시하고 있다. 하지만 좀 더 포괄적으로는 소프트웨어 공장 생태계보다는 ‘소프트웨어 생태계’가 더 적합한 표현이 아닌가 생각된다.
일관성 있는 품질을 중시한 전통적 개념의 소프트웨어 공장 개념에서 클라우드 중심, 애자일 개발 방법론에 기반을 둔 기민한 소프트웨어 제공으로 소프트웨어 공장의 개념도 진화했다. 즉, 클라우드 네이티브 환경으로 가는 과정이 소프트웨어 현대화의 중요한 한 축이라고 볼 수 있다. 이 과정에서 국방부 및 미국 연방정부의 고민이 소프트웨어 현대화 전략으로 구체화 되며, 이를 실현하기 위한 다양한 실행 구조, 거버넌스 체계 정립의 중간 결과물이 플랫폼 원, 그리고 클라우드 원이다.
여기서 언급되고 있는 ‘강화된 컨테이너’도 클라우드 네이티브를 향한 국방부의 여정에서 중요한 의미를 지니고 있다. 또한, 주요 클라우드 벤더들이 모두 호스팅 서비스에 참여하고 있다는 사실도 함께 주목해야 한다. 궁극적으로는 ‘강화된 컨테이너’가 클라우드 벤더에 관계 없는 워크로드 호환성의 핵심 요소가 될 것으로 판단된다. 쿠버네티스 기반의 컨테이너 오케스트레이션 과정에서 제기될 수 있는 보안 이슈도 ‘강화된 컨테이너’를 통해 일부 해결하고 있는 것으로 보인다. 물론 제로 트러스트 모델 기반의 보안도 함께 적용될 것이다.
현재 국방부 차원에서 이런 서비스들을 제공하는 것이 플랫폼 원, 그리고 이와 연계된 클라우드 호스팅 서비스가 클라우드 원이다. 이번엔 국방부 소프트웨어 생태계 개요를 간략히 훑어보고 추후 플랫폼 원에 대해 좀 더 상세히 살펴봄으로써 우리나라 국방부의 클라우드 전환에 필요한 시사점을 찾을 수 있을 것으로 기대한다.
[divide style=”2″]
[box type=”note”]
본 글은 한국지능정보사회진흥원의 지원을 받아 작성되었으며, 디지털서비스 이용지원시스템에 동시 게재합니다.
[/box]