DevOps란? 시리즈 <AWS >

이선재·2022년 11월 20일
0

기술면접

목록 보기
2/4

DevOps란 무엇인가

AWS Docs를 기반으로 DevOps가 무엇인지 정리를 해본다.


DevOps 모델정의

DevOps란 애플리케이션과 서비스를 빠른 속도로 제공할 수 있도록 조직의 역량을 향상시키는 문화 철학, 방식 및 도구의 조합이다. 기존의 조직보다 제품을 더 빠르게 혁신 및 개선이 가능하다. 효과적인 경쟁이 가능하다.

DevOps 작동방식

개발팀과 운영팀이 더 이상 부서별로 묶여있지 않고 단일 팀으로 병합되어 엔지니어가 개발에서 테스트, 배포, 운영 전체 애플리케이션 수명 주기에 걸쳐 작업하므로 작업 속도가 빨라진다. 단일 기능에 한정되지 않고 광범위한 기술을 개발한다.

  1. 병합된 DevOps 방식으로 속도가 느리고 수동으로 수행되던 프로세스를 자동화한다.
  2. 기술 스택과 도구를 사용
    • 다른 팀에 도움이 필요했을(코드 배포, 인프라 프로비저닝,,등)을 여러 도구로 독립적으로 수행
DevSecOps - DevOps 팀 전체가 보안을 중점으로 두는 경우에 다음과 같이 불림

애플리케이션 수명 주기 관리(ALM)는 더 이상 사용되지 않을 때까지 소프트웨어 애플리케이션을 만들고 유지 관리하는 것이다.
- 아이디어, 설계 및 개발, 테스트, 생산, 지원 및 최종 중복성과 같은 라이프 사이클의 모든 측면을 관리하기 위해 
  여러 프로세스, 도구 및 인력이 함께 작업합니다. -AWS Docs-

DevOps의 이점

  1. 작업 속도의 증가로 효율적인 비즈니스 성과 창출

    • 마이크로 서비스와 지속적 전달을 사용하여 서비스를 주도적으로 운영, 업데이트를 빠르게 릴리스 가능
  2. 새로운 기능의 릴리스와 버그 수정 속도 등 신속한 제공으로 고객의 니즈에 빠르게 대응해 경쟁 우위 강화

    • 릴리스의 빈도와 속도를 개선하여 제품을 더 빠르게 혁신하고 개선 가능
    • 지속적 통합과 지속적 전달은 빌드에서 배포까지 소프트웨어 릴리스 프로세스 자동화하는 방식
  3. 애플리케이션 업데이트 및 인프라 변경 품질 안정성있게 보장하여 더욱 빠르게 제공

    • 지속적 통합 및 지속적 전달과 같은 방식으로 변경 사항에 대해 테스트 진행
    • 모니터링과 로깅 방식으로 실시간 성능 정보 모니터링
  4. 자유로운 확장으로 시스템 효율적 관리 가능

    • 코드형 인프라 사용 시 개발, 테스트 및 프로덕션 환경을 반복 가능하며 효율적인 방식으로 관리 가능
  5. 개발자와 운영팀간에 협력 강화되어 책임을 공유하고, 워크플로를 결합

    • 비효율성을 줄이고 시간을 절약(ex. 개발자 운영팀 간 인도 기간 단축, 실행환경 고려한 코드 작성 등)
  6. 제어를 유지하고 규정을 준수하면서 보안을 잃지 않고 진행 가능

    • 자동화된 규정 준수 정책, 세분화된 제어 및 구성 관리 기술을 사용으로 보안 유지
    • 코드형 인프라와 코드형 정책을 사용하면 규모에 따라 규정 준수를 정의하고 추적 가능

이러한 DevOps 도입을 위해서는 개발과 운영이라는 두 팀간의 사일로 즉, 장벽을 없애주어야 한다. 직책의 범위를 넘어 서비스에 대한 주인의식을 갖는다.

DevOps 방식

1. 지속적 통합
자동화된 빌드 및 테스트 수행 후, 개발자가 코드 변경 사항을 중앙 리포지토리에 정기적으로 병합하는 소프트웨어 개발 방식

