데브옵스(Devops)란
- 개발(Development)와 운영(Operation)이 결합해 탄생한 용어로, 시스템 개발자와 운영을 담당하는 전문가 사이의 소통, 협업, 통합, 자동화를 바탕으로 어플리케이션 개발과 고객에게 제공되는 서비스를 빠른 속도로 제공될 수 있도록 조직의 역량을 향상시키는 소프트웨어 개발론이다
- 개발과 운영의 경계를 허물고 하나의 팀으로서 소통, 협업 및 통합을 강조하는 개발 환경이나 문화를 뜻한다
데브옵스 엔지니어 : 운영과 개발 사이에서 지속적 전달과 지속적 통합을 진행할 수 있도록 데브옵스 환경을 조성하는 사람이다
데브옵스 적용 시 장점
- 속도 향상
- 마이크로 서비스 아키텍처(단일 어플리케이션을 작은 서비스의 집합으로 구축하며, 각 프로세스는 자체 프로세스에서 실행되고 잘 정의된 인터페이스를 통해 다른 서비스와 연결되는 설계기법) 및 CD(Continuous Delivery)등을 사용하여 팀에서 서비스를 주도적으로 운영하여 수정된 코드들을 더 빠르게 릴리즈 할 수 있다
- 신속한 제공
- CI(Continuous Integrity) 및 CD(Continuous Delivery) 등을 통해 빌드에서 배포까지 자동화시켜 릴리즈의 빈도와 속도를 개선하여 제품을 빠르게 업데이트 할 수 있다. 새로운 기능 및 버그 수정속도가 빨라 고객의 요구에 더 빠르게 대응할 수 있게 된다
- 안정성
- CI/CD 등을 통해 변경사항을 안전하게 작동하는지 업데이트마다 테스트 해주어 애플리케이션에 안전성 및 인프라 변경의 품질을 보장해준다
- 확장성
- 협업 강화
- 보안
데브옵스 방법
- 지속적 통합
- 지속적 전달
- 마이크로 서비스
- 코드형 인프라
- 모니터링 및 로깅
- 협업
CI란
- 빌드/테스트 자동화 과정이다
- 개발자를 위한 자동화 프로세스인 지속적인 통합을 의미한다
- 어플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합되므로 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있다
CD란
- 배포 자동화 과정이다
- CD는 지속적인 서비스 제공 또는 지속적인 배포를 의미한다
- 지속적 배포는 빌드, 테스트 및 배포 단계를 자동화하는 DevOps 방식을 논리적 극한까지 끌어올린다. 코드 변경이 파이프라인의 이전 단계를 모두 성공적으로 통과하면 수동 개입 없이 해당 변경 사항이 프로덕션에 자동으로 배포된다.
- 간단한 코드 변경이정기적으로 마스터에 커밋되고, 자동화된 빌드 및 테스트 프로세스를 거리며 다양한 사전 프로덕션 환경으로 승격되며, 문제가 발견되지 않으면 최종적으로 배포된다. 강력하고 신뢰할 수 있는 자동화 배포 파이프라인을 구축하면 하루에도 여러 번 이루어지는 릴리즈가 특별하지 않은 일상이 된다

CI/CD 종류
- Jenkins
- CircleCI
- TravisCI
- Github Actions
CI/CD를 적용하기 전
- 개발자들이 개발하여 코드를 수정한다
- 각자의 feature 브랜치에 코드를 push한다
- 각자의 코드를 git에 올리고 통합한다
- 에러가 발생했지만 어느 부분에서 에러가 났는지 모르므로 다시 어디 부분에서 에러가 있는지 디버깅하고 코드를 수정한다
- 위 과정을 반복한다
- 많은 시간을 할애하여 에러가 해결되었으면 배포를 시작한다. 하지만 배포과정 또한, 개발자가 직접 배포 과정을 거치므로 많은 시간을 소요한다
CI/CD를 적용한 후
- 개발자들이 개발하여 feature브랜치에 코드를 push한다
- git push를 통해 Trigger되어 CI서버에서 알아서 Build, Test, Lint를 실행하고 결과를 전송한다
- 개발자들은 결과를 전송받고 에러가 난 부분이 있다면 에러 부분을 수정하고 코드를 master 브랜치에 merge한다
- master 브랜치에 코드를 merge하고 Build, Test가 정상적으로 수행이 되었다면 CI서버에서 알아서 Deploy 과정을 수행한다
참고 자료