2019.07.22

데이터 과학과 머신러닝에 데브옵스 적용하기

Isaac Sacolick | InfoWorld
데이터 과학자의 업무와 요구사항 중 일부는 소프트웨어 개발자와 동일하다. 데이터 과학자와 소프트웨어 엔지니어 모두 목적을 이루기 위해 코드를 계획, 설계, 코딩, 반복, 테스트하고 배포한다. 소프트웨어 개발자에게는 이 과정이 곧 맞춤형 코딩 애플리케이션과 마이크로서비스를 의미하는 경우가 많다. 데이터 과학자는 데이터옵스와의 데이터 통합을 구현하고 분석 모델을 통해 예측을 하고 최종 사용자가 결과를 살펴보는 데 도움이 되는 대시보드를 만든다.
 
ⓒ GettyImagesBank

자동화 및 운영 엔지니어와의 협업을 추진하는 데브옵스 엔지니어는 범위를 확대해서 데이터 과학자에게도 서비스를 제공해야 한다.

여러 데이터 과학팀을 둔 대규모 조직이라면 분석 모델 개발, 테스트, 배포를 위한 복합적인 툴을 제공하는 알테릭스 애널리틱스(Alteryx Analytics), 데이터브릭스(Databricks), 다타이쿠(Dataiku)와 같은 데이터 과학 플랫폼에 투자할 수 있다. 이와 같은 툴은 데이터옵스 및 분석 역량, 통합 옵션, 거버넌스, 비즈니스 사용자를 위한 툴, 배포 옵션 등을 서로 경쟁적으로 제공한다.
 

데이터 과학자를 위한 데브옵스 요구사항

조직에서 데이터 과학 플랫폼에 투자할 준비가 되지 않았거나 소규모 데이터 과학팀에서 기본적인 운영 기능만 필요한 경우도 있다. 여기에 해당된다면 플랫폼을 선택해 사용하는 것보다 데이터 과학팀에 데브옵스 모범사례를 적용하는 편이 더 나을 수 있다.

이를 위해 소프트웨어 개발팀에 사용되는 많은 애자일 및 데브옵스 패러다임을 몇 가지 중요한 조정 과정을 거쳐 데이터 과학 워크플로우에 적용할 수 있다. 데이터 과학자의 프로세스는 개발자 워크플로우와 비슷하지만, 다음과 같은 몇 가지 중요한 차이점도 있다.

-    데이터 과학 작업에는 데이터 집합과 모델, 구성과 관련해서 훨씬 더 많은 실험이 필요하다. 대부분의 소프트웨어 개발 릴리스 관리 방식에 사용되는 간단한 계획, 빌드, 테스트, 배포 주기와는 다르다.
    
-    모델 개발과 테스트에서 균일한 컴퓨팅 스택을 활용하지 않을 수 있다. 일부 모델은 간단한 파이썬 스크립트로 구현 가능한 반면, 아파치 스파크를 비롯한 다른 빅데이터 플랫폼을 활용하는 모델도 있다.
-    
-    컴퓨팅 요건은 모델이 개발되는 도중에도 크게 달라질 수 있다. 대규모 데이터 집합을 대상으로 모델의 6개 변형을 테스트하려는 데이터 과학자에게 필요한 컴퓨팅 및 스토리지는 비교적 작은 데이터 집합을 대상으로 한 번에 하나의 모델만 테스트하는 과학자에 비해 훨씬 더 많을 것이다.
    
-    프로덕션으로 배포되는 모델에는 지속적인 유지관리도 필요하지만, 여기에는 단순히 기반 코드를 변경하는 이상의 변동성이 따른다. 업데이트된 데이터 집합을 사용해 모델을 재교육하고 운영 매개변수를 재구성하고 인프라를 조정하거나 이와 같은 작업으로 인해 아예 새로운 배포가 필요한 경우도 있다.
 
-    데이터 파이프라인을 모니터링하려면 더욱 정교한 검증이 필요한 경우가 많다. 데이터옵스 프로세스가 실행 중이고 모델이 데이터를 처리 중임을 아는 것만으로는 충분하지 않다. 이러한 툴이 일단 프로덕션에 투입되면 처리량, 오류 상태, 데이터 소스 이상 현상을 비롯해 다운스트림 결과에 영향을 미칠 수 있는 여러 상태를 모니터링해야 한다.
-    
-    성공적인 데이터 과학자가 되기 위해서는 개발자, 엔지니어, 비즈니스 리더와 파트너가 돼야 하는데, 이는 애플리케이션 개발에서 개발자와 운영자 간의 협업을 촉진하는 것보다 더 어려운 일이 될 수 있다. 또한 데이터 과학자 및 팀 중에는 IT 조직에 보고하지 않는 경우가 많으므로 표준과 거버넌스를 통제하기가 더 어렵다.
    
