90DaysOfDevOps (Day 65)

고태규·2026년 1월 4일

DevOps

목록 보기
60/77
post-thumbnail

해당 스터디는 90DaysOfDevOps
https://github.com/MichaelCade/90DaysOfDevOps
를 기반으로 진행한 내용입니다.

Day 65 - Azure pertinent DevOps for non-coders


1. DevOps란 무엇인가?


DevOps는 개발(Dev)과 운영(Ops)의 합성을 뜻하지만, 본질적으로는 사람, 프로세스, 기술을 하나로 연결하여 최종 사용자에게 지속적인 가치를 제공하는 문화이자 관행이다.

왜 필요한가? (기존 방식의 문제점)

전통적인 IT 환경에서는 개발팀과 운영팀이 단절 (Silo)되어 있었다.

이는 비효율과 갈등을 초래하고 소프트웨어 배포 속도를 늦추는 원인이 되었다.

DevOps 도입의 효과

  • 협업 및 가시성 향상: 개발과 운영의 목표가 일치하며 책임 범위가 확장된다. (개발자는 운영 안정성을, 운영자는 개발 초기 단계의 거버넌스를 고려)

  • 출시 시간 단축: 더 빠른 배포와 피드백 반영

  • 안정성 및 신뢰성 확보: 자동화를 통한 오류 최소화 및 평균 복구 시간(MTTR) 개선

  • 지속적 학습: 실패로부터 배우고 성장하는 마인드셋 정착


2. 애플리케이션 수명 주기와 DevOps


DevOps는 애플리케이션의 계획(Plan) - 개발(Develop) - 전달(Deliver) - 운영(Operate)의 전 과정을 아우른다.

각 단계는 서로 연결되어 있으며, 특정 역할에 국한되지 않고 모든 팀원이 관여한다.

2-1. 계획 (Plan)

활동: 기능 브레인스토밍, 백로그 생성, 버그 추적, Agile 계획 수립.

목표: 작업의 투명성 확보 및 진행 상황 모니터링.

구분Azure Native 툴범용 / 타 플랫폼 대체 툴
프로젝트 관리Azure BoardsJira (업계 표준), Trello, Asana, GitHub Projects
시각화/분석Power BITableau, Grafana (데이터 시각화)

2-2. 개발 (Develop)

활동: 코딩, 테스트, 코드 리뷰, 통합, 빌드 아티팩트 생성

목표: 품질을 유지하며 혁신 속도를 높이는 것. (자동화된 테스트 및 CI 활용)

구분Azure Native 툴범용 / 타 플랫폼 대체 툴
IDE (통합개발환경)Visual Studio / VS CodeIntelliJ, Eclipse, Vim
버전 관리 (Git)Azure ReposGitHub, GitLab, Bitbucket
CIAzure PipelinesJenkins, GitLab CI, CircleCI, GitHub Actions

2-3. 전달 (Deliver)

활동: 운영 환경으로의 배포, 인프라 관리, 릴리스 프로세스 정의(수동 승인/자동 게이트)

목표: 확장성, 일관성, 제어력을 확보하여 수시로 배포 가능한 상태 유지

구분Azure Native 툴범용 / 타 플랫폼 대체 툴
CDAzure PipelinesJenkins, Spinnaker, ArgoCD
컨테이너 관리Azure Kubernetes Service (AKS)AWS EKS, GKE, 일반 Kubernetes
IaC (인프라)ARM Templates, BicepTerraform (HashiCorp, 멀티클라우드 표준), Ansible

2-4. 운영 (Operate)

활동: 시스템 상태 모니터링, 유지 보수, 문제 해결, 보안/거버넌스 관리.

목표: 신뢰성 및 가용성 확보, 선제적 문제 대응.

구분Azure Native 툴범용 / 타 플랫폼 대체 툴
모니터링/로깅Azure MonitorPrometheus + Grafana, ELK Stack (Elasticsearch, Logstash, Kibana), Datadog
구성 관리Azure AutomationAnsible, Chef, Puppet


3. DevOps 관행 및 비개발자 활용 가이드