목표
a. 버그를 신속히 찾아 해결
b. 소프트웨어 품질 개선
c. 새로운 소프트웨어 업데이트 검증 및 릴리스 시간을 단축

2. 지속적 전달
프로덕션에 릴리스하기 위한 코드 변경에 대해 자동으로 빌드 및 테스트가 되는 소프트웨어 개발 방식이다. 모든 코드 변경을 테스트 환경 및 프로덕션 환경에 배포함으로써 지속적 통합을 확장한다. 개발자는 이를 언제나 즉시 배포할 수 있고 테스트 프로세스를 통과한 빌드 아티팩트를 보유할 수 있게 된다.

3. 마이크로 서비스
단일 애플리케이션을 작은 서비스의 집합으로 구축하는 설계 접근 방식이다. 다양한 프레임워크 또는 프로그래밍 언어를 사용하여 마이크로 서비스를 작성하고, 이를 독립적으로 단일 서비스, 서비스 그룹으로 배포할 수 있게 한다.

4. 코드형 인프라
버전관리 및 지속적 통합과 같은 코드 및 소프트웨어 개발 기술을 사용하여 인프라를 프로비저닝하고 관리하는 방식이다. 코드 기반 도구를 사용하여 인프라와 인터페이스하고, 애플리케이션 코드를 다루는 방법과 유사한 방식으로 인프라를 다룬다.

코드형 정책을 통하여 클라우드 체계화 된 조직에서 동적으로 모니터링 및 적용이 가능하고 코드를 통해 설명된 인프라는 자동화된 방식으로 추적, 검증 및 재구성할 수 있다.

클라우드의 API 중심 모델을 사용하면 개발자와 시스템 관리자가 수동으로 리소스를 설정 및 구성할 필요 없이 프로그래밍 방식으로 대규모로 인프라와 상호 작용할 수 있다.

5. 모니터링 및 로깅
애플리케이션과 인프라에서 생성되는 데이터 및 로그를 캡처 및 분류하고 분석함으로써 변경 또는 업데이트가 사용자에게 어떤 영향을 주는지 이해하고, 문제의 근본 원인 또는 예상치 못한 변경에 대한 통찰력을 확보한다.

6. 커뮤니케이션 및 협업
DevOps 도구 및 소프트웨어 제공 프로세스 자동화를 사용하면 개발 과 운영의 워크플로가 물리적으로 합쳐져 협업이 이루어지게 된다.

DevOps 방식 설명

대게 위에서 나온 적절한 도구를 사용해 수행되게 된다.

  1. 소규모 업데이트를 자주 수행하는 것

    각 배포의 위험이 줄어든다.
    오류의 원인을 확인할 수 있어 빠르게 버그 수정이 가능하다.
    DevOps방식은 기존의 개발 방식보다 훨씬 많이 업데이트를 배포한다.

  2. 마이크로 서비스 아키텍처 사용, 대규모 시스템을 간단하고 독립적 프로젝트로 결합 해제

    APP 유연성 및 innovation 속도를 높일 수 있다.
    오버헤드를 줄이고 각 서비스 별 담당으로 조직이 빨라진다.

    2-1. 릴리스 빈도 증가 및 배포 수의 증가로 운영 문제로 이어질 수 있다.

    지속적 통합지속적 전달로 신속하게 업데이트 제공 가능
    코드형 인프라구성 관리등 인프라 자동화로 잦은 변경에 대해 컴퓨팅 리소스 탄력적, 대응적 유지
    모니터링과 로깅으로 엔지니어가 애플리케이션 및 인프라의 성능을 추적하여 문제에 신속한 대응을 도움

즉, DevOps란 개발의 방식 중 하나로

여러 개발 도구를 사용하여 개발과 운영을 하나로 통합된 단일팀으로 기술을 개발하는 개발 방식이다.
단일팀으로 활동하기 때문에 불필요한 시간이 낭비되지 않으며, 또한 전체 애플리케이션 수명 주기에 걸쳐 작업하므로 작업 속도가 빨라진다는 많은 이점들이 있다.

profile
지적을 환영하는 인프라 냠냠을 시도하는 취준생

0개의 댓글