'Devops'에 해당되는 글 3건

  1. 2018.04.03 CI/CD란 무엇인가?
  2. 2018.04.03 ansible이란 무엇인가?
  3. 2018.04.03 devops란 무엇인가?
posted by 귀염둥이채원 2018. 4. 3. 01:37

지속적인 통합 (Continuous Integration)이란?

소프트웨어 공학에서, 지속적 통합(continuous integration, CI)은 지속적으로 퀄리티 컨트롤을 적용하는 프로세스를 실행하는 것이다. - 작은 단위의 작업, 빈번한 적용. 지속적인 통합은 모든 개발을 완료한 뒤에 퀄리티 컨트롤을 적용하는 고전적인 방법을 대체하는 방법으로서 소프트웨어의 질적 향상과 소프트웨어를 배포하는데 걸리는 시간을 줄이는데 초점이 맞추어져 있다. 대표적인 CI 툴에는 젠킨스(Jenkins)가 있다.



지속적인 배포 (Continuous Delivery)란?

CD(지속적 배포)란 자동화를 통해 릴리스 가능한 소프트웨어를 짧은 기간 반복하여 생산하는 것으로, 팀은 이를 이용하여 효과적인 소프트웨어를 더 자주 출시할 수 있습니다. 최근 중요성이 강조되고 있는 지속적 통합, 기본 제공 테스트, 지속적인 모니터링, 분석 피드백은 모두 소프트웨어 업계의 전반적인 트렌드인 응답성 향상을 향하고 있습니다. 조직은 이러한 변화가 의미하는 바가 무엇인지를 분석하여 언제나 CD(지속적 배포)를 달성해야 합니다.



지속적으로 테스트를 실행하고 테스트가 품질을 보증한다고 신뢰할 수 있다면 언제, 어디서든지 소프트웨어를 릴리스할 수 있습니다. 지속적 배포는 항상 배포만을 의미하는 것이 아니라, 코드가 언제나 릴리스 가능하도록 준비된 상태임을 보장하는 약속이자 철학입니다.



'Devops' 카테고리의 다른 글

ansible이란 무엇인가?  (0) 2018.04.03
devops란 무엇인가?  (0) 2018.04.03
posted by 귀염둥이채원 2018. 4. 3. 01:30

# Ansible이란

Ansible은 Python으로 구현된 오픈소스 IT 자동화 도구이다. 서버 설정, 소프트웨어 배포, 복수의 호스트를 상호 협력해서 동작시키는 오케스트레이션 등 다양한 태스크를 자동화 하는 도구이다. 비슷한 도구로 Chef, Puppet이 있다.


# Ansible의 특징

1. Agent-less

Chef나 Puppet 등은 태스크를 실행하는 호스트에 에이전트를 설치해야 한다 (에이전트 설치 자동화는 가능). Ansible은 이러한 에이전트 설치 없이 SSH 접속이 가능하면 대부분의 환경에서 실행 가능하다.


2. 이해하기 쉽다

SSH로 호스트에 접속해서 스크립트를 실행하는 단순한 아키텍처이다. 또한 실행 태스크를 Playbook이라고하는 YAML 형식의 파일로 기술한다.


3. 멱등성

같은 조작을 몇 번이고 수행하더라도 같은 결과가 얻어지는 성질을 멱등성이라 한다.

서버의 최종 모습을 모듈로 지정해서 현재 상황에서 최종 모습으로 상태를 변화시키도록 설계되어 있다.


# Playbook

Ansible에서 대상 호스트에 대한 태스크를 기술하는 YAML파일. 복수의 모듈을 모아서 실행할 때 사용.


# Ansible 이용 환경

Ansible의 명령을 실행하는 실행 호스트와 태스크를 실행하는 대상 호스트가 있다.

실행 호스트에는 Ansible을 설치해야한다.

대상 호스트에는 Ansible을 설치할 필요가 없고, SSH로 접속 할 수 있어야 하고 Python 2.x(2.4이상. 2.5 이하에서는 python-simplejson이 필요)이 설치되어 있어야 한다.


'Devops' 카테고리의 다른 글

CI/CD란 무엇인가?  (0) 2018.04.03
devops란 무엇인가?  (0) 2018.04.03
posted by 귀염둥이채원 2018. 4. 3. 01:28

소프트웨어 개발 방법론의 하나로, 개발(development)과 운영(operation)을 결합한 혼성어이다. 개발 담당자와 운영 담당자가 연계하여 협력하는 개발 방법론을 말한다.

시스템 개발자와 운영을 담당하는 정보기술 전문가 사이의 소통, 협업, 통합 및 자동화를 강조하는 소프트웨어 개발 방법론을 말한다. 정확한 정의가 존재하지 않는 추상적 개념에 해당하지만, 소프트웨어 제품이나 서비스를 알맞은 시기에 출시하기 위해서 개발과 운영이 상호의존적으로 대응해야 한다는 의미로 통용된다.


이러한 데브옵스의 개념은 애자일 소프트웨어(agile software) 개발과 지속적 통합(continuous integration) 등의 개념과도 관련이 있다. 애자일 소프트웨어 개발 방법은 계획과 문서를 기반으로 개발 모형이나 모델에 따라 앞을 예측하며 개발하는 것이 아니라, 실질적인 코딩을 기반으로 일정한 주기에 따라 계속적으로 프로토타입을 형성하고 필요한 요구 사항을 파악하며 이에 따라 즉시 수정사항을 적용하여 결과적으로 하나의 큰 소프트웨어를 개발하는 적응형(adaptive style) 개발 방법이다.


지속적 통합이란 개발 당시의 코드(baseline code)와 개발 완료 후의 차이가 극심하여 통합시 다양한 변화와 의존성 문제 해결에 개발 시간보다 더 많은 시간이 소요되는 문제를 해결하기 위해, 통합 작업을 초기부터 계속적으로 자주 수행하여 지속적으로 소프트웨어의 품질 제어를 적용하고자 하는 것이다.


애자일 소프트웨어 개발에서는 작은 변경을 자주 출시하기 때문에 개발 담당자와 운영 담당자의 협업이 긴밀해야 하며, 이러한 개발 방법의 보급과 함께 데브옵스에 대한 개념도 널리 보편화되었다.


데브옵스라는 용어는 2008년 애자일 컨퍼런스에서 앤드루 클레이 쉐이퍼(Andrew Clay Shafer)와 패트릭 드부와(Patrick Debois)가 "애자일 인프라스트럭처"에 대해 논의하며 처음으로 사용되었다. 이 용어는 그 후 2009년 벨기에에서 열리기 시작한 "데브옵스 데이(DevOps Day)"를 통해 대중화되었다.


데브옵스는 개발 프로세스에 대한 철학이자 이러한 방법론을 실현시키는 플랫폼과 툴셋을 모두 포함하는 개념으로, 데브옵스를 더욱 쉽게 실천하기 위해서 셰프(Chef)나 퍼펫(Puppet)과 같은 인프라 구성관리 자동화 툴을 사용할 수 있다. 이러한 데브옵스 툴을 사용하는 경우 자동화된 테스팅 실시가 가능하며 자동화된 구성관리(CM:Configuration Management)를 통해 서버 설정을 자동화할 수 있기 때문에 투입 리소스를 절감할 수 있는 효과를 가져온다.


'Devops' 카테고리의 다른 글

CI/CD란 무엇인가?  (0) 2018.04.03
ansible이란 무엇인가?  (0) 2018.04.03