데브옵스(DevOps)

@Deneb·2022년 1월 14일
1

"DevOps가 뭔지아냐?"
필자 : Development랑 음.. operation? 개발운영이요?
"오 하나는 아네"

👨‍💻DevOps 그게 뭔데

데브옵스(DevOps)란 "Development(개발) + Operation(운영)을 결합해 탄생한 용어로, 시스템 개발자와 운영을 담당하는 전문가 사이의 소통(Communication), 협업(Collaboration), 통합(Integration), 자동화(Automation)을 바탕으로 애플리케이션 개발과 고객에게 제공되는 서비스를 빠른속도로 제공될 수 있도록 조직의 역량을 향상시키는 소프트웨어 개발론" 이다.


DevOps는 애플리케이션 개발의 품질과 속도를 개선하고신규 또는 수정된 소프트웨어 기능이나 제품의 릴리즈 주기 단축을 장려하는 새로운 철학이자 프레임워크이다.

개발팀과 해당 IT 운영 팀간의 원활하고 지속적인 커뮤니케이션, 협업, 통합, 가시성 및 투명성을 장려한다.

넷플릭스는 기존 자사의 서비스를 클라우드 기반으로 전환한 후 각 기능에 대한 모든 운영과 개발은 한팀 또는 책임자에게 전담하고있어 DevOps의 사례로도 유명하다.

👨‍💻DevOps의 장점

1. 속도

  • 베포까지의 빠른 작업속도를 효율적으로 제공하기 때문에 시장 변화에 빠르게 대처하고 비즈니스 성과를 창출 가능

    2. 빠른 베포

  • 새로운 릴리즈와 버그픽스를 빠르게 배포할 수 있으며, 그로 인해 고객의 요구를 빠르게 대응 가능

    3. 안정성

  • 지속적 통합, 지속적 전달, 모니터링, 로깅을 통해 안정적인 서비스 품질을 고객에게 제공 가능

    4. 협업 강화

  • 개발자와 운영팀이 긴밀히 협력할 수 있기 때문에 책임을 공유하고 워크플로우를 결합할 수 있는데 이를 통해 비효율을 줄이고 시간절약 가능

    5. 보안 강화

  • 자동화된 규정 준수 정책 및 세분화된 제어 및 구성 관리 기술을 통하여 제어를 유지하고 규정을 준수하며 작업을 진행해 나아감으로써 보안을 지켜나아갈 수 있도록 해준다

👨‍💻DevOps의 필요성

  • 더 우수한 제품을 더 빠르게 제공
  • 더 빠른 문제 해결 및 복잡성 감소
  • 확장성 및 가용성 향상
  • 보다 안정적인 운영 환경
  • 향상된 리소스 활용률
  • 자동화 향상
  • 시스템 결과에 대한 가시성 개선

👨‍💻DevOps 사례

DevOps 사례는 지속적인 개선 및 자동화 개념을 반영한다

1. 지속적인 개발

  • DevOps 라이프사이클의 계획 및 코딩 단계에 걸쳐 적용된다
    지속적인 테스트. 이 사례는 애플리케이션 코드를 작성하거나 업데이트하는 동안 자동화되고 사전 예약된 지속적인 코드 테스트를 포함한다. 이러한 테스트를 수행하면 코드를 더 빠르게 운영 환경에 제공할 수 있다.

2. 지속적인 통합(CI)

  • 구성 관리(CM) 툴을 다른 테스트 및 개발 툴과 함께 사용하여 개발 중인 코드의 운영 준비 상태를 추적한다. 테스트와 개발 간의 신속한 피드백을 통해 코드 문제를 신속하게 파악하고 해결하는 작업이 포함된다.

3. 지속적인 제공

  • 테스트 후 사전 운영 또는 스테이징 환경으로 코드 변경을 제공하는 작업을 자동화한다. 제공된 후에는 직원이 이러한 코드 변경을 운영 환경으로 승격할 수 있다.

