Computer_Language/Etc.

[DevOps] DevOps란 무엇인가

Joo-Topia 2019. 11. 2. 17:57

이미지 출처 : https://medium.com/@neonrocket/devops-is-a-culture-not-a-role-be1bed149b0

 

DevOps를 공부하기 위해 구글에 검색해보고 위키백과도 한번쯤은 읽어봤을 것이다.

"Developement(개발)Operations(운영)의 합성어", "개발자와 운영자의 소통, 협업 및 통합을 강조하는 개발 환경이나 문화"라고 정의한다.

하지만 이 한 줄 정의만으론 DevOps에 대한 이미지가 그려지지 않았기에 내 방식대로 정리를 시작하게 됐다.

 

DevOps의 배경


하나의 소프트웨어를 개발하면서 개발자와 운영자 사이에 갈등이 생긴다. 개발자는 고객의 요구에 따른 변경을 빠르게 보기를 원하고, 운영자는 속도 보단 안정성을 중요시하기 때문이다. 새로운 프레임 워크의 도입 등 더 다양한 이유도 있을 것이다.

이러한 배경에서 등장한 것이 DevOps이다.  DevOps는 위에서 언급했던 "Developement(개발) Operations(운영)의 합성어", "개발자와 운영자의 소통, 협업 및 통합을 강조하는 개발 환경이나 문화"라고 정의하며, 소프트웨어 개발 방법론 중 하나이다.

과거의 개발 방법론이나 문화는 "소프트웨어의 품질"을 위해서 존재했지만, DevOps는 "개발자의 행복"을 위해서 존재한다. 관련된 내용에 대해서는 여기에 너무 잘 나와있어서 읽어보는 것을 추천한다.

 

DevOps의 방식


  • CI/CD (지속적인 통합 및 지속적인 배포)
    CI(Continuous Integration)는 빌드와 테스트를 , CD(Continuous Depoloy)는 배포를 담당

  • 버전 제어
    코드를 버전으로 관리하는 것을 의미한다. 코드의 수정과 변경 이력을 관리하는 것이다.
    git을 사용해 본 경험이 있어서 그나마 한 번에 이해된 개념 중 하나이다.

  • Agile Software Development
    작업 계획을 짧은 단위로 세우고 시제품을 만들어 나가는 사이클을 반복함으로써 고객의 요구 변화에 유연하고도 신속하게 대응하는 개발 방법론이다.
  • IaC(Infrastructure as code)
    팀들이 시스템을 코딩하는 것처럼 관리할 수 있도록 이를 설명적으로 정의한다.
  • Configuration Management
    안정적인 지속적 배포를 위해 서버 및 서비스의 설정을 관리한다.
    OS, 라이브러리 및 버전, 설치 수서 등을 특정하여 더욱 안정적인 배포를 할 수 있게 해 준다.
  • 지속적인 모니터링
    전체 애플리케이션 스택의 성능과 상태에 대한 완전한 실시간 가시성을 갖는 것을 의미한다. 지속적인(실시간) 모니터링을 바탕으로 문제에 실시간으로 대응할 수 있고 개선할 방안을 도출할 수 있다.

 

참고 링크
https://azure.microsoft.com/ko-kr/overview/what-is-devops/

https://asfirstalways.tistory.com/303

https://brunch.co.kr/@supims/18