일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- k8s
- vscode
- ITQ 워드
- 쿠버네티스
- apt-get설치에러
- 2022정보처리기사
- 지속적배포
- 군사교육
- kubeflow
- ubuntu
- 정보처리기사
- 개발환경
- gradle오류
- kubernetes
- CI/CD
- 쿠버플로우
- gradle빌드오류
- 정처기
- onpremise
- 필기
- k8s클러스터
- CKA
- GPG에러
- GPG error
- DBeaver
- k8s클러스터업그레이드
- 클러스터업그레이드
- 지속적통합
- ML 플랫폼
- OA 마스터
- Today
- Total
Conqrean security blog
[CI/CD] CI/CD란? Spinnaker란 무엇일까? 본문
Spinnaker는 위키백과에서는 Netflix에서 개발하고 Google에서 확장한 오픈소스(OpenSource) CD(Continuous Delivery) 플랫폼(Platform)이라 설명한다.
CI CD라는 용어 자체가 너무 생소하고 낯설다 보니 이 용어에 대한 이해부터 해야 오픈소스를 제대로 활용할 수 있겠다 라는 생각이 들었다.
CI & CD란 무엇인가?
1. CI (Continuous Integration)
CI는 지속적 통합이라 부르는데, 이렇게만 말하면 이해하기 너무 어렵다 ㅠ
쉽게 말해서 배포를 위한 자동화 과정! 이라고 생각하면 편하다.
웹 개발을 한다고 가정해보자!
개발한 소스(Source)를 테스트하기 위해서는 빌드(Buile)하는 과정을 거쳐야 어떻게 코딩을 했는지 Web UI로 테스트가 가능할 것이다. 테스트를 할 때마다 일일이 빌드하면서 확인을 해야 하는데 그 과정을 자동화한다면 편할 것이다.
혼자 개발한다면, 직접 빌드하는 게 편할 수 있겠지만
여러 명에서 개발하게 되는 소프트웨어와 같은 제품은 공용 저장소(github, gitlab 등)에 동시에 코드를 올리게 되는데 그 과정에 충돌이 날 수도 있고, 누군가 올릴 때마다 테스트하는 게 여간 번거로운 게 아닐 것이다.
그렇기 때문에 CI 도구가 필요한 것이다!
개발자의 편의성도 증가하면서 코드를 일일이 확인할 필요가 없이 좋은 통합 환경을 가져가는 것!
2. CD (Continuous Delivery or Deployment)
CD는 지속적 제공 또는 지속적 배포라 부르는데, 역시 이해가 어렵다..
쉽게 설명한다고 하면 CI 에서 코드를 빌드하고 테스트까지 끝나서 문제가 없다고 판단되면
자동으로 배포를 할 수 있게 도와주는 배포 도구이다.
개발단계에서 테스트 및 검증까지 완료했다면 실 서비스 환경에 사용자가 사용할 수 있도록 배포를 해야 한다.
이 배포를 도와주는 단계라고 생각해주면 된다.
나름 쉽게 풀어쓰려고 해 보았지만
CI CD를 경험해보지 않은 사람이라면 그래도 무슨 의미인지 알기 어려울 수 있다.
제가 추천해드리는 방법은 대표적인 CI CD 도구를 경험해보시면 훨씬 빠르게 이해할 수 있을 겁니다!
Spinnaker 란?
여기서 우리가 알아볼 것은 Spinnaker라는 오픈소스 CD Platform이다.
Spinnaker는 빠른 속도를 배포할 수 있도록 지원하는 멀티 클라우드 CD 플랫폼이다.
원하는 Application을 파이프라인을 만들어서 빠르게 배포할 수 있도록 하는 게 가능한 것이다.
예시 하나를 들자면 웹 서비스 하나를 배포하려고 한다.
그럼 DB(Database), 웹 UI, 백엔드(API) 이렇게 각각 필요할 것이다.
Spinnaker에서 파이프라인을 이렇게 아래와 같이 만들어 줄 수 있다. (예시 사진)
클릭 한 번으로 CI 도구로 빌드한 이미지를 가져와 배포하는 단계까지 모두 자동화하여 프로덕션 환경으로 올릴 수 있게 되는 것이다.
CI CD에 대한 흥미가 생겨 공부하는 계기가 되었는데, 현재 기능에 대한 공부를 하고 있다.
Spinnaker 오픈소스를 다양한 방법으로 사용할 수 있을지 좀 더 고민해보고 추후 포스팅하도록 하겠다.