데이터 과학자를 지원하기 위해서는 데브옵스 방법론과 솔루션을 도입하기 전에 앞서 언급한 부분을 포함한 여러 차이점을 이해해야 한다. 처음 시작하기 위한 단계는 다음과 같다.
 

데이터 과학자의 경험이 시작점

애플리케이션 개발자와 마찬가지로 데이터 과학자는 문제 해결에 가장 큰 관심을 두고 있으며, 툴 구성에 적극적으로 개입하고 인프라 구성에는 별 흥미가 없는 경우가 많다. 그러나 소프트웨어 개발자와 달리 개발 워크플로우를 완전히 구성할 만한 경험과 백그라운드를 갖추지 못한 경우도 있다. 이 공백은 데브옵스 엔지니어에게는 데이터 과학자를 고객’으로 응대하면서 이들의 요구사항 정의를 돕고 솔루션 제공의 소유권을 확보할 기회가 된다.

과정은 데이터 과학자의 인프라부터 시작할 수 있다. 데이터 과학자가 파이썬, R, 또는 다른 언어로 코딩하는가? 데이터 과학자가 분석과 모델링을 위해 사용하는 툴은 무엇인가(주피터, 태블로, 아파치 카프카, NLTK)? 데이터 소스, 학습된 데이터 저장, 모델 배포 용도로 각각 사용하는 데이터베이스와 클라우드는 무엇인가?

여기서부터 데브옵스 엔지니어는 개발 환경을 선택하고 표준화하는 과정을 도울 수 있다. 컴퓨팅 디바이스에서 전통적인 방식으로 또는 가상화된 데스크톱에서 가능하다. 어느 방식을 택하든 데이터 과학자와 협력할 때는 이들의 애플리케이션과 구성을 개발 환경에 반영하는 것이 중요한 첫 단계다.

그 이후 데브옵스 엔지니어는 데이터 과학자가 코드를 저장하는 위치, 코드의 버전 관리 방법, 배포를 위한 코드 패키징 방법을 살펴야 한다. 데이터 과학자에 따라 깃과 같은 버전 제어 툴을 사용하는 데 익숙하지 않은 경우도 있고, 코드 리포지토리를 사용하지만 통합 과정을 자동화하지 않은 경우도 있다. 지속적 통합 구현은 데브옵스 엔지니어가 데이터 과학자를 도울 수 있는 두 번째 영역이다. 지속적 통합을 통해 새로운 알고리즘 테스트에 수반되는 일부 수작업을 제거하고 표준을 정립할 수 있기 때문이다.

한 가지 유의해야 할 사항은 일부 SaaS 및 엔터프라이즈 데이터 플랫폼에는 버전 제어가 내장돼 있는데, 이 경우 코드용으로 설계된 버전 제어 시스템과는 기본적으로 연결이 되지 않는다는 점이다. 이러한 플랫폼에는 통합과 배포를 트리거하는 API 또는 CI/CD 파이프라인을 모조하는 다른 메커니즘이 있는 경우가 많다.
 

배포 파이프라인 정의 및 인프라 구성

개발 환경과 지속적 통합이 표준화되면 그 다음 데브옵스 엔지니어가 할 일은 테스트 및 프로덕션 환경 자동화의 다른 측면을 살펴보는 것이다. 젠킨스와 같은 툴을 사용해서 배포 파이프라인을 도입하고 셰프, 퍼펫, 앤서블 등의 툴을 사용해서 인프라를 코드로 구성하는 방법이 있다.

데이터 과학 환경은 도커와 같은 컨테이너, 쿠버네티스와 같은 컨테이너 관리 및 오케스트레이션 툴이 아주 잘 맞는 분야이기도 하다. 데이터 과학 환경은 하나의 통합 환경으로 배포 및 관리해야 하는 데이터옵스, 데이터 관리, 데이터 모델링 플랫폼의 조합인 경우가 많기 때문이다.

