[DevOps] DevOps에 대해 아무것도 몰랐을 때 정리하고 다시 꺼내 보는 지금..
DevOps 개요
1. DevOps 정의
- 제품의 변경사항을 품질을 보장함과 동시에 프로덕션에 반영하는 데 걸리는 시간을 단축하기 위한 실천 방법의 모음
- 개발(Dev)과 운영(Ops)의 합성어
- 개발과 운영의 경계를 허물고 통합하고자 하는 문화 혹은 철학
라고 정리해 놨는데 이를 풀어 말하자면,
데브옵스는 반복적인 업무를 자동화하여 업무 속도를 향상시키고 오류를 최소화시켜 업무를 체계적으로 시스템화하는 방법론이자 문화를 말한다!
2. DevOps 역사 : 탄생
- 개발팀 : 개발을 완료하더라도 서비스 운영팀에 개발 결과물 전달 필요
- 운영팀 : 해당 개발 결과물을 Production에 올리기 위해 개발 결과물에 대한 이해 필요
⇒ 커뮤니케이션 overhead 발생
⇒ 서비스 운영 시 발생하는 이슈
운영팀 : 개발팀에서 코드를 잘못 구성했다고 생각함 ↔ 개발팀 : 코드는 잘못없는데 운영팀이 서버 운영을 잘못했다고 생각함
3. DevOps가 필요한 이유
- 자주 소통하여 개발과 운영 간의 사일로를 제거하고 효율성을 높여 고객에게 제공하는 서비스의 품질을 향상시키기 위함!
- 개발과 운영을 통합하여 SDLC(Software/System Development Life Cycle)을 단축시키고 제품 출시 및 조직의 효율성을 끌어올릴 수 있음!
4. DevOps 실천 방법?
- Continuous Integration (지속적 통합) : 개발자가 만든 변경 사항에 대해서 빌드 및 테스트를 진행한 뒤, 코드 저장소에 통합함으로써 빠르게 버그를 발견하고 제품 품질을 보장해 주는 소프트웨어 개발 방법 (ex. AWS CodeBuild)
-
Continuous Delivery/Deployment (지속적 전달/배포) : 개발 결과물의 산출물을 자동으로 개발 또는 운영 환경까지 배포하도록 만든 자동화된 파이프라인
Continuous Delivery와 Continuous Deployment의 차이는 수동으로 승인하는지 자동화로 넘기는지의 차이이다. (ex. Continuous Delivery - AWS CodePipeline / Continuous Deployment - AWS CodeDeploy)
참고 링크 ) Continuous Delivery와 Continuous Deployment의 차이 - Amazon Web Services
- Micro-services (마이크로서비스) : 어느 정도의 규모가 있는 서비스 운영 조직에 해당됨. 서비스를 마이크로 단위로 나눔으로써 빌드 및 배포 타임 단축 가능
- IaC (Infrastructure as Code) : 인프라를 코드로 관리함. 인프라 변경 사항을 자동화시켜 빠르게 적용하기 위해
- 히스토리 추적
- 버전 관리
- 소스코드 재사용성 높이고 효율성 높임
- Monitoring & Logging (모니터링과 로깅) : 개발자들이 운영에 직접 참여함으로써(제품의 매트릭과 로그 데이터 확인) 제품에 문제 발생 시 빠르게 대처 가능
- Communication & Collaboration (소통 및 협업) : Slack(Messenger), Jira(Issue tracking), Confluence, Notion 등 활용
DevOps 엔지니어의 역할
1. DevOps 팀의 업무 도메인
- Network (네트워크)
- 가상 네트워크 및 물리 네트워크 구성
- 프록시 / VPN 서버 운영
- DNS 서버 운영
- Development & Deployment Platform (개발 및 배포 플랫폼)
- GitLab / GitHub와 같은 버전관리 및 개발 협업 플랫폼 운영
- CI/CD 파이프라인 시스템 구축 및 운영
- QA 테스트 및 성능 테스트를 위한 환경 제공
- 패키지 저장소 운영 및 배포 산출물 관리
- Orchestration Platform (오케스트레이션 플랫폼)
- 쿠버네티스 / ECS / Nomad 와 같은 오케스트레이션 시스템 구축 및 운영
- Airflow / Argo Workflows 와 같은 워크플로우 엔진 구축 및 운영
- Observability Platform (관측 플랫폼)
- 로그 / 메트릭 / 업타임 / APM 정보를 관측할 수 있는 중앙화된 시스템 구축 및 운영
- 주요 이벤트에 대한 알림 시스템 구축
- Cloud Platform (클라우드 플랫폼)
- 개발자들이 활용할 수 있도록 클라우드 환경 운영 (자체 클라우드, 퍼블릭 클라우드 등)
- Security Platform (보안 플랫폼)
- LDAP / AD / SAML 등을 활용하여 통합된 임직원 계정계 운영
- 서버 및 데이터베이스 접근제어 시스템 구축 및 운영
- 네트워크 방화벽 정책 관리
- Data Platform (데이터 플랫폼)
- MYSQL / DynamoDB / Redis 와 같은 데이터베이스 구축 및 운영
- RabbitMQ / Kafka / SQS 등과 같은 메시징 서비스 구축 및 운영
- 데이터 웨어하우스 / BI 대시보드 구축 및 운영
- Service Operations (서비스 운영)
- 개발자들과 협업하여 서비스 공동 운영
- Training & Documentation (교육 및 문서화)
2. DevOps 팀의 핵심 지표
- MTTR (Mean Time To Recovery), 장애복구 시간
- Change Failure Rate (변경으로 인한 결함률)
- Deployment Frequency (배포 빈도)
- Lead Time for Changes (변경 적용 소요 시간)
Leave a comment