DevOps의 핵심은 도구 자체가 아니라 그 도구를 활용하는 관행에 있다.

  1. CI/CD (지속적 통합 및 지속적 제공)
  • 개념: 코드의 빌드, 테스트를 자동화(CI)하고, 테스트된 코드를 운영 환경까지 자동으로 배포(CD)하는 것.

  • 비개발자(Infra/Ops) 활용:

    • 애플리케이션뿐만 아니라 인프라 변경 사항(IaC)의 배포도 CI/CD 파이프라인을 통해 자동화해야 한다.

    • 서버 구성 변경, 패치 작업 등을 파이프라인으로 관리하여 실수를 줄인다.

  1. 버전 관리 (Version Control)
  • 개념: 파일의 변경 이력을 추적하고, 팀원 간 협업 시 충돌을 방지하며, 언제든 이전 시점으로 복구가 가능하게 하는 시스템. (주로 Git 사용)

  • 비개발자(Infra/Ops) 활용:

    • 스크립트 및 문서 관리: PowerShell, 쉘 스크립트, 설정 파일, 업무 문서까지 Git으로 관리

    • 이력 추적: "누가, 언제, 무엇을, 왜 바꿨는가?"에 대한 명확한 Audit 로그 역할

  • 대표 툴: GitHub, GitLab

  1. 애자일 (Agile)
  • 개념: 완벽한 계획보다는 점진적인 전달, 짧은 릴리스 주기, 지속적인 피드백과 개선을 중시하는 방법론

  • 비개발자(Infra/Ops) 활용:

    • IT 프로젝트 관리에 칸반(Kanban) 보드 도입

    • 거대한 인프라 구축 프로젝트를 작은 단위로 쪼개어 관리하고 가시화

  • 대표 툴: Jira, Trello, Monday.com

  1. 코드형 인프라 (IaC - Infrastructure as Code)
  • 개념: 서버, 네트워크, DB 등 인프라 리소스를 수동으로 설정하지 않고, 코드로 정의하여 프로비저닝하는 것

  • 특징:

    • 인프라의 버전 관리가 가능

    • 환경(Dev, Stage, Prod)을 동일하게 복제 가능

    • 생성 및 삭제의 자동화

  • 비개발자(Infra/Ops) 활용:

    • 클라우드 리소스 생성 자동화

    • VM 템플릿, 골든 이미지 관리

    • 일관성 있는 환경 구축을 위해 필수적으로 익혀야 할 기술

  • 툴 비교:

    • Azure: ARM Templates, Bicep

    • AWS: CloudFormation

    • 범용(Multi-Cloud): Terraform, Pulumi

  1. 구성 관리
  • 개념: 서버 내부의 설정 (OS 설정, 패키지 설치, 파일 수정 등)이 원하는 상태를 유지하도록 강제하고 관리하는 것

  • 특징: 수백 대의 서버 설정을 일관되게 유지하고, 설정 변질을 방지한다.
    (DSC: Desired State Configuration)

  • 비개발자(Infra/Ops) 활용:

    • 대규모 서버군의 패치 관리 및 환경 설정 표준화
  • 툴 비교:

    • Azure: Azure Automation DSC

    • 범용: Ansible, Chef, Puppet

  1. 지속적 모니터링
  • 개념: 애플리케이션과 인프라의 성능, 상태, 로그를 실시간으로 수집하고 시각화하여 문제를 선제적으로 발견하는 것

  • 비개발자(Infra/Ops) 활용:

    • 단순한 서버 Up/Down 체크를 넘어, 실제 애플리케이션의 성능 지표 (Telemetry)를 분석하여 인프라 용량을 산정하거나 장애를 예방
  • 툴 비교:

    • Azure: Azure Monitor, Log Analytics

    • 범용: Prometheus (지표 수집), Grafana (시각화), ELK Stack (로그 분석)


4. 정리


DevOps는 개발자만의 전유물이 아니다.

비개발자 직군, 특히 인프라 운영 및 관리자들은 IaC와 CI/CD, 모니터링 도구를 습득함으로써 조직의 DevOps 문화를 지탱하는 핵심 역할을 수행할 수 있다.


0개의 댓글