2015.12.24

'코드로 인프라 관리하기'··· IAC 방법론 뜬다

Andy Patrizio | CIO
지난 몇 년간 인간의 개입 필요성을 줄여주는 자동화가 IT 분야의 주요 트렌드로 자리잡았다. 가상화는 개발자들이 생산 시스템과 격리된 공간에서 작업을 할 수 있는 가상 서버 공간을 탄생시켰다. 이제 20분 정도면 VM웨어(VMware)와 하이퍼-V(Hyper-V) 같은 하이퍼바이저를 구현할 수 있다.

Credit: CERN

 

그러나 가상 작업공간 프로비저닝이 늘 간단한 것은 아니다. 많은 시간이 필요한 프로세스가 요구될 수 있으며, 이를 구현할 전문성을 가진 사람이 없을 수도 있다. 개발자가 개발 작업을 위한 가상 환경을 요청한 후, VM 준비까지 2주를 기다려야 할 수 있다. 이런 상황에 IAC(Infrastructure as Code)가 필요하다.

IAC는 유연성이 떨어지는 스크립팅이나 수동 프로세스 대신 코드를 이용해 시스템을 자동으로 구축, 관리, 프로비저닝 하는 IT 인프라 프로비저닝 프로세스의 일종이다. 이에 따라 IAC를 때론 '프로그래밍이 가능한 인프라'라고 부르기도 한다. 당연한 말이지만 코드가 탄탄하면 프로세스를 앞당기고 인적 실수를 없앨 수 있다.

쏘우트워크스 유럽(ThoughtWorks Europe)의 지속적 전달(Continuous Delivery) 책임자인 키프 모리스는 "IAC는 클라우드, 마이크로서비스, 지속적 전달 시대에 IT 인프라를 관리할 수 있는 방법이다. IT 인프라를 소프트웨어처럼 다룬다는 기본 개념을 갖고 있다. 이는 손쉽고 빠르게, 안전하면서도 믿을 수 있게 변화를 추구하는데 도움을 준다"라고 설명했다.

코드를 이용함으로써 가상 머신이나 콘테이너를 설정 및 구성하는 프로세스를 자동화하면서 이를 반복적으로 빠르게 되풀이 하는 방안을 만들어낼 수 있다. 예를 들어 애플리케이션을 개발하는 가상 환경을 구축하고 싶다면, 동일한 코드를 실행시켜 VM 생성 프로세스를 반복할 수 있다.

IAC는 IT 프로세스를 자동화한다는 점에서 스크립팅과 다르지 않다. 그러나 스크립트에는 단점이 있다. 정적인(고정된) 단계를 자동화할 때 사용하기 때문에 복잡한 단계에 필요한 유연성이 없다는 단점이다. 

반면 IAC는 스크립트와 같은 환경에 다용도의 코드를 사용할 수 있다는 장점이 있다. IAC는 생성할 인프라의 종류를 명령한다. 다시 말해, 수동으로 서버 팜을 구성할 필요가 없다. IAC가 대신 처리해주기 때문이다.

개발자들을 위해 기술 에반젤리즘 서비스를 제공하는 픽세이트(Fixate.io)의 공동 설립자 겸 데브봅스(DevOps) 애널리스트인 크리스 라일리는 이와 함께 코드가 문서화가 되는 효과도 있다고 설명했다. 그는 "변경 관리화 및 문서화 인프라와 관련된 프로세스 변화이다. 누구나 스크립트를 참조하고, 서버 종류나 노드 종류의 구성을 알 수 있다"라고 말했다.

IAC의 구성 요소
IAC가 제품이 아닌 방법론이라는 점을 유념해야 한다. IAC는 그저 빠르게 가상 환경을 배포할 수 있는 프로세스다.

IAC를 제대로 도입하기 위해서는 3가지 필요하다. 애자일 개발 프로세스, 디봅스 환경, 코드를 쓸 도구들이다. 디봅스와 애자일은 개발을 앞당기고, 개발자들이 자신의 업무를 더 빨리 완수할 수 있도록 만들어준다.

IAC는 속도가 강조되는 방법이기 때문에 애자일이 필수 요소가 된다. 라일리는 "개발 팀이 빠르게 움직이는 것이 중요하다. 개발 팀은 애자일을 이용한 소프트웨어 개발에 새로운 방법을 도입하고 있다. 속도가 빨라지고 있으며, 폭포수 개념이 사라졌다"라고 말했다.

모리스는 "애자일은 변화를 도입하고, 이를 예상했던 일로 처리하고, 긍정적으로 수용하는 것을 중시하는 개념이다. 변화를 문제점으로 봤던 기존 방식과는 차이가 있다”라고 말했다.

그는 이어 “자동화 툴을 이용한다고 해도 '석기 시대'의 방법론으로 인프라를 관리한다면 혜택을 제대로 누릴 수 없다. 테스트 기반의 개발, 지속적인 통합, 지속적인 전달 등 애자일 엔지니어링 기법을 활용하고 있다면 IAC는 보다 신뢰할 수 있고 도움이 되는 방법론일 수 있다"라고 설명했다.

이후 언어를 선택해야 한다. 대부분의 경우 셰프(Chef)나 퍼펫(Puppet) 중 하나를 이용한다. 두 언어 모두 이 기술에 적합하다. 셰프는 디봅스 환경에서 더 빨리 협력할 수 있게 도와주는 언어이고, 퍼펫은 인프라 구축 프로세스를 자동화하는 언어이다.




