

Devops란 개발(Development)과 운영(Operation)을 결합해 탄생한 용어로 개발담당자와 운영담당자가 연계하여 협력하는 개발 방법론이다.
소프트웨어 개발과 IT 운영 사이의 소통, 협업, 통합 및 자동화를 강조하는 소프트웨어 개발 방법론이다. DevOps는 기존의 개발과 운영 사이의 경계를 허물고 개발자와 운영팀 간의 소통과 협력을 강화하여 더 빠르고 안정적인 소프트웨어 개발과 배포를 이끌어낸다.

지속적인 통합(Continuous Integration, CI)
DevOps에서 CI는 개발자들이 작성한 코드 변경 사항들을 지속적으로 병합하고 자동화된 빌드 및 테스트 프로세스를 통해 지속적으로 통합하는 접근 방식이다. 이를 통해 여러 개발자들이 동시에 작업한 코드가 충돌하지 않도록 하고 통합된 코드를 자동으로 테스트하여 빠른 피드백을 제공한다. 결함이 발견되면 빠르게 수정하여 높은 품질의 소프트웨어를 구축할 수 있다.
지속적인 배포(Continuous Deployment, CD)
CI와 밀접하게 연관되는 CD는 지속적인 통합을 거친 코드 변경 사항들이 자동으로 실제 운영 환경으로 배포되는 방식을 의미한다. CD를 통해 코드 변경 사항이 자동으로 승인된 후에 운영 환경으로 배포되므로 개발팀과 운영팀 간의 커뮤니케이션과 협업 비용을 줄이고 신규 기능을 빠르게 사용자에게 제공할 수 있다.
자동화된 테스트
DevOps에서 자동화된 테스트는 코드의 안정성과 신뢰성을 검증하기 위해 사용된다. 자동화된 단위 테스트, 통합 테스트, 기능 테스트, 성능 테스트 등을 통해 코드 변경 사항들이 기존 시스템과 잘 통합되며 예상치 못한 버그를 최소화한다. 자동화된 테스트는 개발자들에게 빠른 피드백을 제공하여 문제를 빠르게 발견하고 수정할 수 있도록 한다.
인프라스트럭처 자동화
DevOps에서 인프라스트럭처 자동화는 인프라를 코드로 정의하고 이를 자동화하여 서버, 네트워크, DB 등을 프로비저닝하고 관리하는 접근 방식이다. Infrastructure as Code (IaC)라고도 불리며 자동화된 인프라 관리는 확장성과 일관성을 보장하며 소프트웨어 배포와 운영에 있어 인프라 구성을 훨씬 효율적으로 처리할 수 있다.
IaC (Infrastructure as Code)
코드를 사용하여 인프라의 생성, 변경, 삭제, 모니터링 등을 자동화할 수 있는 기술
모니터링과 로깅
DevOps에서는 실시간으로 시스템의 상태를 모니터링하고 로그를 기록하여 문제를 빠르게 감지하고 대응하는 것이 중요하다. 모니터링은 서버의 성능, 가용성, 오류 등을 지속적으로 추적하고 로깅은 시스템 이벤트를 기록하여 잠재적인 문제를 예방하거나 발생한 문제를 분석하는데 도움을 준다.
버전 관리
DevOps에서는 코드 변경 사항을 추적하고 관리하기 위해 버전 관리 시스템(ex.Git)을 사용한다. 버전 관리는 개발자들이 작성한 코드를 기록하고 변경 내역을 추적하여 협업하고 문제가 발생했을 때 이전 버전으로 롤백하는데 도움을 준다.
협업 도구
DevOps에서는 팀 간의 소통과 협력을 위해 이슈 트래킹 시스템(ex.Jira)과 대화 도구(ex.Slack) 등을 사용한다. 이러한 도구들은 프로젝트 관리, 이슈 추적, 업무 협업을 용이하게 하고 팀 간의 원활한 소통과 지식 공유를 촉진한다.
속도
작업 속도가 빨라지면서 시장 변화에 더 잘 적응하고 효율적으로 비즈니스 성과를 창출할 수 있음
신속한 제공
새로운 기능의 릴리스와 버그 수정 속도가 빨라질수록 경쟁 우위를 차지할 수 있음
안정성
애플리케이션 업데이트와 인프라 변경의 품질 보장, 지속적 통합 및 지속적 전달과 같은 방식을 통해 변경 사항이 제대로 안전하게 작동하는지 테스트 가능
확장 가능
규모에 따라 인프라와 개발 프로세스 운영, 관리 가능
협업 강화
개발자와 운영 부서 간의 협력을 통해 효과적인 팀 구축 가능
보안
자동화된 규정 준수 정책, 세분화된 제어 및 구성 관리 기술 사용 가능
데브옵스 DevOps는 쉽게 말해 개발부서와 운영부서 간의 원활한 소통을 기반으로 한다.
개발 부서에서 웹사이트 개발, 앱 개발, 알고리즘 개발을 한다면 운영 부서에서는 개발된 아이템이 고객에게 잘 전달되도록 하는 부서이다. 운영팀에서 고객의 수요에 맞춰 서버와 DB를 관리하는 일을 통해 서비스가 제대로 돌아갈 수 있는 환경을 개발팀에게 제공할 수 있는 것이다.
데브옵스엔지니어는 개발도 가능하고 운영도 가능해야 한다.
DevOps에 도전하기 위해서는 개발 능력 뿐만 아니라 네트워크, 시스템엔지니어의 기초를 알아야 한다.
💚 reference : https://m.blog.naver.com/acornedu/221519913222
https://tech1.tistory.com/103#google_vignette