본문 바로가기

IT Knowledge/Methodology (방법론)

[DevOps] 데브옵스란?

데브옵스(DevOps)란?


개요

  데브옵스(DevOps)가 무엇인지 알아보고, 개발환경에 어떠한 영향을 끼치는지 알아본다.

(출처: https://aws.amazon.com/ko/devops/what-is-devops/)

 

목차

 

소개

 1. 데브옵스(DevOps) 

데브옵스(DevOps) 정의

  데브옵스(DevOps)란 "Development(개발) + Operation(운영)을 결합해 탄생한 용어로, 시스템 개발자와 운영을 담당하는 전문가 사이의 소통(Communication), 협업(Collaboration), 통합(Integration), 자동화(Automation)을 바탕으로 애플리케이션 개발과 고객에게 제공되는 서비스를 빠른속도로 제공될 수 있도록 조직의 역량을 향상시키는 소프트웨어 개발론" 이다.

 

데브옵스(DevOps) 이점
  • 속도 향상: Micro Service Architecture(단일 애플리케이션을 작은 서비스의 집합으로 구축하며, 각 프로세스는 자체 프로세스에서 실행되고 잘 정의된 인터페이스를 통해 다른 서비스와 연결되는 설계기법) 및 CD(Continuous Delivery)등을 사용하여 팀에서 서비스를 주도적으로 운영하여 수정된 코드들을 더 빠르게 릴리스 할 수 있다.
  • 신속한 제공: CI(Continuous Integrity) 및 CD(Continuous Delivery)등을 통해 빌드에서 배포까지 자동화시켜 릴리스의 빈도와 속도를 개선하여 제품을 더 빠르게 업데이트 할 수 있다. 새로운 기능 및 버그 수정속도가 빨라 고객의 요구에 더 빠르게 대응할 수 있게 된다.
  • 안정성: CI(Continuous Integrity) 및 CD(Continuous Delivery)등을 통해 변경사항을 안전하게 작동하는지 업데이트마다 테스트 해주어 애플리케이션에 안전성 및 인프라 변경의 품질의 보장해준다.
  • 확장성: 규모에 따라 인프라와 개발 프로세스를 운영관리하여 주며 자동화와 일관성의 지원 이점을 살려 복잡한 시스템이나 변화하는 시스템을 효율적으로 관리할 수 있도록 해준다. 또한 코드형 인프라(버전 관리 및 CI(Continuous Integrity)과 같은 코드와 소프트웨어 개발 기술을 사용하여 인프라를 예측하고 관리하는 방식으로 클라우드의 API 중심 모델 사용을 통해 개발자와 시스템 관리자가 수동으로 리소스를 설정 및 구성할 필요 없이 프로그래밍 방식으로 큰 규모로 인프라와 상호 작용하도록 해주는 방식)등을 사용하여, 개발, 테스트, 프로덕션 환경을 반복 가능하고 효율적인 방식으로 관리 할 수 있도록 하여준다.
  • 협업 강화: 개발팀과 운영팀은 서로 긴밀하게 협력하며, 책임을 강조하는 가치를 통하여 효과적인 팀을 구축한다.
  • 보안 강화: 자동화된 규정 준수 정책 및 세분화된 제어 및 구성 관리 기술을 통하여 제어를 유지하고, 규정을 준수하며 작업을 진행해 나아감으로써, 보안을 지켜 나아갈 수 있도록 하여준다.

 

데브옵스(DevOps) 필요성
  • 소프트웨어는 사회의 상당부분을 차지하고 있다. 집 혹은 회사에서 사용하는 컴퓨터에 존재하는 프로그램뿐만 아니라, 우리가 자주 이용하는 서비스인 은행, 쇼핑 등 많과 같이 많은 부분들과 밀접하게 연관되어 있다. 따라서 소프트웨어는 이제 사회의 일부이고 위의 서비스들 처럼 운영방식또한 재정립하여 운영의 효율성을 증가시켜야 한다. 따라서 소프트웨어를 구축하는 방법의 하나인 데브옵스(DevOps)를 통해 소프트웨어의 빠르고 안정적인 개발과 최종 사용자에게 빠르고 안정적인 제공을 해줄 수 있게 된다.
  • 데브옵스(DevOps)는 이전에 개발과 운영으로 분리되어 있던 장벽을 무너뜨려 엔지니어에게 두가지의 자질을 모두 요구하며 개발자의 생산성과 안정성을 높혀주고 잦은 소통을 통하여 효율성을 높이고 최종 사용자인 고객에게 제공되는 서비스의 품질을 높힐 수 있게 된다. 또한 개발과 운영을 모두 책임져야 하므로, 개개인에게 주인의식을 함양시킬 수 있게 된다.

 

 2. 데브옵스(DevOps) vs 애자일(Agile) 

애자일(Agile) 이전

RAD(Rapid Application Development)

SCRUM 여러 기능 마다 각 소규모 팀을 꾸려 각 팀은 스프린트(sprint)라는 업무주기를 반복하며 프로세스를 점진적으로 진행해 나아가는 방식
XP 10~12개의 구체적인 실천방법을 정의하여 소규모 개발팀에 이점이 있는 기법으로, 개발 문서 보다는 소스코드를, 조직적인 개발의 움직임 보다는 개개인의 책임과 용기에 중점을 두어 고객이 원하는 양질의 소프트웨어를 빠른 시간안에 전달하는 것을 목표로 하며, '테스팅'이라는 방식을 통해 새로운 코딩시마다 테스트 코드를 같이 작성하여, 테스트를 기반으로 프로젝트를 진행해 나아가는 것이 특징인 방식

특징

  • 검증된 모듈이 존재해야하고, 요구사항을 완전히 이해하고 명확하게 프로젝트의 범위를 설정시 신속하게 개발 가능
  • 책임감 없는 팀원이 존재시 위험해지고, 요구사항의 변화가 심해 기술적인 위험이 높아 고성능 요구 시스템에 부적합

 

DevOps vs Agile

DevOps

  • 소프트웨어의 개발 및 유지관리에 필요한 모든 참여자가 협업을 통해 새 제품의 릴리스 혹은 업데이트등과 같은 작업에 효율성을 만들어낸다.
  • 안정성 및 일관성에 초점을 두어 프로세스를 개선하고 간소화시켜 효율성의 최대화, 자동화 증가등에 초점을 둔다.
  • Deployment, Operation, Quality Assurance 의 교집합으로 팀들은 소프트웨어의 개발과 제공에서 결속 및 협업한다.

Agile

  • 요구사항이 끊임없이 변하는 현실에서 생산성을 유지하고, 릴리스를 추진하도록 설계되어 작동하는 프로토타입 및 빌드를 만들고, 사용자의 요구사항에 우선순위를 둔다.
  • Fail-fast 사고방식은 적응성과 고객 요구 사항 및 기대치와 보조를 맞추는 것에 초점을 두고, 기능은 개별 사용자, 해당 사용자의 요구 사항 및 이유에 초점을 둔다.
  • 개발 팀의 생산성 및 당면한 프로젝트 완료에 대한 개발 팀의 진행 상황에 관한 것으로, 개발은 반복적인 스프린트로 완료되며, 각 릴리스의 소프트웨어 제공, 배포 또는 지속적인 유지 관리는 다양한 팀에서 관리한다.

 

DevOps + Agile
  • DevOps와 Agile은 소프트웨어의 성능을 향상시킬 수 있는 구조 및 프레임워크를 제공한다. 따라서 두 방법론을 모두 적절하게 이용한다면 상당히 효율적이다. 예를 들어 Agile을 통하여 해야할 작업을 정리 하고, DevOps를 통하여 소프트웨어를 빠르고 안전하게 최종 사용자에게 제공하며 최적화된 개발환경을 만들 수 있게 된다.

 

참고사이트

1. https://aws.amazon.com/ko/devops/what-is-devops/?nc1=h_lshttps://aws.amazon.com/ko/devops/what-is-devops/?nc1=h_ls 

 

DevOps란 무엇입니까? – Amazon Web Services(AWS)

소프트웨어와 인터넷은 쇼핑에서 엔터테인먼트 그리고 뱅킹에 이르기까지 전 세계와 산업을 변화시켰습니다. 이제 소프트웨어는 비즈니스를 지원하는 것에 그치지 않고, 비즈니스의 모든 부분

aws.amazon.com

2. https://azure.microsoft.com/ko-kr/overview/devops-vs-agile/

 

DevOps와 Agile 비교 | Microsoft Azure

DevOps와 Agile은 유사한 두 개발 방식입니다. 각각의 이점, 차이점 및 두 방식을 비즈니스에 적용하는 방법에 대해 자세히 알아보세요.

azure.microsoft.com