데이터 통합, 머신러닝 학습 및 기타 데이터 분석 작업의 규모와 빈도를 이해하는 것이 중요하다. 데이터 과학자의 워크로드를 보면 부분적인 데이터 집합을 대상으로 한 빈번한 신규 모델 테스트, 프로덕션 머신러닝 모델의 주기적인 재학습, 새로운 분석 모델 학습을 위한 특수한 작업 등 여러 종류가 혼합되어 있으므로 데브옵스 엔지니어도 여러가지 패턴을 발견할 가능성이 높다. 이러한 워크로드 유형을 파악하면 데브옵스 엔지니어가 다양한 컴퓨팅 및 스토리지 요구사항을 충족하도록 클라우드 인프라를 구성, 확장하기 위한 최선의 방법을 결정하는 데 도움이 될 것이다.
 

비즈니스 성과를 위한 삼자 협력

데브옵스 구현의 가장 중요한 측면은 서로 상충하는 목표를 가진 개발자와 엔지니어 간의 원활한 협업이다. 개발자는 애플리케이션 변경을 더 빈번하게 릴리스해야 하고, 엔지니어는 프로덕션 워크플로우의 성능과 신뢰성을 책임진다. 개발자와 엔지니어가 자동화를 위해 협력하고 구성을 표준화하면 두 가지 목표를 모두 달성할 수 있다.

데이터 과학자는 이 협업 구도에서 제삼자다. 이들은 경영진과 비즈니스 관리자에게 분석 결과를 제공해야 하는 경우가 많다. 또한 모델을 개발해서 개발자가 애플리케이션에서 그 모델을 사용하기를 요구하기도 한다. 데이터 과학자는 고도의 가변 용량 인프라가 필요하며, 새로운 플랫폼과 라이브러리, 인프라 구성을 실험할 때는 개발자보다 요건이 더 까다로울 수도 있다.

데이터 과학자는 성공적인 분석을 제공하려면 개발자 및 엔지니어와의 파트너 관계가 필요하다. 이들 그룹이 데이터 과학자의 목표를 이해하고 명확한 목적을 정의하고 데브옵스 구현에 상호 협력해야 비즈니스 결과를 도출할 수 있다.  editor@itworld.co.kr


2019.07.22

데이터 과학과 머신러닝에 데브옵스 적용하기

Isaac Sacolick | InfoWorld
데이터 과학자의 업무와 요구사항 중 일부는 소프트웨어 개발자와 동일하다. 데이터 과학자와 소프트웨어 엔지니어 모두 목적을 이루기 위해 코드를 계획, 설계, 코딩, 반복, 테스트하고 배포한다. 소프트웨어 개발자에게는 이 과정이 곧 맞춤형 코딩 애플리케이션과 마이크로서비스를 의미하는 경우가 많다. 데이터 과학자는 데이터옵스와의 데이터 통합을 구현하고 분석 모델을 통해 예측을 하고 최종 사용자가 결과를 살펴보는 데 도움이 되는 대시보드를 만든다.
 
ⓒ GettyImagesBank

자동화 및 운영 엔지니어와의 협업을 추진하는 데브옵스 엔지니어는 범위를 확대해서 데이터 과학자에게도 서비스를 제공해야 한다.

여러 데이터 과학팀을 둔 대규모 조직이라면 분석 모델 개발, 테스트, 배포를 위한 복합적인 툴을 제공하는 알테릭스 애널리틱스(Alteryx Analytics), 데이터브릭스(Databricks), 다타이쿠(Dataiku)와 같은 데이터 과학 플랫폼에 투자할 수 있다. 이와 같은 툴은 데이터옵스 및 분석 역량, 통합 옵션, 거버넌스, 비즈니스 사용자를 위한 툴, 배포 옵션 등을 서로 경쟁적으로 제공한다.
 

데이터 과학자를 위한 데브옵스 요구사항

조직에서 데이터 과학 플랫폼에 투자할 준비가 되지 않았거나 소규모 데이터 과학팀에서 기본적인 운영 기능만 필요한 경우도 있다. 여기에 해당된다면 플랫폼을 선택해 사용하는 것보다 데이터 과학팀에 데브옵스 모범사례를 적용하는 편이 더 나을 수 있다.

