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

💡 By 김충섭 퍼플아이오
퍼플아이오에서 소프트웨어 엔지니어로 즐겁게 일하고 있습니다. 개발자를 편하게 해주는 자동화 기술과 효율적인 개발 프로세스에 관심이 많고 DevOps와 Docker, Kubernetes, React.js를 좋아합니다. 개발을 통해 배운 것을 블로그(subicura.com)에 작성하고 44bits에서 이야기합니다. 어떻게 하면 조직 전체가 즐겁게 일하고 개인도 발전할 수 있을까 고민이 많습니다.
배포를 더 자주, 더 빠르게 할 수 있는 방법은 없을까요? 지금 바로 적용할 수 있는 방법이 있나요?
이 질문의 답을 알려줄 수 있는 DevOps는 소프트웨어 개발과 운영의 합성어로 소프트웨어 제품과 서비스를 빠른 시간에 개발 및 배포하는 것을 목적으로 합니다. 서비스가 복잡해지고 빌드와 배포가 많아질수록 효율적인 개발 & 배포 프로세스가 필요해요. 따라서 특정한 기술과 도구를 잘 쓰려는 도구가 아닌 문화로서 DevOps를 도입하고 자동화, 측정, 공유, 축적하는 것이 중요합니다. DevOps가 무엇인지 알아보고 지금 바로 적용해 봅니다!

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

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

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

  • 공부 열심히 하기(인강, 스터디, 컨퍼런스를 이용한다)
  • 양으로 승부한다(개발자를 많이 채용한다. 하지만.. 대기업만큼 채용이 쉽게 되지는 않는다…ㅜ)
  • 애자일 및 각종 방법론 도입하기
  • MSA 도입(생각보다 어렵다…ㅜ)
  • 데브옵스가 정답이다

Q. DevOps란 무엇인가?

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

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

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

데브옵스 진화 과정

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

데브옵스를 시작하는 과정

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

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

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

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

  • npm install이 느리다
    → yarn v2에 zero install이 있다
  • git colne하는데 너무 느리다
    → shallow clone을 도입한다
  • 주간 보고 정리 오래걸린다(git commit)
    → git changelog generator
    → gitmoji
  • 배포가 자꾸 깨진다
    → docker 도입
  • QA 시간이 너무 길다
    → e2e 테스트 도입
  • 로그인하고 승인이 번거롭다
    → chatbot 도입

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

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