4. 지속적인 구축(CD)

  • 지속적인 제공과 마찬가지로 이 사례는 신규 또는 변경된 코드를 운영 단계로 자동 릴리즈한다. 지속적인 구축을 수행하는 회사에서는 코드 또는 기능 변경을 하루에 여러 번 릴리즈할 수 있다. Docker, Kubernetes 및 기타 컨테이너 기술을 사용하면 서로 다른 구축 플랫폼 및 환경에서 코드의 일관성을 유지하여 지속적인 구축을 지원할 수 있다.

5. 지속적인 모니터링

  • 작동 중인 코드와 이를 지원하는 기본 인프라에 대한 지속적인 모니터링과 관련된다. 피드백 루프를 통해 버그 또는 문제를 보고한 후 다시 개발 단계로 되돌아간다.

6. 코드형 인프라

  • 다양한 DevOps 단계에서 소프트웨어 릴리즈에 필요한 인프라 프로비저닝을 자동화하는 데 사용될 수 있다. 개발자는 기존 개발 툴 내에서 인프라 "코드"를 추가한다. 예를 들어 개발자는 Docker, Kubernetes 또는 OpenShift에서 필요에 따라 스토리지 볼륨을 생성할 수 있다. 또한 운영 팀은 이 사례를 통해 환경 구성을 모니터링하고, 변경 사항을 추적하며, 구성 롤백을 간소화할 수 있다.

👨‍💻그럼 뭘 해야 되는가?

SCM(Source Code Management)

  • 우선 팀 단위로 개발되는 소스를 지속적으로 관리해줘야 한다.
  • Git, SVN 같은 버전 관리 시스템을 이용해 소스코드를 관리한다

CI/CD

보통 하나의 서비스를 여러 명이 팀 단위로 작업을 하게 되는데 이렇게 각각 개발한 코드 빌드부터 배포까지 걸리는 시간 단축을 위해서 CI/CD 구축이 필요하다

CI (Continuous Integration)

지속적인 통합
CI는 Build와 Test를 실시하는 프로세스이다.
서비스의 품질관리를 위해서 지속적인 빌드와 테스트 과정을 지원한다 .

  • Build
  • Unit Test
  • Code Coverage

일반적으로 CI를 위해 Jenkins, Travis CI 등을 사용

CD (Continuous Deploy (or Continuous Delivery)

지속적인 배포
빌드단계 이후의 소프트웨어의 배포를 자동화 한다.
개발자가 원할 때 언제나 즉시 테스트 혹은 프로덕션에 지속적으로 배포할 수 있다.

👨‍💻Devops 성공사례

1. Netflix

  • 넷플릭스는 업계에서도 데브옵스 기법을 가장 먼저 사용해서 프로그래머들과 IT 관리자들의 일상 업무를 자동화하는데 큰 도움을 받았다. 넷플릭스 스트리밍 서비스는 마이크로서비스(microservice)를 가진 클라우드 기반의 인프라 위에서 운영되고 있는데 거의 대부분이 오픈소스로, 커뮤니티의 지원을 받는 소프트웨어를 사용하고 있기에 2015년 잭스(JAX) 컨퍼런스에서 혁신에 대한 공로를 인정받기도 했다.

2. Facebook

  • 소프트웨어를 정식으로 출시하기 전 미리 버그를 고칠 수 있게 도와주고, 인프라도 신속하게 구축할 수 있었다고한다. 실제로 페이스북은 데브옵스 분야에서는 선구자에 속하며, 소프트웨어의 개발과 활용 방법을 변화 시켰다.

3. Amazon

  • 아마존은 세계 최대의 온라인 소매업체이면서, 동시에 데브옵스 분야에서도 가장 성공한 기업들 중의 한 곳이다.

참고

데브옵스란 무엇입니까? – Amazon Web Services(AWS)
DevOps란 무엇이며 CI는 무엇인가

profile
JeongSeob LEE

0개의 댓글