데브옵스(DEVOPS)란

Posted by HULIA(휴리아)
2018. 4. 3. 10:32 뒷이야기들/스터디히스토리강의
AWS사이트에 발췌

데브옵스는
애플리케이션과 서비스를 빠른 속도로 제공할 수 있도록 조직의 역량을 향상시키는 문화 철학, 방식 및 도구의 조합입니다

데브옵스의 이점
-속도
작업속도가 빨리지므로, 고객을 위해 더 빠르게 혁신하고, 시장 변화에 더 잘 적응하고, 좀 더 효율적으로 비즈니스 성과를 창출가능
예)마이크로 서비스 & 지속적 전달
-신속한 제공
릴리즈의 빈도와 속도를 개선하여 제품을 더 빠르게 혁신하고 향상가능. 새로운 기능의 릴리즈와 버그 수정속도가 빨라질수록 고객의 요구에 더 빠르게 대응하여 경쟁우위를 강화가능
예)지속적 통합 & 지속적 전달
-안정성
최종 사용자에게 지속적으로 긍정적인 경험을 제공하는 한편 더욱 빠르게 안정적으로 제공할 수 있도록, 애플리케이션 업데이트와 인프라 변경의 품질을 보장합니다.
예)지속적 통합 & 지속적 전달 & 모니터링과 로깅
-확장가능
규모에 따라 인프라와 개발프로세스를 운영 및 관리
자동화와 일관성이 지원되므로 위험을 줄이면서 복잡한 시스템 또는 변화하는 시스템을 효율적으로 관리가능
예)코드형 인프라
-협업강화
주인 의식과 책임 같은 가치를 강조하는 데브옵스 문화 모델에서 좀 더 효과적인 팀을 구축
개발자와 운영 팀은 긴밀하게 협력하고 많은 책임을 공유하며 워크플로를 결합
이를 통해 비효율성을 줄이고 시간을 절약
-보안
제어를 유지하고 규정을 준수하면서 신속하게 진행가능
자동화된 규정준수정책, 세분화된 제어 및 구성 관리 기술을 사용함으로써 보안을 그대로 유지하면서 데브옵스 모델을 도입가능


데브옵스 문화 철학
데브옵스로 전환하기 위해서는 문화와 사고방식으 변화가 필요
간단하게 말하면 데브옵스는 개발과 운영이라는 두 팀 간의 장벽을 허무는 일


데브옵스 방식
조직이 소프트웨어 개발과 인프라 관리 프로세스의 자동화 및 간소화를 통해 더 빠르게 혁신할 수 있도록 지원하는 몇가지 주요 방식이 있습니다.

기본방식 중 하나는 소규모 업데이트를 자주 수행
소규모로 자주 업데이트하면 각 배포의 위험을 줄어듭니다. 팀에서 오류의 원인이 되는 최근 배포를 확인할 수 있으므로 더 빠르게 버그를 해결할 수 있습니다. 업데이트 소요 시간과 규모는 다르지만, 데브옵스 모델을 사용하는 조직은 기본 소프트웨어 개발 방식을 사용하는 조직보다 훨씬 더 자주 업데이트를 배포합니다.

조직은 마이크로 서비스 아키텍쳐를 사용하여 애플리케이션의 유연성과 혁신의 속도를 높일 수 있습니다.
마이크로 서비스 아키텍쳐는 복잡한 대규모 시스템을 간단하고 독립적인 프로젝트로 결합 해제합니다
애플리케이션은 많은 개별 구성 요소(서비스)로 분할되며, 각 서비스는 단일 목적 또는 기능으로 한정되고 피어 서비스 및 전체 애플리케이션과 별개로 운영됩니다.
이 아키텍쳐는 애플리케이션 업데이트를 위한 조정 오버헤드를 줄이고, 각 서비스가  이를 담당하는 작고 민첩한 팀과 연결되면 조직이 좀 더 신속하게 움직일 수 있습니다.

하지만 마이크로 서비스와 릴리스 빈도 증가의 조합은 배포수를 현저히 늘려 운영 문제로 이어질 수 있습니다. 따라서 지속적 통합 및 지속적 전달과 같은 데브옵스 방식을 사용하면 이러한 문제를 해결하고 조직이 안전하고 안정적인 방식으로 신속하게 업데이트를 제공가능
코드형 인프라 및 구성 관리와 같은 인프라 자동화 방식은 잦은 변경에 대해 컴퓨팅 리소스를 탄력적이고 대응적으로 유지하는데 도움이 됩니다. 또한 모니터링과 로깅의 사용도 엔지니어가 애플리케이션 및 인프라 성능을 추적하여 문제에 신속하게 대응할 수 있게 하는데 도움이 됩니다.

-지속적통합
자동화된 빌드 및 테스트가 수행된 후, 개발자가 코드 변경 사항을 중앙 리포지토리에 정기적으로 병합하는 소프트웨어 개발방식
지속적 통합의 핵심 목표는 버그를 신속하게 찾아 해결하고, 소프트웨어 품질을 개선하고, 새로운 소프트웨어 업데이트를 검증 및 릴리즈하는데 걸리는 시간을 단축하는 것

