DevOps is a set of practices that combines software development (Dev) and IT operations (Ops). It aims to shorten the systems development life cycle and provide continuous delivery with high software quality. -위키백과 원문 -
DevOps는 소프트웨어 개발(Dev)과 IT 운영(Ops)의 합성어로 개발과 운영의 경계를 허물고 통합하고자 하는 문화 또는 철학이다. 이를 통해 시스템 개발 수명 주기를 단축하고 높은 소프트웨어 품질을 지속적으로 제공하는 것을 목표로 한다.
DevOps의 개념은 2009년 'O'Relly Velocity Conference의 <하루에 10회 이상 배포하기: Flicker에서 Dev와 Ops의 협업>'에서 탄생했다.
DevOps로 전환하기 위해서는 문화와 사고방식의 변화가 필요하다. 간단하게 말하자면 DevOps는 기존에 사일로에 묶여 있던 개발과 운영이라는 두 팀 간의 장벽이 사라져야 한다. DevOps에서는 두 팀이 함께 작업하여 개발자의 생산성과 운영의 안정성을 모두 최적화할 수 있다. 두 팀은 자주 소통하고, 효율성을 높이고, 고객에게 제공하는 서비스의 품질을 향상하기 위해 최선을 다하는 것을 목표로 한다. DevOps 모델을 사용하는 조직은 어떻게 구성되어 있든, 전체 개발 및 인프라 수명 주기를 스스로의 책임으로 간주하는 팀들로 구성되어야 한다.
사일로: '부서 이기주의'로 의역할 수 있다. 이는 부서와 조직끼리 서로 벽을 쌓고, 중요한 정보를 공유하지 않게 되고, 결국 소통과 통합에 문제가 발생하면서 조직 전체의 효율성이 떨어지고 비용이 증가한다.

소프트웨어와 인터넷은 쇼핑에서 엔터테인먼트 그리고 뱅킹에 이르기까지 전 세계와 산업을 변화시켰다. 이제 소프트웨어는 비즈니스를 지원하는 것을 넘어, 핵심적인 구성 요소가 되었다. 기업은 온라인 서비스 또는 애플리케이션으로 제공되는 소프트웨어를 다양한 디바이스로 고객과 상호 작용한다. 또한, 소프트웨어를 사용하여 물류, 통신, 운영 등의 모든 부분을 혁신함으로써 운영 효율성을 향상시켰다. 이제 기업은 소프트웨어를 구축하고 제공하는 방법을 혁신해야 한다.
DevOps는 개발과 운영을 통합하여 제품 출시 및 조직의 효율성을 끌어올리기 위한 문화이다. DevOps는 방법을 제시하지 않지만, 조직이 소프트웨어 개발과 인프라 관리 프로세스의 자동화 및 간소화를 통해 더 빠르게 혁신할 수 있도록 여러 실천 방법들을 활용할 수 있다.

Continuous Integration
- 개발자간의 코드 충돌을 방지하기 위해 개발단계에서 코드 변경 사항을 수시로 반영하며 품질을 유지한다.
- 정기적인 빌드 및 유닛테스트를 거쳐 공유 리포지터리에 병합된다.
- 자동화된 테스트 과정에서 기존코드와 신규 코드 간의 충돌이 발견되면 이러한 과정을 통해 빠르게 버그 수정이 가능하다.
Continuous Delivery / Continuous Deployment
- CI의 확장된 개발 방식으로, CI를 통과한 코드에 대하여 개발 및 운영 서버에 자동으로 릴리즈 되는 개발 방식이다.
- 이를 통해 운영팀이 보다 빠르고 손쉽게 애플리케이션을 상용에 배포가 가능하다.
- 상용 환경으로 배포할 준비가 된 배포판을 확보하는 것이 목표
MicroService
- 마이크로 서비스 아키텍처는 단일 애플리케이션을 작은 서비스의 집합으로 구축하는 설계 접근 방식이다.
- 애플리케이션이 독립적인 구성 요소로 구축되어 각 애플리케이션 프로세스가 서비스로 실행된다.
- 이러한 서비스는 경량 API를 사용하여 잘 정의된 인터페이스를 통해 통신한다.
- 서비스가 독립적으로 실행되기 때문에 각 서비스 별로 업데이트, 배포 및 확장할 수 있다.

Infrastructure As Code (코드형 인프라, IAC)
IAC는 코드(일반적으로 고수준 스크립팅 또는 프로그래밍 언어)를 사용해서 모든 애플리케이션 또는 서비스를 위한 인프라 설정을 프로그램할 수 있다. 이를 통해 승인된 모든 사용자는 사전 정의되고 반복 가능한, 알려진 프로세스를 실행해서 매번 같은 방식으로, 인간이 아닌 기계의 속도로 IT 인프라를 자동으로 빌드/리빌드할 수 있다.
또한, 소프트웨어 개발자와 프로덕션 엔지니어는 코드를 사용해서 애플리케이션을 빌드할 수 있을 뿐만 아니라, 이 애플리케이션이 실행되는 시스템도 빌드할 수 있다
Monitoring And Logging
조직은 애플리케이션과 인프라에서 생성되는 데이터 및 로그를 캡처하고 분류한 다음 이를 분석함으로써 변경 또는 업데이트가 사용자에게 어떤 영향을 주는지 이해하고, 문제의 근본 원인 또는 예상치 못한 변경에 대한 통찰력을 확보할 수 있다. 서비스는 연중무휴 24시간 사용할 수 있어야 하고 애플리케이션 및 인프라 업데이트 빈도가 증가함에 따라 적극적인 모니터링이 점점 더 중요해지고 있다. 이러한 데이터에 대한 실시간 분석을 수행하거나 알림을 생성하는 것도 조직이 좀 더 능동적으로 서비스를 모니터링하는 데 도움이 된다.
Communication And Cowork
조직에서 커뮤니케이션과 협업이 증가하는 것도 DevOps의 주요 문화적 측면 중 하나이다. DevOps 도구 및 소프트웨어 제공 프로세스 자동화를 사용하면 개발 및 운영의 워크플로와 책임을 물리적으로 합침으로써 협업이 이루어진다. 해당 팀에서는 이 위에 채팅 애플리케이션, 문제 또는 프로젝트 추적 시스템, wiki를 사용하여 커뮤니케이션을 지원하고 정보를 공유하는 강력한 문화적 표준을 확립한다. 이를 통해 개발자와 운영 그리고 마케팅이나 영업과 같은 다른 팀 간에도 커뮤니케이션이 활발해지면서 조직의 모든 부분에서 목표와 프로젝트에 좀 더 가깝게 다가갈 수 있다.
'IT 개발자의 창고' 카테고리의 다른 글
AWS - 가상 네트워크 구성 (0) | 2022.01.12 |
---|---|
클라우드 컴퓨팅이란? (0) | 2022.01.05 |
[윈도우10] 전원이 안 꺼지는 문제 해결 (1) | 2021.10.17 |
5G Network를 이용한 자동차 통신 사례 (0) | 2021.09.22 |
완전 자율주행을 위한 5G Network 통신 (0) | 2021.09.14 |