
DevOps란 Development와 Operations가 합쳐서 생긴 개발 방법론이고, 전문가 사이의 소통, 협업, 통합 및 자동화를 강조하는 소프트웨어 개발 방법론이다.
DevOps의 사전 정의
- 개발과 운영의 합성어
- 개발자와 정보기술 간의 전문가 간의 소통, 협업 및 통합을 강조하는 개발 환경이나 문화
- 서비스를 빠른 시간에 개발 및 배포하는 것을 목적
- 개발자와 운영자의 소통, 협업 및 통합을 강조하는 문화, 방법론, 프로세스, 도구 모두를 의미
소프트웨어를 개발하기 위해서는 개발자와 시스템을 운영하는 운영자가 필요하다.
- 개발자는 고객의 요구 사하을 빠르게 수용해서 서비스를 개발하고 빠르게 적용하고 확인되길 원한다.
- 운영자는 제공될 서비스가 정확하게 동작하며, 테스트되었고 문제가 없이 안정적으로 동작하길 원한다.
개발팀과 운영팀은 부서 간의 목표하는 바가 서로 다르다.
- 개발팀 : 빠르게 변화하는 경쟁 환경에 대응
- 운영팀 : 고객에게 안정적이고 신뢰할 수 있는 서비스 제공
- 이러한 목표 차이는 성과를 달성하는데 방해가 되며 소프트웨어 서비스의 품질 저하와 비즈니스 경쟁력 악화시키는 요소
데브옵스의 시작이 개발팀과 운영팀 간의 갈등 해소를 위한 것이며 해결을 위해서는 개발팀과 운영팀의 협업과 소통 및 통합, 문화적 개선 등이 수반되어야 한다.
애자일 방법론
- 소프트웨어 개발 방법에 있어 아무런 계획이 없는 개발 방법과 계획이 지나치게 많은 개발 방법들 사이에서 타협점을 찾고자 하는 방법론
- 고전적 개발 방법론은 초기 계획에 너무 의존하며 추가 요구사항 및 변화에 적절한 대응 불가
- 반대로 계획을 수립하지 않고 개발할 경우 앞으로의 일을 예측하기 어려워 효율적이지 않음
- 애자일 방법론은 2, 3번에서 적절한 타협점을 제시하는 방법론
- 다른 방법론과 가장 큰 차이점은 문서 통합이 아닌 실질적인 코드 통합 방법론
- 폭포수 방법론의 해결책으로 여겨짐
애자일 방법론 개발 원칙 12가지
- 최우선 순위 - 가치 있는 소프트웨어를 지속적으로 전달해 고객 만족 최우선
- 개발의 후반부 일지라도 요구사항이 들어오면 환영해라. - 고객의 경쟁력에 도움이 되게 한다.
- 작동하는 소프트웨어를 자주 전달하라. - 2주 - 2달, 더 짧은 기간을 선호해라
- 비즈니스 쪽의 사람과 개발자는 함께 일해야 한다.
- 동기가 부여된 개인을 중심으로 프로젝트를 구성해라
- 정보를 교환하는데 가장 효율적이고 효과적인 방법은 면대면 대화
- 작동하는 소프트웨어가 진척의 주된 척도이다.
- 지속 가능한 개발을 장려한다. 일정한 속도를 계속 유지할 수 있어야 한다.
- 기술적 탁월성과 좋은 설계에 대한 지속적 관심이 민첩성을 높인다.
- 단순성 최고, 즉 안 하는 일의 양을 최대화하는 기술이 필수적
- 최고의 아키텍처, 요구사항, 설계는 스스로 조직된 팀에서 나옴
- 팀이 어떻게 더 효과적일지 행동을 조율하고 조정한다.
DevOps를 사용하면 다음과 같은 효과를 얻을 수 있다!
- 빠르고 정확하게 운영 환경에 코드를 배포할 수 있다.
- 배포 프로세스 단계별로 빠른 피드백 루프를 생성하여 빠르게 피드백을 받을 수 있다.
- 자동화를 통해 보다 빠르고 효과적으로 업무 진행이 가능하다.
- 원하는 기능과 고객의 요구사항을 독립적으로 전달하고 배포할 수 있다.
- 신규 제품이나 기능의 출시와 이에 대한 피드백을 보다 효과적으로 진행할 수 있다.
DevOps의 문화적 구성요소는 4가지로 구분된다.
- 배려와 존중의 환경 구성
- 개발자는 운영자를 존중하고 운영자는 개발자를 존중하는 서로 배려와 존중하는 환경이 필요
- 또한 서로 일을 떠넘기지 않으며 이슈가 발생 시 문제 해결을 위해 서로 도움을 주는 것이 매우 중요하다.
- 자유로운 토론 환경 조성하기
- 문제로부터 숨지 않고 오픈마인드로 커뮤니케이션을 수행하여 개발자와 운영자 간의 자유로운 토론과 대화가 장려되어야 한다.
- 또한 진행되고 있는 일이나 향후 계획을 공유하는 것이 중요하다.
- 필요사항에 대해 협업하는 분위기를 조성하는 것이 중요하다.
- 남 탓하지 않기
- 남 탓을 하지 않고 서로 협력하여 문제를 빠르게 해결할 수 있다.
- 책임은 개발팀과 운영팀 모두에게 필요
- 완료되었다고 해서 책임 회피하지 않기
- 개발팀은 배포되었다고 하여 책임이 끝나지 않으며 개발팀과 운영팀은 서로 개발과 운영에 참여하여 상호 업무에 대한 이해와 협력이 필요하다.
DevOps를 위한 기술적 구성 요소는 네 가지로 정리할 수 있다.
1. 코드 기반 인프라 관리
- 프로그래밍형 인프라라고도 하는 IaC는 인프라 구성을 소프트웨어를 프로그래밍하는 것처럼 처리하는 방식
- 결과적으로 애플리케이션을 작성하는 작업과 애플리케이션이 실행되는 환경을 구현하는 작업을 코드 기반으로 관리할 수 있다.
- 아모전 및 MS, Google 등 대부분의 클라우드 업체는 Iac기반의 인프라 서비스를 제공
2. 버전 관리
- 개발 시간이 지남에 따라 발생되는 소스코드의 변경 사항을 개발팀이 관리하는 데 도움을 주는 소프트웨어 도구로 데이터베이스에 소스코드의 모든 수정 사항을 저장하고 추천한다.
- 모든 개발 프로젝트에서 소스코드는 보호되어야 하는 귀중한 자산
- 개발팀에서 소스코드는 문제 해결을 위한 지식과 이해의 저장소로 개발자들의 노력을 통해 수집되고 정제된다.
- 사람의 실수와 의도하지 않은 결과로부터 소스코드를 보호한다.
3. One-Step 빌드와 배포
- 빌드 작업은 개발팀 내 여러 개발자가 개발한 소스를 버전 관리 시스템을 이용하여 통합하고 통합된 소스를 컴파일/테스트/정적 분석 등을 실시해 실제 동작 가능한 S/W로 변환하는 작업
- 버전 관리 시스템에 있는 소스코드를 가져와 컴파일하여 실행 가능한 하일로 만드는 일련과정을 수행
- 배포 작업은 개발되어 빌드된 파일을 개발 서버 또는 운영서버에 등록하여 신규로 개발되거나 변경된 프로그램을 사용할 수 있게 전달하는 과정
- 배포 자체는 단순한 행위일지 모르지만 중요성은 매우 높은 작업 - 배포 과정에서 장애나 실수는 애플리캐이션의 장애로 연결됨
- 자동화 서비스 CI/CD(Continuous Integration/Continuous Delivery)를 이용한 자동화 시스템
4. 장애 발싱 시 인프라의 빠른 배포
- DevOps 기반의 인프라 환경은 문제 발생 시 기존 인프라를 빠르게 재배포가 가능한 환경으로 제공
- 클라우드 기반 환경에서는 PaaS/IaaS 기반 인프라에서 손쉽게 재구성 및 배포를 제공
* 아마존의 데브옵스 정리 *
https://aws.amazon.com/ko/devops/what-is-devops/
DevOps란 무엇입니까? – Amazon Web Services(AWS)
소프트웨어와 인터넷은 쇼핑에서 엔터테인먼트 그리고 뱅킹에 이르기까지 전 세계와 산업을 변화시켰습니다. 이제 소프트웨어는 비즈니스를 지원하는 것에 그치지 않고, 비즈니스의 모든 부분
aws.amazon.com
'클라우드 > DevOps' 카테고리의 다른 글
DevOps - IaaC(Infra as a Code) (0) | 2021.10.20 |
---|