-지속적 전달
코드 변경이 프로덕션에 릴리즈할 수 있도록 자동으로 빌드, 테스트 및 준비되는 소프트웨어 개발 방식입니다.
빌드 단계이후의 모든 코드 변경 사항을 테스트 환경 및/또는 프로덕션 환경에 배포함으로써 지속적 통합을 확장합니다.
지속적 전달이 적절하게 구현되면, 개발자는 언제나 즉시 배포할 수 있고 표준화된 테스트 프로세스를 통과한 빌드 아티팩트를 보유하게 됩니다.

-마이크로 서비스 아키텍쳐
단일 애플리케이션을 작은 서비스의 집합으로 구축하는 설계 방식입니다.
각 서비스는 자체 프로세스에서 실행되고, 주로 HTTP기반 API라는 간편한 매커니즘을 사용하는 잘 정의된 인터페이스를 통해 다른 서비스와 통신합니다
마이크로 서비스는 비즈니스 기능을 중심으로 구축되며, 각 서비스는 단일 목적으로 한정되어 있습니다. 다양한 프레임워크 또는 프로그래밍 언어를 사용하여 마이크로 서비스를 작성하고 이를 독립적으로 단일 서비스는 또는 서비스 그룹으로 배포할 수 있습니다

-코드형 인프라
버전관리 및 지속적 통합과 같은 코드와 소프트웨어 개발 기술을 사용하여 인프라를 프로비저닝하고 관리하는 방식입니다
클라우드의 API 중심 모델을 사용하면 개발자와 시스템 관리자가 수동으로 리소스를 설정 및 구성할 필요없이 프로그래밍 방식으로 대규모로 인프라와 상호작용할 수 있습니다. 따라서 엔지니어는 코드 기반 도구를 사용하여 인프라와 인터페이스하고, 애플리케이션 코드를 다루는 방법과 유사한 방식으로 인플라를 다룰 수 있습니다. 인프라가 코드를 통해 정의되므로, 인프라와 서버를 표준화된 패턴을 사용하여 배포하고 최신패치와 버전으로 업데이트 하거나, 반복 가능한 방식으로 복제할 수 있습니다.

        1)구성관리
         개발자와 시스템 관리자는 코드를 사용하여 운영체제를 자동화하고 구성, 운영 작업등을 호스팅합니다. 코드를 사용함으로써 구성 변경을 반복하고 표준화 할 수 있습니다.이에 따라 개발자와 시스템관리자가 운영체제, 시스템 어플리케이션 또는 서버 소프트웨어를 수동으로 구성할 필요가 없어집니다

        2)코드형 정책
         인프라와 인프라 구성이 클라우드로 체계화된 조직은 규정 준수를 규모에 따라 동적으로 모니터링하고 적용할 수 있습니다. 따라서 코드를 통해 설명된 인프라는 자동화된 방식으로 추적, 검증 및 재구성할 수 있습니다. 이는 조직이 손쉽게 리소스 변경을 관리하고 보안 조치가 분산 방식으로 적절하게 적용될 수 있게 해줍니다.


-모니터링 및 로깅
조직은 지표와 로그를 모니터링하여 애플리케이션 및 인프라 성능이 제품의 최종사용자 경험에 어떤 영향을 미치는지 확인합니다. 조직은 애플리케이션과 인프라에서 생성되는 데이터 및 로그를 캡쳐하고 분류한 다음 이를 분석함으로써, 변경 또는 업데이트가 사용자에게 어떤 영향을 주는지 이해하고, 문제의 근본 원인 또는 예상치 못한 변경에 때한 통찰력을 확보합니다. 서비스는 연중무휴 24시간 사용할 수 있어야 하고 애플리케이션 및 인프라 업데이트 빈도가 증가함에 따라 적극적인 모니터링이 점점 더 중요해지고 있습니다. 이러한 데이터에 대한 실시간 분석을 수행하거나 알림을 생성하는 것도 조직이 좀 더 능동적으로 서비스를 모니터링하는 데 도움이 됩니다

-커뮤니케이션 및 협업
조직에서 커뮤니케이션과 협업이 증가하는 것도 데브옵스의 주요 문화적 측면 중 하나입니다. 데브옵스 도구 및 소프트웨어 제공 프로세스를 자동화를 사용하면 개발 및 운영의 워크플로와 책임을 물리적으로 합침으로써 협업이 이루어집니다. 해당 팀에서는 이 위에 채팅 애플리케이션, 문제 또는 프로젝트 추적 시스템, wiki를 사용하여 커뮤니케이션을 지원하고 정보를 공유하는 강력한 문화적 표준을 확립합니다.
이를 통해 개발자와 운영 그리고 마케팅이나 영업과 같은 다른 팀간에도 커뮤니케이션이 활발해지면서 조직의 모든 부분에서 목표와 프로젝트에 좀 더 가깝게 다가갈 수 있습니다


개발자로써의 앞으로 준비해야 할 일
-다양한 프로그래밍 알아야 함
-마이크로 서비스(API) 알아두기
-지속적 전달 툴(젠킨스) 알아두기