2020.12.29

"릴리즈 관리는 끝" 클라우드 개발 팀이 기능 플래그를 써야 하는 이유

Andrew C. Oliver | InfoWorld
이제 폭포수형 개발 주기로 작업하는 개발자는 거의 없다. 폭포수형은 여러 가지 기능을 하나로 묶은 주요 출시 버전을 6개월 전에 미리 계획하고 테스트와 QA를 거쳐 최종적으로 프로덕션에 배포하는 엄격한 방식이지만 큰 효과가 없었다. 폭포수형은 좋은 노래가 나올 때마다 신곡을 스트리밍 형태로 발표하는 것과 달리 레코드형 정규 앨범을 내는 것에 가깝다.

클라우드 기업의 개발 팀도 개별 기능을 작업해 매달 여러 번 배포한다. 하루에도 여러 번 배포하는 팀도 있다. 이들 부서가 ‘히트 기능’을 빠르게 만들어내는데 집중하면서, 이제 기능 플래그를 사용해 활성화된 기능은 무엇이고 위치는 어디인지, 대상은 누구인지 관리하는 부서가 점점 늘어나고 있다. 기능 플래그의 적극적 사용 사례를 자세히 알아보자.
 

기능 플래그란?

그렇다면 기능 플래그란 무엇일까? 데브옵스 툴 전문업체 클라우드비스(CloudBees)의 소프트웨어 배포 자동화 담당 부사장 짐 슈차트는 “기능 플래그는 개발자의 코드 작성 역사와 함께 해온 사실상 if 문과 다름없다. 따라서 새로운 것이 아니라 제어할 수 있는 방식으로 구성돼있다”라고 말했다. 

이어, “기능 플래그를 사용하면 출시에서 배포를 분리할 수 있다는 것이 핵심이다. 따라서 코드에 기능 플래그가 없는 세상에서는 ‘프로덕션에 배포했고, 고객에게 릴리즈했다’가 똑같은 일이다”라고 설명했다. 

새로운 기능을 출시할 때, 모든 사용자가 동시에 기능을 받는 것을 원하지 않을 수도 있다. 먼저 적은 수의 사용자에게 배포하면 기능을 세상에 공개하기 전에 제대로 작동하는지 확인할 수 있다. 최적화 소프트웨어 업체 옵티마이즐리(Optimizely)의 CTO 로렌스 브루뮬러는 “프로덕션 테스트에 큰 움직임이 있다. 그 어떤 것도 프로덕션과 같지는 않기 때문이다. 프로덕션과 매우 유사한 환경을 구축하려면 많은 노력이 필요하며, 결코 제대로 구현할 수 없다”라고 말했다. 

많이 사용되는 클라우드 앱에서는 사용자가 기능과 상호작용하는 방식에 대한 데이터를 수집할 수 있다. 예를 들어 에어비앤비는 집을 빌려주는 호스트를 위한 새로운 실적 보고 도구를 출시할 때, 누가 이 도구를 사용하는지 확인하고 이전 도구와 비교할 수 있다. 사용자가 이전 버전 또는 새 버전의 구성요소와 더 많이 상호작용하는지 분석하는 것은 본질적으로 A/B 테스트이며, 마케팅 전문가는 옛날부터 콘텐츠에 사용해 왔다. 

기능 플래그의 또 다른 용도는 사용권한 부여다. 런치다클리의 선임 제품 마케팅 관리자 알리아 어브드에 따르면, 영업 팀 또는 지원 팀이 고객이 겪는 문제를 다룰 때나 다른 계층으로 업그레이드할 때, 여기에 맞는 특정 기능을 제공할 수 있다. 즉 지원 담당자가 플래그를 전환해 소프트웨어의 ‘프로’나 ‘엔터프라이즈’ 버전으로 변경할 수 있다.
 

기능 플래그 관리와 유지 관리

기능 플래그의 가장 큰 문제는 코드에 남아서 소위 ‘기술적 부채(Technical Debt)’를 남길 수 있다는 것이다. 스플릿(Split)의 개발자 대변인 탈리아 나시는 “기능 플래그 유지관리는 수명 주기를 따르며, ‘생성, 구현, 출시, 삭제의 4 단계가 있다’”고 말했다. 기본적으로 팀에는 기능 플래그가 삭제되는 시기와 플래그 책임자에 대한 정책이 필요하다. 나시는 소유권을 정하는 것이 기능 플래그 위생에 중요하다고 제안했다. 

