IT/IT 기초 지식

DevOps란? (데브옵스의 이해,등장)

728x90
반응형

DevOps란 개발과 운영 팀간의 지속적인 커뮤니케이션, 협업, 통합을 의미한다. DevOps는 왜 등장하게 된 것일까?

예전에는 역할별로 팀이 나뉘어 졌다. 하드웨어를 관리하는 팀은 운영팀(Ops), 소프트웨어를 개발하는 팀은 개발팀(Dev)라 불렀다.

  • 개발팀 : 애플리케이션 개발하여 운영팀에게 전달한다.
  • 인프라운영팀 : 애플리케이션을 어떻게 배포하고 운영할 것인지 결정한다. 서버를 랙에 설치하거나 네트워크 케이블을 설정하는 등, 하드웨어를 물리적으로 설치하는 일을 수작업으로 하였다.

오늘날에는 조직에서 데이터센터를 직접 운영하는 대신에 AWS, Azure, GCP 같은 클라우드 서비스를 사용하기 시작했다. 수많은 운영팀들이 하드웨어에 많은 돈과 노력을 투자하는 대신 Chef(셰프), Puppet(퍼핏), Terraform(테라폼) , Docker(도커) 같은 도구를 사용하여 소프트웨어 작업에 더 많은 시간을 들이고 있다.

→ 시스템관리자가 서버를 설치하고 네트워크 케이블 설치 작업을 하는 대신에 코드를 작성하는 것이다.

 

결과적으로 이제는 개발팀과 운영팀 모두 소프트웨어 작업에 대부분의 시간을 소비하며 두 팀의 구분이 모호해지고 있다. 여전히 애플리케이션 코드를 담당하는 별도의 개발팀과 운영코드를 담당하는 운영팀을 따로 두는 것이 나을 수도 있지만 예전에 비해 개발팀과 운영팀이 보다 밀접하게 작업해야 한다는 것은 분명해졌다. DevOps가 태동하기 시작한 것이다.

DevOps는 일련의 프로세스, 아이디어, 테크닉 이다. 사람마다 데브옵스를 다르게 정의 할 수 있지만 테라폼 업앤러닝 책에서는 다음과 같이 정의한다.

'DevOps는 소프트웨어를 효율적으로 전달하는 프로세스다.'

이제는 프로젝트를 병합하느라 죽을 고생을 하는 대신, 지속적으로 코드를 통합하고 항상 배포 가능한 상태로 유지한다. 한 달에 한번 코드를 배포하는 대신 하루에도 수십 번 배포할 수 있고, 심지어 코드 변경내용을 커밋(commit)할 때마다 배포할수도 있다.

데브옵스에는 4가지 핵심 가치가 존재한다. 바로 문화(Culture), 자동화(Automation), 측정(Measurement), 공유(Sharing) 이다.

자동화에 대해서 설명하자면, 소프트웨어 배포를 최대한 자동화 하는 것이다. 따라서 웹페이지를 클릭하거나 셀 명령을 수동으로 실행하는 방법 대신 코드를 통해 인프라를 관리 할 수 있다. 이를 '코드형 인프라'라고 한다.

 

*참고

테라폼 업앤러닝

728x90
728x90