이를 위해 소프트웨어 개발팀에 사용되는 많은 애자일 및 데브옵스 패러다임을 몇 가지 중요한 조정 과정을 거쳐 데이터 과학 워크플로우에 적용할 수 있다. 데이터 과학자의 프로세스는 개발자 워크플로우와 비슷하지만, 다음과 같은 몇 가지 중요한 차이점도 있다.

-    데이터 과학 작업에는 데이터 집합과 모델, 구성과 관련해서 훨씬 더 많은 실험이 필요하다. 대부분의 소프트웨어 개발 릴리스 관리 방식에 사용되는 간단한 계획, 빌드, 테스트, 배포 주기와는 다르다.
    
-    모델 개발과 테스트에서 균일한 컴퓨팅 스택을 활용하지 않을 수 있다. 일부 모델은 간단한 파이썬 스크립트로 구현 가능한 반면, 아파치 스파크를 비롯한 다른 빅데이터 플랫폼을 활용하는 모델도 있다.
-    
-    컴퓨팅 요건은 모델이 개발되는 도중에도 크게 달라질 수 있다. 대규모 데이터 집합을 대상으로 모델의 6개 변형을 테스트하려는 데이터 과학자에게 필요한 컴퓨팅 및 스토리지는 비교적 작은 데이터 집합을 대상으로 한 번에 하나의 모델만 테스트하는 과학자에 비해 훨씬 더 많을 것이다.
    
-    프로덕션으로 배포되는 모델에는 지속적인 유지관리도 필요하지만, 여기에는 단순히 기반 코드를 변경하는 이상의 변동성이 따른다. 업데이트된 데이터 집합을 사용해 모델을 재교육하고 운영 매개변수를 재구성하고 인프라를 조정하거나 이와 같은 작업으로 인해 아예 새로운 배포가 필요한 경우도 있다.
 
-    데이터 파이프라인을 모니터링하려면 더욱 정교한 검증이 필요한 경우가 많다. 데이터옵스 프로세스가 실행 중이고 모델이 데이터를 처리 중임을 아는 것만으로는 충분하지 않다. 이러한 툴이 일단 프로덕션에 투입되면 처리량, 오류 상태, 데이터 소스 이상 현상을 비롯해 다운스트림 결과에 영향을 미칠 수 있는 여러 상태를 모니터링해야 한다.
-    
-    성공적인 데이터 과학자가 되기 위해서는 개발자, 엔지니어, 비즈니스 리더와 파트너가 돼야 하는데, 이는 애플리케이션 개발에서 개발자와 운영자 간의 협업을 촉진하는 것보다 더 어려운 일이 될 수 있다. 또한 데이터 과학자 및 팀 중에는 IT 조직에 보고하지 않는 경우가 많으므로 표준과 거버넌스를 통제하기가 더 어렵다.
    
데이터 과학자를 지원하기 위해서는 데브옵스 방법론과 솔루션을 도입하기 전에 앞서 언급한 부분을 포함한 여러 차이점을 이해해야 한다. 처음 시작하기 위한 단계는 다음과 같다.
 

데이터 과학자의 경험이 시작점

애플리케이션 개발자와 마찬가지로 데이터 과학자는 문제 해결에 가장 큰 관심을 두고 있으며, 툴 구성에 적극적으로 개입하고 인프라 구성에는 별 흥미가 없는 경우가 많다. 그러나 소프트웨어 개발자와 달리 개발 워크플로우를 완전히 구성할 만한 경험과 백그라운드를 갖추지 못한 경우도 있다. 이 공백은 데브옵스 엔지니어에게는 데이터 과학자를 고객’으로 응대하면서 이들의 요구사항 정의를 돕고 솔루션 제공의 소유권을 확보할 기회가 된다.

과정은 데이터 과학자의 인프라부터 시작할 수 있다. 데이터 과학자가 파이썬, R, 또는 다른 언어로 코딩하는가? 데이터 과학자가 분석과 모델링을 위해 사용하는 툴은 무엇인가(주피터, 태블로, 아파치 카프카, NLTK)? 데이터 소스, 학습된 데이터 저장, 모델 배포 용도로 각각 사용하는 데이터베이스와 클라우드는 무엇인가?

여기서부터 데브옵스 엔지니어는 개발 환경을 선택하고 표준화하는 과정을 도울 수 있다. 컴퓨팅 디바이스에서 전통적인 방식으로 또는 가상화된 데스크톱에서 가능하다. 어느 방식을 택하든 데이터 과학자와 협력할 때는 이들의 애플리케이션과 구성을 개발 환경에 반영하는 것이 중요한 첫 단계다.

