DevOps/DevOps

[DevOps] 1. DevOps

hyomee2 2024. 11. 15. 17:57

DevOps

1. DevOps란?

: 단절된 개발과 운영 간의 프로세스를 원활하게 연결하고 자동화 방법을 통해 효율성을 극대화하는 방법(서로 다른 업무의 통합).

SW 개발(Dev)와 IT 운영(Ops)의 경계를 허물고,

지속적인 통합(CI), 지속적인 배포(CD), 자동화 등을 통해

더 빠른 SW 개발과 더 높은 운영 효율을 달성하려는 문화, 움직임, 관행의 집합이다.

 

2. DevOps의 핵심 요소(CAMS)

(1) Culture(문화)

DevOps 문화는 협업과 의사소통을 중시한다.개발(Dev)팀과 운영(Ops) 팀 간의 장벽을 허물고, 모든 이해관계자가 목표 달성을 위해 긴밀히 협력하도록 장려하는 문화이다.

(2) Automation(자동화)

DevOps에서는 반복 가능하고 예측 가능한 작업을 자동화함으로써, 수동 작업의 오류를 줄이고 효율성을 놓인다.인프라 관리, 코드 배포, 테스트 실행, 모니터링 등 다양한 프로세스에 자동화를 적용하여,개발부터 배포까지의 프로세스가 더 빠르고, 안정적이며, 효율적으로 이루어진다.

(3) Measurement(측정)

성능, 프로세스, 효과성을 정량적으로 측정하고 분석하는 것을 강조한다.이는 개선점을 식별하고, 의사 결정 과정에 필요한 데이터를 제공한다.DevOps에서는 지속적인 측정과 피드백이 중요하며, 시스템의 성능, 응답 시간, 버그 발생 빈도 등을 모니터링하고, 이를 기반으로 지속적인 개선을 도모한다. (측정할 수 없으면 관리할 수 없고, 관리할 수 없으면 개선시킬 수 없다.)

(4) Sharing(공유)

지식, 아이디어, 성공 사례 뿐 아니라 실패 경험까지 공유하는 것을 중요시한다.이는 학습과 성장을 촉진하고, 조직 전체의 개선을 위한 아이디어와 해결책을 발굴하는 데 도움이 된다.공유 문화는 DevOps의 핵심 요소 중 하나로, 팀 간의 벽을 허물고 조직 전체가 하나의 목표를 향해 나아가도록 한다.(협업 툴을 충분히 활용해야 한다.)


Cloud Native

아래 링크에서 Cloud Native 도구를 살펴볼 수 있다.

https://landscape.cncf.io/

 

CNCF Landscape

 

landscape.cncf.io

 

1. Cloud Native란?

애플리케이션을 개발하고 운영하기 위한 접근 방식으로,

클라우드 컴퓨팅의 이점을 최대화하도록 설계된 기술과 아키텍처에 중점을 둔다.

마이크로서비스 아키텍처, 컨테이너화, 동적 오케스트레이션 등을 포함하는데,

이 개념은 2010년대 초반 클라우드 기술이 성숙함에 따라 발전했으며,

개발과 운영의 유연성을 극대화하고 더 빠른 혁신과 확장성, 이식성을 가능하게 한다.

2. DevOps와의 관계

Cloud Native와 DevOps는 서로 상호 보완적인 관계이다.Cloud Native DevOps의 원칙과 관행을 클라우드 환경에서 효과적으로 구현할 수 있는 기술적인 수단을 제공하는 반면,DevOps Cloud Native 기술을 활용하여 개발과 운영의 경계를 없애고 더 빠른 혁신과 효율적인 운영을 가능하게 한다.

3. Cloud Native의 역사


CI/CD

1. CI/CD란?

(1) CI (Continuous Integration, 지속적 통합)

개발자들이 작업한 코드를 주기적으로 메인 저장소에 통합(머지)하는 것으로, 이 과정에서 자동화된 빌드와 테스트가 수행되어

코드 변경 사항이 시스템에 통합될 때 발생할 수 있는 문제를 조기에 발견하고 수정한다.

(2) CD

1) Continuous Delivery, 지속적 제공 

CI 과정을 통해 테스트된 코드를 자동으로 빌드하고 테스트 환경이나 스테이징 환경에 배포하는 것으로, SW가 항상 출시 준비 상태를 유지하도록 하는 것이 목표다.

2) Continuous Deployment, 지속적 배포

Continuous Delivery에서 한 단계 더 나아가 자동화된 테스트를 통과한 코드를 자동으로 프로덕션 환경에 배포하는 것으로,

수동 개입없이 이루어진다.