기술 연구 및 분석 업체 기가옴(Gigaom)의 연구 담당 부사장 존 콜린스는 “현재 도구는 무한히 복잡한 작업을 감당할 수 없다. 문제는 B 테스트에서 멈추지 않고, ABCD 테스트를 하고 싶다는 것이다. 간단하게 끝나는 것은 없다. 요즘에 나온 많은 도구는, 무리하게 사용하지 않는 한 훌륭하다. 복잡성이 한 번 발생하면, 도구로는 대처할 수 없다”라고 말했다. 

많은 클라우드 기반 기업은 자체 사용자 지정 기능 플래그 키트를 개발한 다음, 나중에 다루기 힘들어지면 제품이나 서비스로 이동한다. 모든 공급업체 제품에는 널리 사용되는 언어를 위한 SDK가 있다. 대부분의 SDK는 오픈소스다. ‘if문’과 달리 SDK는 기능 플래그 플랫폼의 모니터링과 관리 기능에 연결된다. 일부 기능 플래그 제품은 애플리케이션이 볼륨 처리를 시작할 때까지 저렴하거나 무료 ‘스타터’ 티어를 두고 있다. 
 

주요 제품은 무엇일까?

기능 플래그 분야의 주요 공급업체는 클라우드비스와 런치다클리, 옵터마이즐리, 스플릿이다. 이들의 역사와 초점이 제품을 차별화한다. 

클라우드비스는 거의 10년 동안 젠킨스(Jenkins)와 지속적 통합에 참여해왔다. 기능 플래그 지원도 이 사업의 산물이다. 클라우드비스는 개발자 집중과 보안 중심을 주요 차별화 요소로 보고있다. 짐 슈차트는 “보안 모델의 대부분은 사용자 데이터를 거의 받지 못한다는 사실에 기초한다. 최소한의 데이터에 의존한다. 모든 것이 로컬에서 처리되므로, 속도 이점이 크지만 보안 이점도 뛰어나다”라고 설명했다. 

런치다클리(LaunchDarkly)는 기능 플래그 구현을 가장 잘 하는 업체로 꼽힌다. 이들은 핵심 차별화 요소로 기능 플래그에 대한 개발자와 제품에 초점을 맞추고 있다. 어브드는 “우리는 정말로 개발자에 집중한다. 그리고 제품 팀이 기능 플래그를 어떻게 사용할 수 있는지 살펴보기 시작했다. 많은 경쟁업체가 범용 목적에 단 하나의 툴을 제공하고 있다”라고 말했다. 

옵터마이즐리는 비전문 사용자를 위한 A/B 테스트와 실험에 중점을 두고 시작했다. 브루뮬러는 “우리는 오랜 시간 동안 A/B 테스트 실험을 해왔고, 시작했다는 점에서 진정한 강점이 나왔다고 생각한다”라고 말했다. 하지만 이것을 초기에 해낸 것이 기업이 옵터마이즐리를 선택하는 유일한 이유는 아니다. 옵터마이즐리는 또한 통계 패키지를 통합하고 데이터 과학자 각각이 쓰는 도구에 맞는 데이터를 추출할 수 있도록 한다. 

스플릿 역시 다른 도구와의 통합뿐만 아니라 개발자 중심이 중요하다고 생각한다. 나시는 “수많은 SDK를 보유하고 있으며, SDK 사용법에 대한 튜토리얼도 모두 제공한다”라고 말했다. 스플릿은 또한 분석 기능의 우수함을 강조했다. 
 

기능 관리의 다음 단계

기능 플래그와 관련 도구는 ‘릴리즈 관리’에서 ‘기능 관리’로의 전반적인 전환의 일부일 뿐이다. 기본적으로 이것은 소프트웨어 개발의 본질이 변하고 있다는 신호다. 마이크로서비스 아키텍처가 모놀리식 소프트웨어 개발 관행을 이어받았기 때문에, 제공과 배포가 이러한 변화와 일치하는 것은 당연하다. 

