devops 도입 이유

2020년 10월 25일 · 김병규

요즘 개발을 할 때 devops라는 단어를 많이 들어봤을 겁니다. 그래서 devops란 무엇이며, 왜 필요한지 포스팅 해보겠습니다.

DevOps

요즘은 개발을 할 때 개발만 하면 끝이 아니라 프로젝트를 빌드|배포|테스트까지 하는 운영 업무도 동시에 해야만 합니다. 보통 회사에서는 이 두개의 일을 하는 조직을 나눠서 관리하게 된다. 그런데 하나의 서비스를 두개의 팀에서 관리하다보면 비효율적인 부분들도 많고 서로 의사소통하기에도 좋지 않습니다. 개발자는 계속해서 새로운것을 도입하고 싶어하지만, Ops들은 안정성을 최우선으로 여깁니다. 그래서 등장한것이 DevOps입니다.

이 DevOps라는 개념은 소프트웨어 개발 방법론 중 하나입니다. 개발자들과 Ops들을 서로 잘 융합시키고 의사소통이 원할하게 하기 위한 개발 방법론입니다.

DevOps 이점

  1. 속도
    배포까지의 빠른 작업속도를 효율적으로 제공하기 때문에 시장 변화에 빠르게 대처하고 비즈니스 성과를 창출 가능.
  2. 빠른 배포
    새로운 릴리즈와 버그픽스를 빠르게 배포할 수 있으며, 그로 인해 고객의 요구를 빠르게 대응 가능.
  3. 안전성
    지속적 통합, 지속적 전달, 모니터링, 로깅을 통해 안정적인 서비스 품질을 고객에게 제공 가능.
  4. 확장 가능
    복잡하거나 변화하는 시스템을 효율적으로 관리 가능.
  5. 협업 강화
    개발자와 운영팀이 긴밀하게 협력할 수 있기 때문에 책임을 공유하고 워크플로우를 결합할 수 있음. 이를 통해 비효율을 줄이고 시간 절약 가능.

뭘해야 할까?

1. SCM (Source Code Management)

우선 팀 단위로 개발되는 소스를 지속적으로 관리해줘야 합니다. 아래와 같은 버전 관리 시스템을 이용해 소스코드 관리를 합니다.

이를 위해 Git, SVN 등을 사용합니다

2. 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))

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

3. 모니터링 및 로그 수집

배포 이후 모니터링 및 로깅을 하여 제품이 최종사용자 경험에 어떤 영향을 미치는지 확인합니다. 데이터에 대한 실시간 분석을 수행하거나 알림을 생성 할 수 있으며, 사용자 데이터를 모니터링하여 서비스 발전에 방향을 잡고 계획할 수 있습니다.

현재 에임스는?

진행중인 내용

  1. SCM (Source Code Management)
    Aims 기술 개발팀은 현재 github를 활용하여 관리하고 있다. aims-dev의 부모 계정에서 모든 프로젝트를 관리하며, 각 개인의 계정은 collaborator로 접근하고 있다.

도입해야할 내용

  1. CI/CD
    아직은 구축되어 있진 않지만, 구축에 대한 구상은 완료된 상태이며, 실무자들과 협의하여 구축할 예정이다.
    • AWS
    • Docker
    • Jenkins
  2. 모니터링 및 로그 수집
    아직은 구축에 대한 구상도 하지 못했지만, 빠른 시일내에 담당자들과 같이 협의하여 구축을 진행해야겠다.

다음 포스팅을 작성해줄 분은 바로 에임스의 디자인을 총괄 하고 있는 주총명 선임 연구원 입니다.