<기술>
- 코드 기반 인프라 관리(IaC) /
- code 기반으로 시스템과 운영/배포 환경 구축
- 인프라 운영/관리 소스의 체크인 및 관리 수행
- 버전관리 /
- 소스 및 빌드 관리를 위한 단일 시스템 사용
- 변경 사항을 커밋할 때마다 빌드
- 빌드 검증 테스트를 자동으로 수행
- One Step 빌드/배포
- 한번 클릭으로 빌드/배포(수동)
- 예약 작업을 통한 빌드/배포
- 검증 실패 시 배포 중지 및 알림
- 장애 시 빠른 인프라 배포
- 문제 발생 시 기존 시스템 수정하지 않고, 재배포
- 환경 설정 스크립트 수정 및 변경
<문화>
- 개방형 커뮤니케이션
- devops가 해결하고자 하는 문제점은 팀 혹은 조직간의 지식 경험에서 오는 사일로화를 막는데서 시작이기 떄문에 dev 와 ops의 개방적 소통이 필요하다.
지속적 통합은 소프트웨어 프로젝트에서 여러 기여자의 코드 변경을 통합하는 작업의 자동화 프로세스입니다. 지속적 통합은 개발 팀을 넘어 조직의 나머지 부분으로 확장됩니다. 예를 들어 제품 팀은 기능 및 수정 사항을 순차적으로 출시할 시기와 담당할 팀원을 조율합니다.
- 새로운 프로세스의 집합 (공동 작업)
- dev(개발), ops(운영)이 각각의 가지고 있던 업무 프로세스의 변경이 필요하다. 프로젝트의 전체 수명주기에 공동 작업을 진행하여야 한다.
지속적 배포는 엔지니어링 팀과 디자인, 제품, 마케팅과 같은 엔지니어링 이외의 팀을 하나로 묶어 제품을 제공하는 조직적 방법론입니다. CD가 없는 환경은 개발자가 기본 사용자 경험에 대해 QA 팀에 집중하는 “타부서에 전달하면 끝”이라는 행태가 발생하게 합니다. 즉, 리포지토리의 “트렁크” 브랜치가 항상 “배포 가능” 상태라는 의미입니다.
***같은 과정을 듣는 수강생분이 CI/CD의 파이프 라인을 적용하여 답변한것을 추가합니다.
- Plan
- 기술적인 부분: 이슈추적 시스템, 프로젝트 관리 도구, 커뮤니케이션 도구 등의 기술적인 도구와 시스템이 필 요합니다.
- 문화적인 부분: 모든 팀원들 간의 열린 커뮤니케이션과 함께 명확한 요구사항, 우선순위, 일정 계획 등을 공유 하는 문화가 필요합니다.
- Code
- 기술적인 부분: 버전 관리 시스템(Git 등)을 활용하여 소스 코드를 관리하며, 코드 리뷰 도구를 사용하여 코드 품질을 유지할 수 있습니다.
- 문화적인 부분: 개발자들은 코드 품질을 향상시키기 위한 문화를 가지고 있어야 하며, 코드 리뷰와 같은 힙업 을 통해 함께 발전해야 합니다.
- Build & Test
- 기술적인 부분: 빌드 및 테스트 자동화 도구, 컴파일러, 테스트 프레임워크 등의 기술적인 도구와 시스템이 필 요합니다.
- 문화적인 부분: 자동화된 테스트와 품질에 대한 강조를 통해, 모든 팀원들이 더 나은 품질의 소프트웨어를 만 드는 데 동참해야 합니다.
- Release & Deploy
- 기술적인 부분: CI/CD 파이프라인과 같은 자동화된 릴리스 및 배포 도구가 필요합니다.
- 문화적인 부분: 빠른 속도로 릴리스와 배포를 진행할 수 있도록 조직 문화를 개선하고, 개발팀과 운영팀 간의 협업을 강화하는 문화가 필요합니다.
- Operate
- 기술적인 부분: 모니터링 도구와 로그 수집 도구 등의 시스템이 필요합니다.
- 문화적인 부분: 운영팀과 개발팀 간의 협업을 하고, 장애 대응 및 복구에 대한 문화를 갖추어야 합니다.