기가옴의 존 콜린스는 기능 관리 접근방식은 프로젝트 관리 마인드가 아니라 제품 관리 마인드에서 기능과 기능 제공을 고려한다고 말한다. 

콜린스에 따르면, “기능 관리가 해야할 일과 가치 흐름 관리가 이미 하는 일 간에는 큰 공통점이 있다. 파이프라인을 통해 사물의 흐름을 식별하는 것이다. 예를 들어, IBM의 어반코드 벨로서티(UrbanCode Velocity)를 보면 정말 멋진 그래픽이 있고, 작은 원이 통과하며 움직이다가 멈춘다. 그런 다음 왜 멈췄는지, 얼마나 오래 그대로 있는지, 색상이 변하는지 자세히 살펴볼 수 있다. 시각화는 이런 형태로 진행되지만 접근법을 살펴볼 때는 기능이라고 할 수 있는 배포 단위를 관리하는 것만큼 기능을 관리할 필요가 없다. 그러면 데브옵스의 원래 수칙 중 하나인 처리량에 대해서만 고민하면 된다. 

이런 형태의 기능 개발 효과는 전체 개발과 릴리즈 엔지니어링 프로세스를 발전시킬 수 있다. 버전 숫자대로 릴리즈를 계획하는 대신, 기능이 별도의 작업 스트림으로 프로덕션에 배포되고 준비되는 대로 배포된다. 여기서부터 사용자에게 배포되고 ‘테스트’된다. 

이러한 과정은 가격과 개발 우선 순위에 영향을 미칠 수 있다. 사용자에게 서비스 또는 애플리케이션 구독을 획일적인 전체로 판매하는 대신, 특정 기능을 판매할 수 있다. 잘 팔리는 기능이 우선순위가 되며, 사용자가 외면하는 기능은 추기 투가 기간 후에는 사라질 뿐이다. 재차 강조하지만, 앨범(릴리즈)가 아닌 개별 곡(기능)에 대해 이야기하는 것이다.  editor@itworld.co.kr 


2020.12.29

"릴리즈 관리는 끝" 클라우드 개발 팀이 기능 플래그를 써야 하는 이유

Andrew C. Oliver | InfoWorld
이제 폭포수형 개발 주기로 작업하는 개발자는 거의 없다. 폭포수형은 여러 가지 기능을 하나로 묶은 주요 출시 버전을 6개월 전에 미리 계획하고 테스트와 QA를 거쳐 최종적으로 프로덕션에 배포하는 엄격한 방식이지만 큰 효과가 없었다. 폭포수형은 좋은 노래가 나올 때마다 신곡을 스트리밍 형태로 발표하는 것과 달리 레코드형 정규 앨범을 내는 것에 가깝다.

클라우드 기업의 개발 팀도 개별 기능을 작업해 매달 여러 번 배포한다. 하루에도 여러 번 배포하는 팀도 있다. 이들 부서가 ‘히트 기능’을 빠르게 만들어내는데 집중하면서, 이제 기능 플래그를 사용해 활성화된 기능은 무엇이고 위치는 어디인지, 대상은 누구인지 관리하는 부서가 점점 늘어나고 있다. 기능 플래그의 적극적 사용 사례를 자세히 알아보자.
 

기능 플래그란?

그렇다면 기능 플래그란 무엇일까? 데브옵스 툴 전문업체 클라우드비스(CloudBees)의 소프트웨어 배포 자동화 담당 부사장 짐 슈차트는 “기능 플래그는 개발자의 코드 작성 역사와 함께 해온 사실상 if 문과 다름없다. 따라서 새로운 것이 아니라 제어할 수 있는 방식으로 구성돼있다”라고 말했다. 

이어, “기능 플래그를 사용하면 출시에서 배포를 분리할 수 있다는 것이 핵심이다. 따라서 코드에 기능 플래그가 없는 세상에서는 ‘프로덕션에 배포했고, 고객에게 릴리즈했다’가 똑같은 일이다”라고 설명했다. 

