데브옵스는 왜 필요한 것인가.
https://youtu.be/onOy7WiguMI?list=LL
위 영상 보며 가볍게 끄적여보는 영상
데브옵스를 통한 지속적인 서비스 혁신
사용자에게 안정성과 신속성을 제공하려면 개발 테스트 배포 운영의 업무 사이클을
자동화된 하나의 프로세스로 통합할 필요성이 있다.
데브옵스의 필수 요소 CAMS( 문화, 자동화, 측정, 공유 )
1. 문화(CULTURE)
팀의 경계를 완화하고 협업 수준을 높여 품질 및 효율성 향상
조직의 사일로화 경계해야 하는데,
조직 내 다양한 부서들이 서로 담을 쌓은 것처럼 서로 각자의 조직의 이익만을 추구하는 것을 의미한다.
조직이 사일로화 되면 협업도 문제이지만
부서별 데이터가 통합되지 않아서 회사 전체 데이터를 통합해 인사이트를 얻기 힘들어진다
우선 회사 비즈니스 목표에 맞춰서 개발 운영팀 간의 원활한 커뮤니케이션과 협업 문화가 무엇보다 중요
2. 자동화(AUTOMATION)
개발자가 소스코드를 작성하는 과정에서 부터 실제 서비스에 적용되기 까지 전 과정을
수작업이 아닌 자동화된 프로세스로 관리하고
서비스에 대한 품질 검사 및 모니터링도 자동화하는 것
시간 절약, 실수 예방, 서비스 일관성 유지
3. 측정 (MEASURE)
측정할 수 없으면 관리할 수 없고, 관리할 수 없으면 개선시킬 수도 없다.
- 피터 드러커
투명성, 접근성, 가시성(시각화 여부)
4. 공유 (SHARE)
조직 전반의 요구사항을 도출하고,
협력할 수 있는 공통된 도구를 활용하여
중복된 작업을 없애고,
참여의식을 갖도록 해야한다.
MSA의 경우 서비스 구조가 복잡하여
서로의 작업이 공유가 안되면 작업 내용이나 변경사항을 파악하기 매우 어렵다.
이는 장애가 발생 시 원인 분석에 많은 시간이 소요된다는 것을 의미한다.
개발과 운영의 노하우를 공유하여, 장애 예방 및 조직 전체의 기술 역량을 고취
대시보드, 슬랙, 티켓팅 시스템, 사내 위키 등을 사용하는 이유
이 네 가지가 효과적으로 표현된 것이 CI/CD 와 대시보드이다.
CI/CD
CI 단계
여러 개발자가 하나의 서비스를 함께 개발을 하는데
해당 기능이 꼭 필요한지, 중복된 부분은 없는지 확인이 필요하다.
큰 프로젝트나 오픈 소스의 경우 코드 통합 관리 담당자가 따로 존재한다 (커미터)
이 과정에서 개발자 간의, 개발자- 커미터 간의 빈번한 커뮤니케이션 발생이 필수적이다.
CI가 잘 이루어지면
버그를 신속하게 해결 가능하고,
소프트웨어 품질을 높일 수 있다.
새로운 소프트웨어 업데이트를 검증 및 릴리즈 하는 데 시간이 적게 걸린다.
CD 단계
지속적인 통합과 배포를 통해 어플리케이션 개발 단계를 자동화하여
고객에게 짧은 주기로 서비스를 제공하고 개선하는 것
개발: 깃, 인텔리제이, VSCODE
빌드: Gradle
소스코드 배포: 젠킨스
인프라 배포: Terraform
로그 관리: 엘라스틱 서치
조직 간의 사일로를 없애기 위하여
협업 툴과 프로젝트의 관리를 위해 대시보드의 도입 필수
삼성은 녹스 포탈 이용해서 데브옵스