2015.12.24

'코드로 인프라 관리하기'··· IAC 방법론 뜬다

Andy Patrizio | CIO
지난 몇 년간 인간의 개입 필요성을 줄여주는 자동화가 IT 분야의 주요 트렌드로 자리잡았다. 가상화는 개발자들이 생산 시스템과 격리된 공간에서 작업을 할 수 있는 가상 서버 공간을 탄생시켰다. 이제 20분 정도면 VM웨어(VMware)와 하이퍼-V(Hyper-V) 같은 하이퍼바이저를 구현할 수 있다.

Credit: CERN

 

그러나 가상 작업공간 프로비저닝이 늘 간단한 것은 아니다. 많은 시간이 필요한 프로세스가 요구될 수 있으며, 이를 구현할 전문성을 가진 사람이 없을 수도 있다. 개발자가 개발 작업을 위한 가상 환경을 요청한 후, VM 준비까지 2주를 기다려야 할 수 있다. 이런 상황에 IAC(Infrastructure as Code)가 필요하다.

IAC는 유연성이 떨어지는 스크립팅이나 수동 프로세스 대신 코드를 이용해 시스템을 자동으로 구축, 관리, 프로비저닝 하는 IT 인프라 프로비저닝 프로세스의 일종이다. 이에 따라 IAC를 때론 '프로그래밍이 가능한 인프라'라고 부르기도 한다. 당연한 말이지만 코드가 탄탄하면 프로세스를 앞당기고 인적 실수를 없앨 수 있다.

쏘우트워크스 유럽(ThoughtWorks Europe)의 지속적 전달(Continuous Delivery) 책임자인 키프 모리스는 "IAC는 클라우드, 마이크로서비스, 지속적 전달 시대에 IT 인프라를 관리할 수 있는 방법이다. IT 인프라를 소프트웨어처럼 다룬다는 기본 개념을 갖고 있다. 이는 손쉽고 빠르게, 안전하면서도 믿을 수 있게 변화를 추구하는데 도움을 준다"라고 설명했다.

코드를 이용함으로써 가상 머신이나 콘테이너를 설정 및 구성하는 프로세스를 자동화하면서 이를 반복적으로 빠르게 되풀이 하는 방안을 만들어낼 수 있다. 예를 들어 애플리케이션을 개발하는 가상 환경을 구축하고 싶다면, 동일한 코드를 실행시켜 VM 생성 프로세스를 반복할 수 있다.

IAC는 IT 프로세스를 자동화한다는 점에서 스크립팅과 다르지 않다. 그러나 스크립트에는 단점이 있다. 정적인(고정된) 단계를 자동화할 때 사용하기 때문에 복잡한 단계에 필요한 유연성이 없다는 단점이다. 

반면 IAC는 스크립트와 같은 환경에 다용도의 코드를 사용할 수 있다는 장점이 있다. IAC는 생성할 인프라의 종류를 명령한다. 다시 말해, 수동으로 서버 팜을 구성할 필요가 없다. IAC가 대신 처리해주기 때문이다.

개발자들을 위해 기술 에반젤리즘 서비스를 제공하는 픽세이트(Fixate.io)의 공동 설립자 겸 데브봅스(DevOps) 애널리스트인 크리스 라일리는 이와 함께 코드가 문서화가 되는 효과도 있다고 설명했다. 그는 "변경 관리화 및 문서화 인프라와 관련된 프로세스 변화이다. 누구나 스크립트를 참조하고, 서버 종류나 노드 종류의 구성을 알 수 있다"라고 말했다.

IAC의 구성 요소
IAC가 제품이 아닌 방법론이라는 점을 유념해야 한다. IAC는 그저 빠르게 가상 환경을 배포할 수 있는 프로세스다.

IAC를 제대로 도입하기 위해서는 3가지 필요하다. 애자일 개발 프로세스, 디봅스 환경, 코드를 쓸 도구들이다. 디봅스와 애자일은 개발을 앞당기고, 개발자들이 자신의 업무를 더 빨리 완수할 수 있도록 만들어준다.

IAC는 속도가 강조되는 방법이기 때문에 애자일이 필수 요소가 된다. 라일리는 "개발 팀이 빠르게 움직이는 것이 중요하다. 개발 팀은 애자일을 이용한 소프트웨어 개발에 새로운 방법을 도입하고 있다. 속도가 빨라지고 있으며, 폭포수 개념이 사라졌다"라고 말했다.

모리스는 "애자일은 변화를 도입하고, 이를 예상했던 일로 처리하고, 긍정적으로 수용하는 것을 중시하는 개념이다. 변화를 문제점으로 봤던 기존 방식과는 차이가 있다”라고 말했다.

그는 이어 “자동화 툴을 이용한다고 해도 '석기 시대'의 방법론으로 인프라를 관리한다면 혜택을 제대로 누릴 수 없다. 테스트 기반의 개발, 지속적인 통합, 지속적인 전달 등 애자일 엔지니어링 기법을 활용하고 있다면 IAC는 보다 신뢰할 수 있고 도움이 되는 방법론일 수 있다"라고 설명했다.

이후 언어를 선택해야 한다. 대부분의 경우 셰프(Chef)나 퍼펫(Puppet) 중 하나를 이용한다. 두 언어 모두 이 기술에 적합하다. 셰프는 디봅스 환경에서 더 빨리 협력할 수 있게 도와주는 언어이고, 퍼펫은 인프라 구축 프로세스를 자동화하는 언어이다.


X