DevOps

강혜인·2024년 6월 30일
0

Security

목록 보기
2/12

DevOps

  • 'Development' + 'Operations'
    개발 + 운영
  • 개발팀과 운영팀이 협력해 애플리케이션/서비스를 더 빠르고 안정적으로 사용자에게 제공하기 위한 문화, 프로세스, 도구들의 집합

DevOps Life Cycle


1) Plan

  • 비즈니스적 요구사항 확인 + 고객 피드백 수용
  • 새로운 프로젝트를 계획하고, 로드맵을 구성하는 단계

2) Code

  • 실질적인 개발 단계
  • 여러 플러그인들을 이용해 개발을 효율적으로 할 수 있도록 환경을 구성하고, 개발을 진행하는 단계

3) Build

  • Code를 Repository에 Commit 후 Build하는 단계

4) Test

  • 오류, 보안적 문제, 부하로 인한 문제 등 서비스 가용성 확보를 위해 Test를 진행하는 단계

5) Release

  • 운영 환경에 배포 할 빌드 아티팩트를 준비하는 단계
    *빌드 아티팩트 : Build에 대한 결과물

6) Deploy

  • 운영 환경 인프라에 배포하는 단계
  • IaC 독들은 운영 환경 인프라 구성에 도움을 줌

7) Operate

  • 서비스 운영을 위한 설정을 진행하는 단계

8) Monitor

  • user로 인해 발생하는 log, 애플리케이션 액세스/에러 log, 인프라 부하 관련 log 등을 모니터링하는 단계 -> 서비스 가용성 확보를 위해

IaC
Infrastructure as Code

  • 코드를 통해 인프라를 관리 및 프로비저닝

  • 선언적 접근 방식과 명령형 접근 방식이 존재함

  • 선언적 접근 방식)
    - 필요한 리소스와 리소스의 속성 등 바람직한 시스템 상태를 정의하면, IaC Tool이 바람직한 상태로 구성함
    - 시스템 오브젝트의 현재 상태 목록 유지

  • 명령형 접근 방식)
    - 바람직한 구성을 얻기 위한 특정 명령을 정의 / 명령을 올바른 순서로 실행해야됨

  • 장점)
    - 비용 절감, 배포 속도 향상, 오류 감소, 인프라 일관성 향상, 구성 변동 제거

  • Tools
    - Chef, Puppet, Red Hat Ansible Automation Platform, Saltstack, Terraform, AWS CloudFormation

  • IaC는 DevOps에서 지속적 통합/지속적 배포(CI/CD)에서 중요함

7C's of DevOps

  • Continuous Integration(CI/지속적인 통합)
    - 새롭게 개발된 코드가 기존 코드에 통합되는 과정
    • 자동으로 Code를 Build하고, Test 함
    • 개발자 피드백과 Code 품질 확보에 초점을 둠
    • Tools) Jenkins, Circle CI, Travis CI, Github Actions...
  • Continuous Deployment(CD/지속적인 배포)
    - 빌드된 애플리케이션을 자동으로 배포
    - 최근에는 무중단 배포 -> 실시간성을 중요시
    - 배포 주기 단축과 사용자 가치 실현에 초점을 둠
    - Tools) Jenkins, AWS Code Deploy...
    **Jenkins는 CI/CD에서 모두 사용가능한 Tool로, 가장 많이 사용

기존 방식과 차이

[기존]

  • 개발과 인프라 운영의 명확한 구분이 존재
  • 개발팀에서 빌드된 애플리케이션 배포를 요청하면, 인프라 운영팀에서 담당자가 SCP/FTP를 이용해 수동으로 배포
    ** FTP는 잘 안씀
  • 중단 배포 방식을 사용해서 배포 주기가 긴 경우가 다수
  • 인프라 설치 및 관리가 수동으로 이루어짐

[DevOps]

  • 개발팀과 운영팀 사이의 지속적 커뮤니케이션과 협업이 수행됨
  • CI/CD 파이프라인 구성 -> 개발 - 배포까지의 과정을 자동화 가능
  • 무중단 배포 방식 사용으로 배포 주기가 짧음
  • IaC Tool 이용 -> 인프라 설치 및 관리를 자동으로 수행

0개의 댓글