본문 바로가기
Infra

DevOps란?

by Inventer 2021. 12. 23.

DevOps의 정의

개발과 운영을 함께하는 문화 (=DevOps)

 

Software의 생애주기는 아래와 같다.

Full-cycle Developers at Netfilx

물론 매우 대규모의 서비스의 구성사례지만 다른 회사도 크게 다르진 않을 것이다.

위 프로세스 대로 이를 진행하다보면 무조건 적으로 병목현상이 생길만한 직렬적인 프로세스이다.

따라서 DevOps는 이런 비효율적인 프로세스를 보다 효율적인 프로세스로 바꾸고자 새롭게 등장한 "문화"이다.

 

 

위 프로세스를 효율적으로 바꾸기 위해서 등장한 DevOps 엔지니어는 하는 일이 굉장히 많다. 

네트워크, DNS, 프로비저닝, DB관리 운영, 관측, 배포, 보안 시스템을 구축해서 보다 빠른 개발로직이 적용될 수 있도록

개발자를 돕는 일인 것이다. 각각 성장된 조직이라면 각 도메인 담당자가 있겠지만,,

(스타트업에 근무하는 나로서는 속히 개발이라 뭉뚱그려 하나로 불리우는 것들이다...)

 


DevOps의 업무

 

1. 네트워크 (Network)

  • 가상 네트워크 및 물리 네트워크 구성
  • 프록시/VPN 운영 (임직원의 사설 네트워크)
  • DNS 운영 (회사와 관련된 도메인)

2. 개발 및 배포 플랫폼 (Development & Deployment Platform)

  • Github
  • CI&CD Pipeline System
  • QA테스트 및 성능테스트
  • 개발에 사용되는 패키지 저장소 운영 및 배포 산출물 관리

3. 오케스트레이션 플랫폼 (Orchestration Platform) 운영하는 워크로드가 많은 경우

  • 쿠버네티스 / ECS / Nomad 와 같은 오케스트레이션 시스템 구축 및 운영
  • Airflow / Argo Workflows 와 같은 워크플로우 엔진 구축 및 운영

4. 관측 플랫폼 (Observability Platform)

  • 로그 / 메트릭 / 업타임 / APM 정보를 관측할 수 있는 중앙화된 시스템 구축 및 운영 (대쉬보드 형태)
  • 주요 이벤트에 대한 알림 시스템 구축

5. 클라우드 플랫폼 (Cloud Platform)

  • 개발자가 활용할 수 있는 클라우드 환경 운영 (자체 클라우드 및 AWS, GCP 등 퍼블릭 클라우드)

6. 보안 플랫폼 (Security Platform)

  • LDAP / AD / SAML 등을 활용하여 통합된 임직원 계정 접근권한 등 운영
  • 서버 및 데이터베이스 접근제어(ssh) 시스템 구축 및 운영 (누가 어디서 무엇을 했는지, 누가 이런 쿼리를 썻는지)
  • 네트워크 방화벽 정책 관리

7. 데이터 플랫폼 (Data Platform)

  • MySQL / DynamoDB / Redis 와 같은 DB 구축 및 운영 (
  • RabbitMQ / Kafka / SQS 와 같은 메시징 서비스 구축 및 운영
  • 데이터 웨어하우스 / BI 대시보드 구축 및 운영

8. 서비스 운영 (Service Operations)

  • 개발자들과 협업하여 서비스 공동운영

 

당연한 말이지만 위는 조직이 커짐에 따라서, 각 도메인 마다 전문가들이 관리하게 된다.

 

위에 서술한 도메인은 DevOps가 다뤄야하는 업무에 대해 분담한 것이고

이번엔 행위를 기준으로 아래와 같은 것들을 해야한다.

DevOps의 업무

 


DevOps의 핵심지표

 

하기 지표들을 추적하여 업무가 원활한지 추적해야 한다.

 

장애복구 시간, MTTR (Mean Time To Recovery)

얼마나 장애 상황에서 빠르게 복구할 수 있는가?

시간이 오래걸린다 -> 인프라 자동화가 덜 되어있거나, 배포파이프라인 최적화가 필요

 

변경으로 인한 결함율 (Change Failure Rate)

얼마나 자주 변경 사항으로 인하여 장애가 발생하는가?

빈도가 잦다 -> CI 파이프라인(Test 진행과정)이 잘못 된 것.

 

배포 빈도 (Deployment Frequency)

배포를 얼마나 자주 하는가?

빈도가 낮다 -> 조직내에 문제가 있을 것으로 추측

  문화적 문제 -> 제품 배포에 두려워하는 문화, 질타의 문화 등

  시스템 문제 -> 매우 거대한 시스템 등 ( 마이크로 시스템을 활용)

 

변경 적용 소요 시간 (Lead Time for Changes)

변경사항이 프로덕션 배포(빌드하고 테스트되는데 걸리는)에 걸리는 소요 시간은 얼마인가?

시간이 오래걸린다 -> 파이프라인 최적화, 인프라 자동화 등 최적화


DevOps Eng. Roadmap & Tip

한번 둘러만 보시라.

https://roadmap.sh/devops

 

Developer Roadmaps

Community driven roadmaps, articles, guides, quizzes, tips and resources for developers to learn from, identify their career paths, know what they don't know, find out the knowledge gaps, learn and improve.

roadmap.sh

 

CI/CD Tools : Circle CI는 open license임 스타트업이 많이씀. Gitlab CI 많이 씀.

 

(응. 나는 삼류다.)

 

장애가 발생하면 근본 원인(Root Cause)을 찾고 장애 기록(Post-mortem)을 남기는 습관을 기르라.

저장 공간이 다찼네 -> 왜 누가 차게 한거야? -> 로그 파일이네? -> log rotate 설정이 안되있네? -> 이거 해야겠다.

이런식으로 근본 적인 원인까지를 도달하는 것은 중요하다.


참고자료

 

Fastcampus, 한 번에 끝내는 AWS 인프라 구축과 DevOps 운영 초격차 패키지 Online Part 1.

댓글