이 글은 IDG의 아티클을 전재하여 제공합니다.
[원문보기] : https://www.itworld.co.kr/insight/227099?csidxe3e61e94ce07725bccc34cdd2b86b33
‘혁신가의 딜레마’라는 책에도 나오듯이, 오늘날의 성공적인 조직은 번성하기 위해 계속해서 새로운 프로세스를 도입해야 하는 과제에 직면해 있습니다. 소프트웨어 개발에 의존해 경쟁 우위를 유지하는 현대의 조직이 끊임없는 변화의 필요성에 대처하려면 개발팀의 사고방식을 바꿔야 합니다. 프라이스라인(Priceline)에서 이 말은 새롭고 혁신적인 기술 도입, 그리고 서비스를 구축하고 배포하는 방법에 있어서 완전히 새로운 사고방식을 의미합니다. 프라이스라인은 월별 방문자 수가 수백만 명에 달하는 세계에서 가장 인기 있는 여행 사이트 중 하나입니다.
경쟁이 극히 치열한 시장에서 성공을 지속하려면 완전히 새로운 서비스 제공 전략을 지원해야 하며, 이를 위해서는 기술 리더십의 치밀한 사고와 행동이 필요합니다. 프라이스라인의 유능한 기술팀은 여행업계의 기술 발전을 선도하고자 12요소(12 Factor) 앱 개발, 모노리포(Monorepo), 트렁크 기반 개발, 종속성 관리를 채택했습니다. 그러나 여전히 할 일이 많이 남아 있습니다.
컨테이너 기반 마이크로서비스를 생각해 보면, 불과 몇 년 전과 비교해도 기업의 컨테이너 및 쿠버네티스 도입은 크게 늘었습니다. 2020 클라우드 네이티브 컴퓨팅 재단(Cloud Native Computing Foundation, CNCF) 설문에 따르면, 프로덕션에서의 컨테이너 사용은 2016년 이후 300% 증가했습니다. 현재 프라이스라인 전체 제품 플랫폼의 80%는 구글 클라우드에서 컨테이너와 쿠버네티스를 기반으로 실행됩니다.
대형 IT 업체의 상당수는 이런 애플리케이션 개발 패러다임의 변화가 주는 혜택을 활용하고 있지만(새로운 과제도 발견), 많은 기업이 이제 막 이 여정을 시작하는 단계에 있습니다. 하지만 지금의 경제 상황을 보면 증가하는 소프트웨어 개발 수요를 충당할 만큼의 데브옵스와 SRE 전문가를 채용할 수는 없을 것입니다. CTO는 애플리케이션의 탄력성과 확장성을 높일 방법뿐만 아니라 개발자에게 수작업의 부담을 지나치게 전가하지 않으면서 더 많은 책임을 맡길 방법도 고민해야 합니다.
프라이스라인은 모든 애플리케이션을 개발자 생산성에 초점을 둔 하나의 원칙을 중심으로 현대화할 계획을 수립했습니다. 이 계획의 방법과 이유를 살펴봅니다.
프라이스라인은 설립한 지 20년이 넘은 기업이지만 많은 면에서 여전히 스타트업처럼 운영됩니다. 프라이스라인에 지속적인 발전은 선택이 아닌 필수입니다. 고객의 행동과 요구는 자주 바뀌고 경쟁사들은 이와 같은 요구를 충족할 새로운 방법을 끊임없이 찾습니다. 결과적으로 개발자는 제품, 데이터, SDLC, 인프라 등 모든 분야에 걸쳐 매일 혁신하면서, 동시에 기술 부채와 소프트웨어 안정성, 보안도 관리합니다. 막중한 일입니다.
선언적 형식, 자동화, 이식성을 중심으로 하는 12요소 방법론은 개발팀이 소프트웨어를 인프라 종속성으로부터 분리하고 하나의 클라우드나 데이터센터, 소프트웨어 또는 서비스 업체에 종속되지 않도록 함으로써 혁신을 유지할 수 있게 해줍니다. 이는 기업에 유리하도록 인프라 환경을 운영하면서 필요에 따라 프라이빗 또는 퍼블릭 클라우드로 워크로드를 옮길 수 있음을 의미합니다.
12요소 방법론에는 빌드 프로세스에서의 엄격한 종속성 관리가 필요합니다. 여기에는 컨테이너에서 실행되는 것, 운영체제나 코드의 변화가 이들 컨테이너에 미치는 영향이 포함됩니다. 빌드 프로세스의 초기에 선언적으로 코드를 확인하고 인스턴스화할 수 있는 역량을 통해 제공 프로세스의 초기에 변화를 검증할 수 있고, 이는 더 많은 혁신, 그리고 프로덕션 환경에서 문제와 씨름하는 데서 발생하는 오버헤드의 감소로 이어집니다.
빌드와 실행 프로세스의 분리는 자동화된 기능 테스트와 지속적 배포를 수행해 기술팀의 빠른 속도를 더 확고하게 해줍니다. 이는 개발자 생산성 및 만족도를 높여줄 뿐만 아니라 고객 대면 기능을 더 신속하게 테스트하고 개선할 수 있게 해주며, 궁극적으로 여행객과 비즈니스를 위한 더 나은 결과로 이어집니다.
프라이스라인은 현대화 계획을 통해 데이터와 플랫폼을 혁신하고 고객과 비즈니스에 혜택을 제공할 수 있게 됐습니다. 실시간으로 데이터를 스트리밍할 수 있게 되면서 플랫폼 고객의 활동과 행동을 더 신속하게 파악하고 대응할 수 있는 역량을 갖췄습니다. 이는 여행객을 위한 추천 장소를 더 개인화하고 새로운 기능을 더 신속하게 실험하는 데 도움이 됩니다.
소프트웨어 설계 프로세스에서 모노리포 아키텍처를 사용하면서 일관성 있는 고객 경험을 보장할 수 있게 됐습니다. 예를 들어, 이제 체크아웃 구성요소를 한 번 구축한 다음 여러 팀에서 활용할 수 있으므로 여러 가지의 체크아웃 구성요소로 인해 최종 사용자의 경험이 혼란스럽게 될 일이 없습니다.
기술팀은 이와 같은 공통 구성요소에 자체 기능을 추가할 수 있으며, 플랫폼팀은 완전한 시야를 확보하고 있습니다. 따라서 체크아웃 경험에 어떤 기능이 추가되든 소프트웨어 플랫폼이나 성능 지표에 부정적인 영향을 미치지 않습니다. 또한 모노리포 아키텍처는 업그레이드의 예측 가능성을 더 높여주고, 종속성 관리를 설계 및 개발 프로세스로 옮겨 하향 환경에서 문제에 대처할 필요가 없도록 합니다.
12요소 방법론, 컨테이너 기반 마이크로서비스, 모노리포 접근 방식에 집중하면서 프라이스라인 제품 플랫폼의 기반이 되는 소프트웨어 아키텍처도 발전했습니다. 프라이스라인이 지금까지 얻은 혜택은 다음과 같습니다.
아쉽게도 현재 12요소 방법론 또는 모노리포 아키텍처와 같은 전략을 쉽게 활용할 수 있게 해주는 툴은 극소수이며, 소프트웨어 개발 영역은 혁신적인 클라우드 네이티브 개발 방식이 본격적으로 사용될 수 있는 환경에 아직 이르지 못했습니다.
현재 가장 앞선 기술 조직만이 이 문제를 전담할 인력과 예산을 두고 있습니다. 숙련된 엔지니어를 풍부하게 보유한 프라이스라인은 이와 같은 유형의 문제 해결을 대규모로 수행하기 위한 데브X(DevX) 또는 플랫폼팀을 구성할 수 있지만, 여기에도 고객을 위한 새로운 기능 개발과 같은 기회비용은 따릅니다. 대부분 기업, 그리고 스타트업과 중소기업, 디지털 트랜스포메이션을 진행 중인 레거시 기업에는 이와 같은 인적 여유가 없습니다.
미래에는 모든 기업이 대규모 인력을 채용하지 않고도 이런 기능을 활용할 수 있는 선언적인 차세대 CI/CD 툴이 나올 것입니다. 프라이스라인은 이 분야의 혁신적인 스타트업과 손을 잡았습니다. Slim.AI와 같은 스타트업은 클라우드 네이티브의 한계를 넓히고 있으며, 대규모 현대 소프트웨어 개발 방식을 앞으로 바꿔 놓을 가능성이 높습니다. 이런 새로운 파트너십은 기술 중심 기업이 혁신을 촉진하기 위한 필수적인 요소입니다.
2021 CNCF 설문에 따르면, 컨테이너를 사용하고 배포하는 데 있어 가장 큰 과제는 “복잡성”과 “개발팀의 문화적 변화”입니다. 프라이스라인은 기술 스택뿐만 아니라 기술 사고방식도 성공적으로 현대화했습니다. 그러나 범위는 계속 확장되고 이 작업에 마무리란 없습니다. 개발자 생산성에 대한 초점은 고객 경험을 개선하고 비즈니스를 위한 더 나은 성과를 구축하는 데 있어 앞으로도 계속 중심적 역할을 할 것입니다.
▶ 해당 콘텐츠는 저작권법에 의하여 보호받는 저작물로 기고자에게 저작권이 있습니다.
▶ 해당 콘텐츠는 사전 동의 없이 2차 가공 및 영리적인 이용을 금하고 있습니다.
Priceline의 CTO