DevOps란 무엇인가?

김도현·2023년 7월 12일

DevOps라는 개념이 나온 이유

개발을 하다보면 개발만 한다고 되는것이 아니다. 프로젝트를 빌드하고 배포하고 테스트하는 운영 업무도 같이 해야 한다. 보통 회사에서는 이 두개의 일을 하는 조직을 나눠서 관리하게 된다. 그런데 하나의 서비스를 두 개의 팀에서 관리하다보면 비효율적인 부분들도 많고 서로 의사소통하기에도 좋지 않다.

특히 수많은 소프트웨어가 존재하는 현 시대에 소프트웨어가 살아남기 위해서는 사용자의 요구사항을 즉각적으로 반영해야만 하는데 개발과 운영의 분리는 이러한 트렌드와의 거리를 점점 멀어지게 한다.

결론은 개발팀과 운영팀 사이에 존재하는 벽을 허물고 팀 간에 협업을 통해 비즈니스의 요구사항을 단기간에 반영할 수 있는 높은 품질의 소프트웨어를 개발해야 한다.

이러한 문제들을 해결하기 위해서 나온 것이 DevOps이다. 즉, 개발과 운영을 합쳐 사용자의 의견에 민감하게 반응하는 높은 품질의 소프트웨어를 만들자는 목적을 가진다.

DevOps의 발전 계기

개발과 운영을 동시에 하는 것은 당연히 어렵다. 개발과 운영은 영역 자체가 매우 상이하고, 요구되는 기술 능력도 많이 차이나기 때문에, 일반적인 엔지니어가 양쪽을 모두 커버하기가 어렵다.

하지만 근래에는 조금 쉬워졌다. 이러한 이유는 다음과 같다.

1. 오픈 소스의 발전

인터넷이 발전하면서, IT의 흐름이 크게 바뀐 것중에 하나는 더 이상 오라클이나 IBM과 같은 대형 벤더의 주도 기술이 아니라 페이스북이나 구글과 같은 거대 B2C 서비스가 IT의 흐름을 이끌기 시작했고, 이러한 업체들이 오픈소스를 적극적으로 후원 및 장려하기 시작했다. 오픈 소스에서 많은 지식들을 배울 수 있게 되었다.

2. 좋은 도구들의 발전

오픈 소스의 발전으로 인해, 좋은 툴들도 많아졌다. 개발에 관련된 툴 뿐만 아니라 빌드,배포,모니터링에 대한 툴도 많아졌기 때문에, 운영 업무에 해당하는 부분들을 상당 부분 자동화를 할 수 있게 되었다.

3. 클라우드의 등장

클라우드 컴퓨팅의 가장 큰 특징 중의 하나는 사용자가 인프라(서버 설치, 네트워크 케이블 구성)를 구성할 필요가 없이, 간단하게 웹사이트를 몇 번 클릭하는 것만으로도 지구 반대편의 데이터 센터에 서버, 스토리지 구성, 네트워크 구성이 가능하게 되었다는 것이다.

결론

개발을 할 때 필요한 모듈을 오픈 소스를 조합해서 만들 수 있으며, 좋은 도구들을 통해서 빌드나 배포등을 쉽게 자동화할 수 있게 되었고, 클라우드를 통해 개발자도 네트워크, 서버등에 대한 설정들을 할 수 있어지고, 부족한 정보들은 인터넷을 통해 얻을 수 있게 되었다. 결과적으로 개발자가 할 수 있는 영역이 더욱 더 넓어져 인프라에 대한 전문 지식 없이도, 인터넷과 오픈 소스 그리고 클라우드의 도움을 받아서, 운영을 같이할 수 있는 환경이 마련됬다는 것이다.

DevOps를 위한 핵심 카테고리와 관련된 tool

  • Planning (기획)
    • GitLab
    • Tasktop
    • CollabNet’s VersionOne
    • Trello
    • Azure Boards
  • Issue Tracking (이슈 추적)
    • Atlassian’s Jira
    • JetBrains’ YouTrack
    • Zendesk
  • Source Control (소스 코드 관리)
    • Git
    • GitHub
    • GitLab
    • Bitbucket
    • Subversion
  • Build Tools (빌드 도구)
    • Maven / gradle
    • MSBuild
    • Rake
    • JFrog Artifactory
    • NuGet
  • Tesing Tools (테스팅 도구)
    • JUnit
    • xUnit.net
    • Selenium
    • Jasmine
    • Cucumber
  • Continuous Integration (지속적인 통합)
    • Jenkins
    • Travis CI
    • Circle CI
    • AWS CodePipeline
    • Concourse
  • Continuous Deployment(Delivery) (지속적인 전달(배포))
    • Spinnaker
    • Octopus Deploy
    • AWS CodeDeploy
  • Configuration-Management Tools (설정 관리 도구)
    • Terraform
    • BOSH
    • Chef
    • Ansible
    • Puppet
  • Cloud Playform (클라우드 플랫폼)
    • Amazon Web Service(AWS)
    • Microsoft Azure
    • Google Cloud Platform
    • Container Schedulers(k8s, Docker Swarm, …)
    • Heroku
  • Monitoring and Logging Tools (모니터링 및 로깅 도구)
    • ELK Stack
    • Pinpoint
    • Zipkin
    • New Relic
    • Prometheus
  • Communication Tools (의사소통 도구)
    • Slack
    • Microsoft Teams
    • Google Hangouts
    • Zoom
  • Knowledge Sharing Tools (지식 공유 도구)
    • GitHub Pages
    • Confluence
    • Jekyll
    • Google Sites

참고: https://imbf.github.io/devops/2020/10/28/What-is-The-DevOps.html

profile
Just do it

0개의 댓글