새로운 기능을 출시할 때, 모든 사용자가 동시에 기능을 받는 것을 원하지 않을 수도 있다. 먼저 적은 수의 사용자에게 배포하면 기능을 세상에 공개하기 전에 제대로 작동하는지 확인할 수 있다. 최적화 소프트웨어 업체 옵티마이즐리(Optimizely)의 CTO 로렌스 브루뮬러는 “프로덕션 테스트에 큰 움직임이 있다. 그 어떤 것도 프로덕션과 같지는 않기 때문이다. 프로덕션과 매우 유사한 환경을 구축하려면 많은 노력이 필요하며, 결코 제대로 구현할 수 없다”라고 말했다. 

많이 사용되는 클라우드 앱에서는 사용자가 기능과 상호작용하는 방식에 대한 데이터를 수집할 수 있다. 예를 들어 에어비앤비는 집을 빌려주는 호스트를 위한 새로운 실적 보고 도구를 출시할 때, 누가 이 도구를 사용하는지 확인하고 이전 도구와 비교할 수 있다. 사용자가 이전 버전 또는 새 버전의 구성요소와 더 많이 상호작용하는지 분석하는 것은 본질적으로 A/B 테스트이며, 마케팅 전문가는 옛날부터 콘텐츠에 사용해 왔다. 

기능 플래그의 또 다른 용도는 사용권한 부여다. 런치다클리의 선임 제품 마케팅 관리자 알리아 어브드에 따르면, 영업 팀 또는 지원 팀이 고객이 겪는 문제를 다룰 때나 다른 계층으로 업그레이드할 때, 여기에 맞는 특정 기능을 제공할 수 있다. 즉 지원 담당자가 플래그를 전환해 소프트웨어의 ‘프로’나 ‘엔터프라이즈’ 버전으로 변경할 수 있다.
 

기능 플래그 관리와 유지 관리

기능 플래그의 가장 큰 문제는 코드에 남아서 소위 ‘기술적 부채(Technical Debt)’를 남길 수 있다는 것이다. 스플릿(Split)의 개발자 대변인 탈리아 나시는 “기능 플래그 유지관리는 수명 주기를 따르며, ‘생성, 구현, 출시, 삭제의 4 단계가 있다’”고 말했다. 기본적으로 팀에는 기능 플래그가 삭제되는 시기와 플래그 책임자에 대한 정책이 필요하다. 나시는 소유권을 정하는 것이 기능 플래그 위생에 중요하다고 제안했다. 

기술 연구 및 분석 업체 기가옴(Gigaom)의 연구 담당 부사장 존 콜린스는 “현재 도구는 무한히 복잡한 작업을 감당할 수 없다. 문제는 B 테스트에서 멈추지 않고, ABCD 테스트를 하고 싶다는 것이다. 간단하게 끝나는 것은 없다. 요즘에 나온 많은 도구는, 무리하게 사용하지 않는 한 훌륭하다. 복잡성이 한 번 발생하면, 도구로는 대처할 수 없다”라고 말했다. 

많은 클라우드 기반 기업은 자체 사용자 지정 기능 플래그 키트를 개발한 다음, 나중에 다루기 힘들어지면 제품이나 서비스로 이동한다. 모든 공급업체 제품에는 널리 사용되는 언어를 위한 SDK가 있다. 대부분의 SDK는 오픈소스다. ‘if문’과 달리 SDK는 기능 플래그 플랫폼의 모니터링과 관리 기능에 연결된다. 일부 기능 플래그 제품은 애플리케이션이 볼륨 처리를 시작할 때까지 저렴하거나 무료 ‘스타터’ 티어를 두고 있다. 
 

주요 제품은 무엇일까?

기능 플래그 분야의 주요 공급업체는 클라우드비스와 런치다클리, 옵터마이즐리, 스플릿이다. 이들의 역사와 초점이 제품을 차별화한다. 

클라우드비스는 거의 10년 동안 젠킨스(Jenkins)와 지속적 통합에 참여해왔다. 기능 플래그 지원도 이 사업의 산물이다. 클라우드비스는 개발자 집중과 보안 중심을 주요 차별화 요소로 보고있다. 짐 슈차트는 “보안 모델의 대부분은 사용자 데이터를 거의 받지 못한다는 사실에 기초한다. 최소한의 데이터에 의존한다. 모든 것이 로컬에서 처리되므로, 속도 이점이 크지만 보안 이점도 뛰어나다”라고 설명했다. 

