DevOps란?
DevOps란?
1. 등장 배경
개발만이 전부가 아니다. 프로젝트를 빌드하고 배포하고 테스트하는 운영업무도 해야 한다.
만약, 두 개의 일을 다른 조직이 나눠서 관리하게 된다면 의사소통도 좋지 않고 비효율적인 면이 많을 것이다.
그래서 등장한 것이 DevOps이다.
2. DevOps란?
DevOps는 소프트웨어 개발 방법론 중 하나이다.
하나의 소프트웨어를 개발하기 위해 여러 명이 동시에 개발할 수 있는 환경도 필요하며(Dev)
수천명의 사용자를 상대하는 서버, 스토리지, 운영체제 등 인프라 환경도 필요하다.(Ops)
DevOps란 소프트웨어 개발자들과 IT종사자들 사이의 의사 소통, 협업, 융합을 강조한 소프트웨어 개발 방법론이다.
Dev와 Ops간에 목적을 일치시키고 프로세스를 공유하여 두 이해관계를 좁히는 데 목적이 있다.
3. DevOps를 위한 기법들
a. CI (Continuous Integration) 지속적 통합
개발자가 각각 개발한 소스코드를 모아 특정 시점에 빌드하는게 아니라
주기적으로 수행함으로써 통합에서 발생하는 오류를 사전에 해결하기 위한 기법
CI Server 중 하나로 Jenkins가 있음!!!
b. CD (Continous Delivery / Continuos Deployment)
애플리케이션 변경사항을 Repository에 자동 업로드 / 변경 사항을 운영 환경까지 자동으로 릴리즈
c. SCM (Source Code Management)
소스코드 형상 관리 시스템으로 Git, SVN이 있다.
d. Build Tool 컴파일, 테스트, 정적 분석 등을 실시해 동작가능한 소프트웨어를 생성하는 도구 Maven, Gradle, Ant, make 등이 있다.
4. DevOps의 이점
a. 속도 : 배포까지의 작업속도를 효율적으로 제공하여 시장 변화에 빠르게 대처
b. 빠른 배포 : 새로운 릴리즈를 빠르게 배포하여 고객 요구에 빠르게 대응
c. 안정성 : 지속적 통합, 전달, 모니터링 등으로 안정적인 서비스를 제공
d. 협업 : 개발자와 운영팀이 긴밀하게 협력, 책임을 공유하고 워크플로우 결합
5. DevOps의 특징
a. Cross Functional Team
개발부터 운영까지 모두 할 수 있는 사람이 필요한 것이 아니라, 각 프로세스의 담당자들을 하나의 팀으로!
b. Widely Shared Metrics
팀원 모두가 알고있는 하나의 공유된 지표가 필요하다.
개발만 하는게 아닌 서비스가 운영에서 잘 돌아가는지, 사용자의 반응은 어떤지를 측정할 수 있는 기준이 필요하다.
c. Automating repetitive tasks
반복적인 일들을 자동화 해야한다. CI/CD를 이용하여 빌드/배포/테스트 프로세스를 자동화하여 생산성을 높힐 수 있다.
d. Post Mortems
후처리, 장애나 이슈가 있을때 혼자만 알지 말고 팀원들과 공유해야한다.
서비스를 운영만 하다보면 해당 이슈가 얼마나 큰 이슈인지 확인하기 어렵다.
e. Regular Release
짧은 주기의 정기배포를 통하여 빠르게 서비스의 기능을 개선하고 고객들의 VoC를 반영해 나간다.