# \[105호] 지금 당장 DevOps를 해야 하는 이유

{% hint style="info" %}
💡 By **김충섭** 퍼플아이오

퍼플아이오에서 소프트웨어 엔지니어로 즐겁게 일하고 있습니다. 개발자를 편하게 해주는 자동화 기술과 효율적인 개발 프로세스에 관심이 많고 DevOps와 Docker, Kubernetes, React.js를 좋아합니다. 개발을 통해 배운 것을 블로그([subicura.com](http://subicura.com/))에 작성하고 44bits에서 이야기합니다. 어떻게 하면 조직 전체가 즐겁게 일하고 개인도 발전할 수 있을까 고민이 많습니다.

배포를 더 자주, 더 빠르게 할 수 있는 방법은 없을까요? 지금 바로 적용할 수 있는 방법이 있나요?

이 질문의 답을 알려줄 수 있는 DevOps는 소프트웨어 개발과 운영의 합성어로 소프트웨어 제품과 서비스를 빠른 시간에 개발 및 배포하는 것을 목적으로 합니다. 서비스가 복잡해지고 빌드와 배포가 많아질수록 효율적인 개발 & 배포 프로세스가 필요해요. 따라서 특정한 기술과 도구를 잘 쓰려는 도구가 아닌 문화로서 DevOps를 도입하고 자동화, 측정, 공유, 축적하는 것이 중요합니다. DevOps가 무엇인지 알아보고 지금 바로 적용해 봅니다!
{% endhint %}

### Q. 프로젝트에서 제일 중요한 포인트는?

* 퀄리티도 중요하지만 프로젝트에서 중요한건 산출물을 보다 빠르고 정해진 일정내에 배포하는것이다
* 실력이 좋은 개발자는 많지만 실제로 일정산정을 하는 부분은 어려워하는 개발자도 많다
* 실제로 아마존은 평균 11.7초 당 한번씩 배포한다고 측정되어진다

<figure><img src="https://2649832514-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5HOStxvx-Jr0fqZhyW%2Fuploads%2FbTeJvel6Jsnbbh5ZdNsb%2F1.jpeg?alt=media&#x26;token=6ad2bee5-c295-475a-a3b1-684088462290" alt=""><figcaption></figcaption></figure>

### Q. 어떻게 하면 개발과 배포를 빠르게 할수 있을까?

* 공부 열심히 하기(인강, 스터디, 컨퍼런스를 이용한다)
* 양으로 승부한다(개발자를 많이 채용한다. 하지만.. 대기업만큼 채용이 쉽게 되지는 않는다…ㅜ)

<figure><img src="https://2649832514-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5HOStxvx-Jr0fqZhyW%2Fuploads%2FW8DSjM4Add0THPTglXiu%2F2.jpeg?alt=media&#x26;token=42ca725f-a038-4a30-91d5-f7567a6652c2" alt=""><figcaption></figcaption></figure>

* 애자일 및 각종 방법론 도입하기
* MSA 도입(생각보다 어렵다…ㅜ)
* 데브옵스가 정답이다

### Q. DevOps란 무엇인가?

<figure><img src="https://2649832514-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5HOStxvx-Jr0fqZhyW%2Fuploads%2FStAft4FjsP1Bz2VVkFN9%2F3.png?alt=media&#x26;token=bc61905e-9515-41d3-a9e3-ae039b5d7199" alt=""><figcaption></figcaption></figure>

* 개발과 운영의 합성어다
* 소프트웨어 개발자와 정보기술 전문가 간의 소통, 협업 및 통합을 강조하는 개발 환경이나 문화를 말한다
* 소프트웨어 제품과 서비스를 빠른 시간에 개발 및 배포하는 것을 목적으로 한다

#### Q. 데브옵스는 좋은 도구를 잘 사용하는것을 일컫는가?

* 단순히 도구를 사용하기 보단 목적과 타이밍을 잘 적용하는게 중요하다
* 데브옵스는 철학 & 방법론 ⇒ 문화라고 할수 있다

#### 데브옵스 진화 과정

<figure><img src="https://2649832514-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5HOStxvx-Jr0fqZhyW%2Fuploads%2FfIxgdmSH12Mj5ptRYJsH%2F4.png?alt=media&#x26;token=9d5e4c8f-97d9-4853-86e4-a52f212b4483" alt=""><figcaption></figcaption></figure>

1. 개발자 한명이 IDE를 사용하여 개발한다
2. 점차 개발자가 투입되면서 코드 형상관리를 도입한다
3. 실무자 또는 작업자들이 확인할 수 있도록 지속적인 배포와 지속적인 통합할 수 있도록 구축한다
4. 배포된 서비스의 분량이 커지면서 운영되고 있는 서비스의 모니터링 도입을 검토한다

#### 데브옵스를 시작하는 과정

<figure><img src="https://2649832514-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5HOStxvx-Jr0fqZhyW%2Fuploads%2FDpGSPYjpq8mZnocY4zS7%2F5.png?alt=media&#x26;token=a2a2f5d8-1362-47ed-9fa8-622909ca82f2" alt=""><figcaption></figcaption></figure>

1. 개선하려고 검토한다
2. 도입을 해서 5분에서 1분으로 빨라졌다
3. 써봤더니 개선되었다
4. 공유된 경험은 회사의 자산으로 축적된다

### DevOps를 도입하려면 어떤 과정이 필요한가?

<figure><img src="https://2649832514-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5HOStxvx-Jr0fqZhyW%2Fuploads%2FISsFFnBEpzkmWKeS8o5Y%2F6.png?alt=media&#x26;token=c150626e-9cc7-418d-aa69-b6344cf3eb83" alt=""><figcaption></figcaption></figure>

* 개발과 배포 사이에는 다양한 과정이 존재 한다
* 이런 과정 모두가 지연이 되는 요소로 자리 잡고 있으며 개선해나가는 과정이 곧 DevOps라고 할수 있다
* DevOps를 도입할 수 있는 요소
  * 자동화
    * 소스 푸시 → 자동 빌드 → 자동 배포
    * 오토스케일링
    * 배포시 자동 테스트
  * 측정
    * 웹에서 로그를 검색하고 알림 설정
    * 리소스 사용량 모니터링
    * 보안 검사 도구
  * 공유
    * 노하우와 프로세스를 문서화
    * 개발에 도움이 되는 내용 공유 및 발표
    * 문제 발생 → 회고 → 개선
  * 축적
    * 더 나은 방법 도입 / 개선
    * 자연스럽게 도입하려는 문화

#### Q. 실제 적용해볼만한 사례는 어떤게 있을까?

* npm install이 느리다

  → yarn v2에 zero install이 있다
* git colne하는데 너무 느리다

  → shallow clone을 도입한다
* 주간 보고 정리 오래걸린다(git commit)

  → git changelog generator

  → gitmoji
* 배포가 자꾸 깨진다

  → docker 도입
* QA 시간이 너무 길다

  → e2e 테스트 도입
* 로그인하고 승인이 번거롭다

  → chatbot 도입

### DevOps를 지금 당장 해야 하는 이유는 무엇인가?

<figure><img src="https://2649832514-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M5HOStxvx-Jr0fqZhyW%2Fuploads%2FCPWLVGitqfpOBryoqgsH%2F7.png?alt=media&#x26;token=916cd714-2362-4ea0-800e-97f0d872d78b" alt=""><figcaption></figcaption></figure>

* 하루 10분 절약 → 한달이면 200분 → 개발자수 만큼?
* 데브옵스 과정에서 생각보다 많은 인프라 지식을 배울 수 있다
* 개발 시야가 넓어지고 더 깊이 이해할 수 있다
* 회사 홍보와 채용에 도움이 된다
* 잠을 푹 잘 수 있다
* 시작은 미비할수 있어도 이런 경험들이 쌓이고 쌓여서 회사(개인)에 큰 도움이 될수 있다