런치다클리(LaunchDarkly)는 기능 플래그 구현을 가장 잘 하는 업체로 꼽힌다. 이들은 핵심 차별화 요소로 기능 플래그에 대한 개발자와 제품에 초점을 맞추고 있다. 어브드는 “우리는 정말로 개발자에 집중한다. 그리고 제품 팀이 기능 플래그를 어떻게 사용할 수 있는지 살펴보기 시작했다. 많은 경쟁업체가 범용 목적에 단 하나의 툴을 제공하고 있다”라고 말했다. 

옵터마이즐리는 비전문 사용자를 위한 A/B 테스트와 실험에 중점을 두고 시작했다. 브루뮬러는 “우리는 오랜 시간 동안 A/B 테스트 실험을 해왔고, 시작했다는 점에서 진정한 강점이 나왔다고 생각한다”라고 말했다. 하지만 이것을 초기에 해낸 것이 기업이 옵터마이즐리를 선택하는 유일한 이유는 아니다. 옵터마이즐리는 또한 통계 패키지를 통합하고 데이터 과학자 각각이 쓰는 도구에 맞는 데이터를 추출할 수 있도록 한다. 

스플릿 역시 다른 도구와의 통합뿐만 아니라 개발자 중심이 중요하다고 생각한다. 나시는 “수많은 SDK를 보유하고 있으며, SDK 사용법에 대한 튜토리얼도 모두 제공한다”라고 말했다. 스플릿은 또한 분석 기능의 우수함을 강조했다. 
 

기능 관리의 다음 단계

기능 플래그와 관련 도구는 ‘릴리즈 관리’에서 ‘기능 관리’로의 전반적인 전환의 일부일 뿐이다. 기본적으로 이것은 소프트웨어 개발의 본질이 변하고 있다는 신호다. 마이크로서비스 아키텍처가 모놀리식 소프트웨어 개발 관행을 이어받았기 때문에, 제공과 배포가 이러한 변화와 일치하는 것은 당연하다. 

기가옴의 존 콜린스는 기능 관리 접근방식은 프로젝트 관리 마인드가 아니라 제품 관리 마인드에서 기능과 기능 제공을 고려한다고 말한다. 

콜린스에 따르면, “기능 관리가 해야할 일과 가치 흐름 관리가 이미 하는 일 간에는 큰 공통점이 있다. 파이프라인을 통해 사물의 흐름을 식별하는 것이다. 예를 들어, IBM의 어반코드 벨로서티(UrbanCode Velocity)를 보면 정말 멋진 그래픽이 있고, 작은 원이 통과하며 움직이다가 멈춘다. 그런 다음 왜 멈췄는지, 얼마나 오래 그대로 있는지, 색상이 변하는지 자세히 살펴볼 수 있다. 시각화는 이런 형태로 진행되지만 접근법을 살펴볼 때는 기능이라고 할 수 있는 배포 단위를 관리하는 것만큼 기능을 관리할 필요가 없다. 그러면 데브옵스의 원래 수칙 중 하나인 처리량에 대해서만 고민하면 된다. 

이런 형태의 기능 개발 효과는 전체 개발과 릴리즈 엔지니어링 프로세스를 발전시킬 수 있다. 버전 숫자대로 릴리즈를 계획하는 대신, 기능이 별도의 작업 스트림으로 프로덕션에 배포되고 준비되는 대로 배포된다. 여기서부터 사용자에게 배포되고 ‘테스트’된다. 

이러한 과정은 가격과 개발 우선 순위에 영향을 미칠 수 있다. 사용자에게 서비스 또는 애플리케이션 구독을 획일적인 전체로 판매하는 대신, 특정 기능을 판매할 수 있다. 잘 팔리는 기능이 우선순위가 되며, 사용자가 외면하는 기능은 추기 투가 기간 후에는 사라질 뿐이다. 재차 강조하지만, 앨범(릴리즈)가 아닌 개별 곡(기능)에 대해 이야기하는 것이다.  editor@itworld.co.kr 


X