그 이후 데브옵스 엔지니어는 데이터 과학자가 코드를 저장하는 위치, 코드의 버전 관리 방법, 배포를 위한 코드 패키징 방법을 살펴야 한다. 데이터 과학자에 따라 깃과 같은 버전 제어 툴을 사용하는 데 익숙하지 않은 경우도 있고, 코드 리포지토리를 사용하지만 통합 과정을 자동화하지 않은 경우도 있다. 지속적 통합 구현은 데브옵스 엔지니어가 데이터 과학자를 도울 수 있는 두 번째 영역이다. 지속적 통합을 통해 새로운 알고리즘 테스트에 수반되는 일부 수작업을 제거하고 표준을 정립할 수 있기 때문이다.

한 가지 유의해야 할 사항은 일부 SaaS 및 엔터프라이즈 데이터 플랫폼에는 버전 제어가 내장돼 있는데, 이 경우 코드용으로 설계된 버전 제어 시스템과는 기본적으로 연결이 되지 않는다는 점이다. 이러한 플랫폼에는 통합과 배포를 트리거하는 API 또는 CI/CD 파이프라인을 모조하는 다른 메커니즘이 있는 경우가 많다.
 

배포 파이프라인 정의 및 인프라 구성

개발 환경과 지속적 통합이 표준화되면 그 다음 데브옵스 엔지니어가 할 일은 테스트 및 프로덕션 환경 자동화의 다른 측면을 살펴보는 것이다. 젠킨스와 같은 툴을 사용해서 배포 파이프라인을 도입하고 셰프, 퍼펫, 앤서블 등의 툴을 사용해서 인프라를 코드로 구성하는 방법이 있다.

데이터 과학 환경은 도커와 같은 컨테이너, 쿠버네티스와 같은 컨테이너 관리 및 오케스트레이션 툴이 아주 잘 맞는 분야이기도 하다. 데이터 과학 환경은 하나의 통합 환경으로 배포 및 관리해야 하는 데이터옵스, 데이터 관리, 데이터 모델링 플랫폼의 조합인 경우가 많기 때문이다.

데이터 통합, 머신러닝 학습 및 기타 데이터 분석 작업의 규모와 빈도를 이해하는 것이 중요하다. 데이터 과학자의 워크로드를 보면 부분적인 데이터 집합을 대상으로 한 빈번한 신규 모델 테스트, 프로덕션 머신러닝 모델의 주기적인 재학습, 새로운 분석 모델 학습을 위한 특수한 작업 등 여러 종류가 혼합되어 있으므로 데브옵스 엔지니어도 여러가지 패턴을 발견할 가능성이 높다. 이러한 워크로드 유형을 파악하면 데브옵스 엔지니어가 다양한 컴퓨팅 및 스토리지 요구사항을 충족하도록 클라우드 인프라를 구성, 확장하기 위한 최선의 방법을 결정하는 데 도움이 될 것이다.
 

비즈니스 성과를 위한 삼자 협력

데브옵스 구현의 가장 중요한 측면은 서로 상충하는 목표를 가진 개발자와 엔지니어 간의 원활한 협업이다. 개발자는 애플리케이션 변경을 더 빈번하게 릴리스해야 하고, 엔지니어는 프로덕션 워크플로우의 성능과 신뢰성을 책임진다. 개발자와 엔지니어가 자동화를 위해 협력하고 구성을 표준화하면 두 가지 목표를 모두 달성할 수 있다.

데이터 과학자는 이 협업 구도에서 제삼자다. 이들은 경영진과 비즈니스 관리자에게 분석 결과를 제공해야 하는 경우가 많다. 또한 모델을 개발해서 개발자가 애플리케이션에서 그 모델을 사용하기를 요구하기도 한다. 데이터 과학자는 고도의 가변 용량 인프라가 필요하며, 새로운 플랫폼과 라이브러리, 인프라 구성을 실험할 때는 개발자보다 요건이 더 까다로울 수도 있다.

데이터 과학자는 성공적인 분석을 제공하려면 개발자 및 엔지니어와의 파트너 관계가 필요하다. 이들 그룹이 데이터 과학자의 목표를 이해하고 명확한 목적을 정의하고 데브옵스 구현에 상호 협력해야 비즈니스 결과를 도출할 수 있다.  editor@itworld.co.kr


X