운영 및 협업/개발 및 운영

[DevOps] DevOps란?

박지환 2022. 9. 11. 13:41
프로덕션에서 배포까지의 시간을 단축시키는 문화, 페러다임

1. DevOps

1-1. DevOps의 정의

프로덕션에서 배포까지의 시간을 단축시키는 문화, 패러다임

개발자가 개발 뿐만 아니라 배포, 운영 등까지 할 수 있는 문화

1-2. DevOps vs DevOps 엔지니어

  • DevOps: 문화
  • DevOps 엔지니어: DevOps 문화를 형성하기 위해 환경을 만들어주는 역할

1.3 Devops 팀의 업무 도메인

  • 네트워크
  • 개발 및 배포 플랫폼
  • 오케스트레이션 플랫폼
  • 관측 플랫폼
  • 클라우드 플랫폼
  • 보안 플랫폼
  • 서비스 운영
  • 데이터 플랫폼

1.4 DevOps 적용의 단계, 발전

서비스가 커짐에 따라 필요에 의해 도입하는 경우가 많음

모노리틱 API 서버의 거대화 → CI/CD의 필요성 → 로그를 자주 봐야함 → 중앙 집중형 로그 확인 플랫폼의 필요성 → 서버의 여러 상태를 확인하여 서버를 관리해야 함 → 헬스 체크, 업타임 등의 확인 플랫폼의 필요성

1.5 DevOps 팀의 핵심 도메인

  • 개발 및 배포 플랫폼 (CI/CD)
  • 오케스트레이션 플랫폼 (Kubernates)
  • 관측 플랫폼 (로그, 메트릭, 업타임 등의 정보를 관측할 수 있는 중앙화된 시스템)

1.5.1 비즈니스 관점에 봤을 때의 핵심 도메인

데이터 플랫폼 (Kafka, BI 대시보드 등) → 데이터에서 비즈니스 인사이트를 얻기 위해

비즈니스가 출시가 되었다면, 데이터 플랫폼을 구축하는 시점의 데이터들은 유실되어 활용할 수 없을 것이다

1.6 애자일과 CI/CD

CI/CD 숙련자가 없을 경우 오히러 개발 중간에 CI/CD를 구축하면 이를 구축하는데 소요가 들기 때문에, 애자일하게 제품을 만들 수 없을 것

배포를 빠르게 해야하는 시점이 올 때 CI/CD를 적용하는 것이 맞음

2. CI/CD

CI/CD : 애플리케이션 개발 단계를 자동화하여 애플리케이션을 보다 짧은 주기로 고객에게 제공하는 방법, CI/CD 파이프라인을 통해 DevOps (애자일 방식)가 실현됨
Red Hat의 [CI/CD(지속적 통합/지속적 제공): 개념, 방법, 장점, 구현 과정]

2-1. CI (Coutinuous Integration)

CI (Coutinuous Integration, 지속적 통합): 빌드/테스트 자동화 과정

개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)을 의미

애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합되므로 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있음

2-2. CD (Continuous Delivery, Continuous Deployment)

CD (Continuous Delivery, 지속적 제공/지속적 배포) : 배포 자동화 과정

지속적인 서비스 제공(Continuous Delivery) 및/또는 지속적인 배포(Continuous Deployment)를 의미

2-2-1. Continuous Delivery (지속적인 제공)

개발자들이 애플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 리포지토리에 자동으로 업로드되는 것을 뜻하며, 운영팀은 이 리포지토리에서 애플리케이션을 실시간 프로덕션 환경으로 배포할 수 있음

개발팀과 비즈니스팀 간의 가시성과 커뮤니케이션 부족 문제를 해결해 줌. 지속적인 제공은 최소한의 노력으로 새로운 코드를 배포하는 것과, 프로덕션 환경으로 배포할 준비가 되어 있는 코드베이스를 확보하는 것임

2-2-2. Continuous Deployment (지속적인 배포)

개발자의 변경 사항을 리포지토리에서 고객이 사용 가능한 프로덕션 환경까지 자동으로 릴리스하는 것을 의미

애플리케이션 제공 속도를 저해하는 수동 프로세스로 인한 운영팀의 프로세스 과부하 문제를 해결함. 지속적인 배포는 파이프라인의 다음 단계를 자동화함으로써 지속적인 제공이 가진 장점을 활용함

지속적 배포가 제대로 이루어지려면 테스트 자동화가 제대로 설계되어 있어야 함

2-3. CI/CD 전체 흐름