[현장 개발용어 기초개념]현장 담당자가 DevOps를 말하는 의도는 무엇인가

2024. 6. 28. 10:04컴퓨터과학

반응형

- DevOps의 일반적인 개념과 작업현장에서 쓰이는 표현에 대한 미묘한 차이를 다루고자 합니다.

- 개발자만 개발을 언급하지 않습니다. 대부분의 현장작업은 DX/AX라는 이름으로 디지털화 자동화를 시도합니다. 

- 개발자들이 사용하던 의미와 미묘하게 다른 의미로 현장에서 사용될 수 있습니다. 정확한 사전적 의미보다는 현장이 언급하는 표현의 느낌을 이해하고자 합니다.

 

 

 

 


 

 

DevOps는 개발(Development)과 운영(Operation)을 결합한 개념으로, 소프트웨어 개발과 IT 운영을 하나로 통합하는 접근 방식입니다. 이는 개발과 운영 팀이 서로 긴밀하게 협력하여 소프트웨어 개발, 테스트, 배포 및 모니터링을 자동화하고 지속적으로 수행하는 것을 목표로 합니다. DevOps는 다음과 같은 원칙에 기반합니다:

  1. 자동화: 빌드, 테스트, 배포 과정을 자동화하여 반복 가능하고 신뢰할 수 있는 결과를 얻습니다.
  2. 지속적 통합(CI): 코드 변경 사항을 지속적으로 통합하고 테스트하여 코드의 품질을 유지합니다.
  3. 지속적 배포(CD): 자동화된 배포 파이프라인을 통해 변경 사항을 신속하게 프로덕션 환경에 배포합니다.
  4. 협업: 개발 팀과 운영 팀이 긴밀하게 협력하여 문제를 신속하게 해결하고 지속적으로 개선합니다.

DevOps의 예시

  1. CI/CD 파이프라인: 개발자가 코드를 커밋하면 자동으로 빌드하고 테스트한 후, 성공 시 자동으로 배포하는 파이프라인을 설정합니다. Jenkins, GitLab CI/CD, CircleCI와 같은 도구를 사용할 수 있습니다.
  2. 인프라 자동화: 코드로서의 인프라(Infrastructure as Code, IaC)를 통해 인프라를 자동으로 프로비저닝하고 관리합니다. 예를 들어, Terraform, Ansible, CloudFormation 등을 사용합니다.
  3. 모니터링 및 로깅: 애플리케이션 및 인프라의 성능을 모니터링하고 로그를 수집하여 문제를 사전에 감지하고 해결합니다. Prometheus, Grafana, ELK 스택 등이 사용됩니다.

 

실제 현장에서 쓰이는 DevOps개념의 맥락

상황 예시 : 

"우리 현장 작업 담당자들이 사용하는 모바일 어플리케이션의 기능 개선은 개발팀을 통해서만 가능했었다. 그러다 보니 필요한 기능이나 불편한 점이 있으면 우리가 할 수 있는것은 이론적으로 필요성을 따져보는것이 전부였고, 그 후에 개발팀의 개발 착수가 이루어지는 것이었다. 이것의 문제는 그 기능을 사용해보는 테스트작업이나 검증작업이 사전에 이루어질 수 없으며 실제 영향력과 상관 없이 개발비용은 이미 막대하게 소모되었다는 것이다. 진짜 써 보니 실제로는 필요없는 기능일지라도 개발비용은 계속 낭비되는것이다. 하지만 앞으로는 우리가 직접 DevOps해서 새로운 기능을 테스트해보고 기능 검증도 해 볼 수 있어야 한다. 그 후에 구체적인 기능의 필요성이 입증되면 개발비를 투자할 수 있는 상황에 닿을 것이다."

 

위 텍스트에서 'DevOps를 한다'는 개념은 모바일 어플리케이션의 기능 개선과 관련된 테스트 및 검증 과정을 개발팀의 도움 없이 현장 작업 담당자들이 직접 수행할 수 있게 한다는 의미로 쓰였습니다. 이는 다음과 같은 방식으로 이루어질 수 있습니다:

  • 테스트 자동화: 현장 작업 담당자들이 간단한 코드나 스크립트를 작성하여 새로운 기능을 테스트할 수 있게 합니다. 예를 들어, Selenium, Appium 등을 사용하여 모바일 어플리케이션의 기능을 자동으로 테스트합니다.
  • 간단한 배포 파이프라인 설정: 현장 작업 담당자들이 간단한 CI/CD 파이프라인을 설정하여 새로운 기능을 사전 테스트 환경에 배포하고 검증할 수 있게 합니다.
  • 피드백 루프 강화: 현장 작업 담당자들이 새로운 기능을 직접 사용해보고 피드백을 제공하여 기능의 필요성을 입증하고 개선할 수 있도록 합니다.

이러한 DevOps 접근 방식은 현장 작업 담당자들이 필요한 기능을 빠르게 테스트하고 검증할 수 있도록 하여 불필요한 개발비용 낭비를 줄이고, 실제로 필요한 기능만 개발되도록 도와줍니다.

반응형