해당 스터디는 90DaysOfDevOps
https://github.com/MichaelCade/90DaysOfDevOps
를 기반으로 진행한 내용입니다.
Day 65 - Azure pertinent DevOps for non-coders
DevOps는 개발(Dev)과 운영(Ops)의 합성을 뜻하지만, 본질적으로는 사람, 프로세스, 기술을 하나로 연결하여 최종 사용자에게 지속적인 가치를 제공하는 문화이자 관행이다.

왜 필요한가? (기존 방식의 문제점)
전통적인 IT 환경에서는 개발팀과 운영팀이 단절 (Silo)되어 있었다.
이는 비효율과 갈등을 초래하고 소프트웨어 배포 속도를 늦추는 원인이 되었다.
DevOps 도입의 효과
협업 및 가시성 향상: 개발과 운영의 목표가 일치하며 책임 범위가 확장된다. (개발자는 운영 안정성을, 운영자는 개발 초기 단계의 거버넌스를 고려)
출시 시간 단축: 더 빠른 배포와 피드백 반영
안정성 및 신뢰성 확보: 자동화를 통한 오류 최소화 및 평균 복구 시간(MTTR) 개선
지속적 학습: 실패로부터 배우고 성장하는 마인드셋 정착
DevOps는 애플리케이션의 계획(Plan) - 개발(Develop) - 전달(Deliver) - 운영(Operate)의 전 과정을 아우른다.
각 단계는 서로 연결되어 있으며, 특정 역할에 국한되지 않고 모든 팀원이 관여한다.

활동: 기능 브레인스토밍, 백로그 생성, 버그 추적, Agile 계획 수립.
목표: 작업의 투명성 확보 및 진행 상황 모니터링.
| 구분 | Azure Native 툴 | 범용 / 타 플랫폼 대체 툴 |
|---|---|---|
| 프로젝트 관리 | Azure Boards | Jira (업계 표준), Trello, Asana, GitHub Projects |
| 시각화/분석 | Power BI | Tableau, Grafana (데이터 시각화) |
활동: 코딩, 테스트, 코드 리뷰, 통합, 빌드 아티팩트 생성
목표: 품질을 유지하며 혁신 속도를 높이는 것. (자동화된 테스트 및 CI 활용)
| 구분 | Azure Native 툴 | 범용 / 타 플랫폼 대체 툴 |
|---|---|---|
| IDE (통합개발환경) | Visual Studio / VS Code | IntelliJ, Eclipse, Vim |
| 버전 관리 (Git) | Azure Repos | GitHub, GitLab, Bitbucket |
| CI | Azure Pipelines | Jenkins, GitLab CI, CircleCI, GitHub Actions |
활동: 운영 환경으로의 배포, 인프라 관리, 릴리스 프로세스 정의(수동 승인/자동 게이트)
목표: 확장성, 일관성, 제어력을 확보하여 수시로 배포 가능한 상태 유지
| 구분 | Azure Native 툴 | 범용 / 타 플랫폼 대체 툴 |
|---|---|---|
| CD | Azure Pipelines | Jenkins, Spinnaker, ArgoCD |
| 컨테이너 관리 | Azure Kubernetes Service (AKS) | AWS EKS, GKE, 일반 Kubernetes |
| IaC (인프라) | ARM Templates, Bicep | Terraform (HashiCorp, 멀티클라우드 표준), Ansible |
활동: 시스템 상태 모니터링, 유지 보수, 문제 해결, 보안/거버넌스 관리.
목표: 신뢰성 및 가용성 확보, 선제적 문제 대응.
| 구분 | Azure Native 툴 | 범용 / 타 플랫폼 대체 툴 |
|---|---|---|
| 모니터링/로깅 | Azure Monitor | Prometheus + Grafana, ELK Stack (Elasticsearch, Logstash, Kibana), Datadog |
| 구성 관리 | Azure Automation | Ansible, Chef, Puppet |
DevOps의 핵심은 도구 자체가 아니라 그 도구를 활용하는 관행에 있다.
개념: 코드의 빌드, 테스트를 자동화(CI)하고, 테스트된 코드를 운영 환경까지 자동으로 배포(CD)하는 것.
비개발자(Infra/Ops) 활용:
애플리케이션뿐만 아니라 인프라 변경 사항(IaC)의 배포도 CI/CD 파이프라인을 통해 자동화해야 한다.
서버 구성 변경, 패치 작업 등을 파이프라인으로 관리하여 실수를 줄인다.
개념: 파일의 변경 이력을 추적하고, 팀원 간 협업 시 충돌을 방지하며, 언제든 이전 시점으로 복구가 가능하게 하는 시스템. (주로 Git 사용)
비개발자(Infra/Ops) 활용:
스크립트 및 문서 관리: PowerShell, 쉘 스크립트, 설정 파일, 업무 문서까지 Git으로 관리
이력 추적: "누가, 언제, 무엇을, 왜 바꿨는가?"에 대한 명확한 Audit 로그 역할
대표 툴: GitHub, GitLab
개념: 완벽한 계획보다는 점진적인 전달, 짧은 릴리스 주기, 지속적인 피드백과 개선을 중시하는 방법론
비개발자(Infra/Ops) 활용:
IT 프로젝트 관리에 칸반(Kanban) 보드 도입
거대한 인프라 구축 프로젝트를 작은 단위로 쪼개어 관리하고 가시화
대표 툴: Jira, Trello, Monday.com
개념: 서버, 네트워크, DB 등 인프라 리소스를 수동으로 설정하지 않고, 코드로 정의하여 프로비저닝하는 것
특징:
인프라의 버전 관리가 가능
환경(Dev, Stage, Prod)을 동일하게 복제 가능
생성 및 삭제의 자동화
비개발자(Infra/Ops) 활용:
클라우드 리소스 생성 자동화
VM 템플릿, 골든 이미지 관리
일관성 있는 환경 구축을 위해 필수적으로 익혀야 할 기술
툴 비교:
Azure: ARM Templates, Bicep
AWS: CloudFormation
범용(Multi-Cloud): Terraform, Pulumi
개념: 서버 내부의 설정 (OS 설정, 패키지 설치, 파일 수정 등)이 원하는 상태를 유지하도록 강제하고 관리하는 것
특징: 수백 대의 서버 설정을 일관되게 유지하고, 설정 변질을 방지한다.
(DSC: Desired State Configuration)
비개발자(Infra/Ops) 활용:
툴 비교:
Azure: Azure Automation DSC
범용: Ansible, Chef, Puppet
개념: 애플리케이션과 인프라의 성능, 상태, 로그를 실시간으로 수집하고 시각화하여 문제를 선제적으로 발견하는 것
비개발자(Infra/Ops) 활용:
툴 비교:
Azure: Azure Monitor, Log Analytics
범용: Prometheus (지표 수집), Grafana (시각화), ELK Stack (로그 분석)
DevOps는 개발자만의 전유물이 아니다.
비개발자 직군, 특히 인프라 운영 및 관리자들은 IaC와 CI/CD, 모니터링 도구를 습득함으로써 조직의 DevOps 문화를 지탱하는 핵심 역할을 수행할 수 있다.