[DevOps] DevOps의 개념이란

Cover image

DevOps

말 그대로 DevOpsd에 대한 정리입니다. DevOps에 대한 이야기는 많이 들어보고, 어떠한 개발자들은 DevOps에 대해 꿈을 꾸고 업으로 하겠다는 이야기를 들은적이 있는데 정확하게 DevOps가 어떤 의미를 가지는 지에 대해 알아보기로 했습니다.

DevOps의 정의

DevOps는 개발(Dev)와 운영(Ops)의 합성어이며, 고객에게 지속적으로 가치를 제공하도록 지원하는 사람, 프로세스 및 기술의 합집합입니다. 이러한 DevOps는 어플리케이션과 서비스를 빠른 속도로 제공할 수 있습니다.

DevOps는 개발, IT 운영, 품질 엔지니어링, 보안 등이 서로 조율하고 협업하여 더욱 안정적이고 뛰어난 제품을 생산할 수 있도록 지원합니다. 이러한 DevOps 방식과 문화를 통해 고객 요구 사항에 보다 효과적으로 대응하고 애플리케이션을 빌드하고, 비지니스 목표를 달성할 수 있습니다.

image

개발자는 새로운 것을 도입하여 기능을 향상 시키는 것을 목표로 하지만, 운영 측면에서는 안전성을 최우선으로 여깁니다. 이를 잘 융합시키고 의사소통으로 원할하게하는 것이 DevOps이며, 이는 소프트웨어 개발 방법론 중 하나입니다.


DevOps의 이점

DevOps는 다음과 같은 장점을 가집니다.

속도

  • 작업 속도가 빨라지며 고객을 위해 더 빠르게 혁신합니다.
  • 시장 변화에 더 잘 적응하고 좀 더 효율적인 비지니스 성과를 창출합니다.
  • MSA와 CI/CD를 통해서 서비스를 주도적으로 운영하고 업데이트를 좀 더 빠르게 릴리스할 수 있습니다.

신속한 제공

  • 릴리스의 빈도와 속도를 개선하여 제품을 더 빠르게 혁신하고 개선할 수 있습니다.
  • CI/CD는 빌드에서 배포까지 release 프로세스를 자동화할 수 있습니다.

안정성

  • 애플리케이션 업데이트와 인프라 변경의 품질을 통해 최종 사용자에게 좋은 경험을 지속적이고 안정적이게 제공합니다.
  • CI/CD와 같은 방식을 통해 안전한지에 대해 테스트합니다.
  • 모니터링과 로깅 방식을 통해 실시간으로 성능에 대한 정보를 얻을 수 있습니다.

확장

  • 규모에 따라 인프라와 개발 프로세스를 운영 및 관릭합니다.
  • 자동화와 일관성이 지원되므로 위험을 줄이면서 복잡하고 변동성 있는 시스템을 효율적으로 관리할 수 있습니다.
  • 코드형 인프라를 사용하면 프로덕션 환경을 반복 가능하고 좀 더 효율적인 방식으로 관리할 수 있습니다.

협업 강화

  • 주인의식 및 책임 가치를 강조하므로 DevOps 문화에서는 좀 더 효과적인 팀을 구축합니다.
  • 개발자와 운영팀은 긴밀하게 협력하고 많은 책임을 공유하며, 워크플로를 결합하여 비효율성을 줄이고 시간을 절약합니다,

보안

  • 제어를 유지하고 규정을 준수하며 신속하게 진행할 수 있습니다.
  • 자동화된 규정 준수 정책, 세분화된 제어 및 구성 관리 기술을 사용함으로\$써 보안을 유지하며 DevOps 모델을 도입할 수 있습니다.
  • 코드형 인프라와 코드형 정책을 사용하면 규모에 따라 규정 중수를 정의하고 추적할 수 있습니다.

DevOps의 특징

Cross Functional Team

서비스 기획부터 개발, 운영, 테스트, 배포 등 모든 제품 개발 프로세스를 하나의 팀에서 할 수 있도록 합니다.

Widely Shared Metrics

서비스를 개발만 하는게 아니라 서비스가 운영에서 잘돌아가고 있는지, 사용자의 반응은 어떤지를 측정할 수 있는 기준을 제공합니다.

Automating repetitive tasks

반복적인 일들은 자동화합니다. CI/CD를 통해 빌드, 배포, 테스트의 프로세스를 자동화하여 생산적인 결과를 얻을 수 있습니다. 더 나아가서 자동화 툴을 통해 시스템 전체에 대한 이해가 높아집니다.

Post mortems

후처리의 의미를 가지고 있습니다. 장애나 이슈가 있을때, 그 결과를 팀원들과 공유해야합니다.

Regular Release

짧은 주기의 정기 배포를 통해서 빠르게 서비스의 기능을 개선하고 고객들의 소리를 반영해서 나아가야합니다.


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

DevOps는 계획, 개발, 제공, 운뎡 단계 전반에 걸쳐 애플리케이션 수명 주기에 영향을 줍니다. 각 단게는 서로 영향을 주며 단계가 특정 역할에 한정되지 않습니다.

DevOps-Lifecycle

  • 계획

    • 애플리케이션과 시스템의 특징 및 기능에 대해 아이디어를 도출합니다.
  • 개발

    • 팀원들이 코드를 작성하고 검토하고 통합하는 코딩의 모든 측면과 이 코드를 다양한 환경에 배포할 수 있는 빌드 아티팩트로 빌드하는 작업이 포함됩니다.
  • 제공

    • 일관성 있고 안정적인 방식으로 프로덕션 환경에 애플리케이션을 배포하는 과정을 의미합니다.
  • 운영

    • 프로덕션 환경에서 애플리케이션을 관리, 모니터링 및 문제 해결하는 작업이 이루어집니다.

DevOps의 문화

DevOps 방식을 도입하면 기술을 통해 프로세스를 자동화 및 최적화할 수 있습니다. 모든 것을 조직 내부의 문화에서 나아가 문화의 핵심적인 부분은 사람에게서 시작을 하고, 이러한 문화가 정착되어야합니다.

  • 협업, 가시성 및 조율

    • 개발 팀, IT 운영 팀 등은 DevOps 프로세스의 우선 순위, 우려 사항을 다른 팀과 공유해야하며 효과적인 협업을 계획해야합니다.
  • 팀 역할 범위와 책임의 변환

    • 주인의식을 가지고 관여해야합니다.
  • 짧은 릴리스 주기

    • 짧은 릴리스를 통해 민첩성을 유지합니다.
    • 고객 요구 사항과 경쟁사의 압박에 유연하게 대응가능합니다.
  • 지속적인 학습

DevOps에 대해 공부하겠다면?

배포와 서버, DevOps에 대해 다음과 같은 내용을 공부하면 좋습니다. (약간 주제에 어긋날 수도 있지만.)

  • Hosting Platforms

    • Heroku, AWS, Azure, Digital Ocean
  • Web Servers

    • Nginx, Apache
  • Container

    • Docker, Kubernetes, Vagrant
  • Image/Video

    • Cloudinary, S3
  • CI / CD

    • Jenkins, Travis CI, Circle CI

마무리.

간단하게 DevOps에 대해 정리해보았습니다. DevOps에 대한 개념은 이후에 공부하는 다양한 기술 들에 밑바탕이 되는 지식이라고 생각합니다.


출처