#1 CI/CD 와 DevOps
1.1 DevOps 란?
DevOps란?
- DevOps는 Development + Operations입니다.
- 어플리케이션과 서비스를 빠른 속도로 제공할 수 있도록 조직의 역량을 향상시키는 문화 철학, 방식 및 도구의 조합입니다.
- 조직의 최종 고객에게 비즈니스 가치를 더 빠르고, 더 훌륭하고, 더 안전하게 제공하도록 지원하여 운영 효율성을 향상시킵니다.개발팀과 운영팀이 단일팀으로 병합되어, 엔지니어가 개발에서 테스트, 배포, 운영에 이르기까지 전체 애플리케이션 수명주기에 걸쳐 작업하고 단일 기능에 한정되지 않은 광범위한 기술을 개발합니다.
DevOps가 중요한 이유
- 조직의 최종 고객에게 비즈니스 가치를 더 빠르고, 더 훌륭하고, 더 안전하게 제공하도록 지원하여 운영 효율성을 향상시킵니다.
DevOps 방법
- 스크럼: 스크럼은 개발 및 QA 프로젝트를 신속하게 수행하기 위해 팀 구성원이 어떻게 협력해야 하는지를 정의합니다.
- 칸반: 칸반은 애자일 및 DevOps 소프트웨어 개발 구현에 많이 사용되는 프레임워크입니다. 작업 수용량에 대한 실시간 커뮤니케이션과 작업의 완전한 투명성이 요구됩니다. 작업 항목은 칸반 보드에 시각적으로 표시되므로, 팀원은 언제든지 모든 작업 상태를 볼 수 있습니다.
- 애자일: 애자일은 일정한 주기를 가지고 빠르게 제품을 출시하여 고객의 요구사항, 변화된 환경에 맞게 요구를 더 하고 수정해나가는 탄력적인 방법론을 말합니다.
1.2 CI/CD 란?
CI (Continuous Integration) 지속적인 통합
지속적 통합은어플리케이션의 새로운 코드의 변경 사항이 정기적으로 빌드 및 테스트 되어 공유 레퍼지토리에 통합되는 것을 말합니다. 즉, 코드 변경 사항을 하루에 여러 차례 저장소에 통합하는 방식입니다.
CD (Continuous Delivery/Deployment) 지속적인 제공/지속적인 배포
지속적 제공(Continuous Delivery) 및/또는 지속적 배포(Continuous Deployment)를 의미합니다.
지속적 제공을 통해 코드 통합을 자동화하거나 지속적 배포를 통해 최종 빌드를 최종 사용자에게 자동으로 릴리스한다는 두 가지 의미입니다.
1.3 DevOps 와 CI/CD 관계
CI/CD 는 개발 팀과 운영 팀 간 협업 촉진을 목표로 하는 DevOps 방법론의 필수적인 부분입니다. CI/CD와 DevOps는 모두 코드 통합 프로세스를 자동화하는 데 중점을 둡니다.
#2 컨테이너 환경과 쿠버네티스
2.1 컨테이너란?
컨테이너는 애플리케이션을 환경에 구애 받지 않고 실행하는 기술입니다. 즉, 운영체제에서 실행되는 여러 프로세스는 컨테이너라는 개념으로 격리되어 별도의 운영 환경을 제공해주는 기술입니다.
2.2 컨테이너 vs. 가상머신
가상머신은 애플리케이션을 동작시키기 위해서 애플리케이션이 사용하는 리소스만 사용하는 것뿐만 아니라 운영체제가 동작하기 위한 리소스가 추가로 필요합니다. 그러나 컨테이너는 애플리케이션이 동작하기 위한 리소스만 사용하기 때문에 휠씬 더 빠르고 가볍게 동작시킬 수 있습니다.
2.3 컨테이너 장점
DevOps에서 중요한 CI/CD 파이프라인의 모든 단계(개발, 테스트, 배포)가 동일한 컨테이너 환경에서 실행 가능합니다.
- 분리성:담당 영역을 분리하여 개발 팀과 운영 팀 간의 충돌이 줄어듭니다.
- 가벼움: MB단위의 크기를 가집니다.
- 탄력성: 어느 환경에서나 구동이 되므로 개발 및 배포가 크게 쉽습니다.
- 유지 관리 효율: 운영 체제 커널이 하나밖에 없어서 업데이트 또는 패치 작업을 한 번만 수행하면 변경 사함이 모든 컨테이너에 적용됩니다.
대규모 애플리케이션을 배포할 수 있도록 컨테이너의 네트워킹 및 관리를 자동화하는 프로세스입니다.
- 컨테이너를 클러스터에서 자동으로 배치, 관리, 복구합니다.
- Docker 같은 컨테이너 런타임과 통합 가능합니다.
쿠버네티스는 컨테이너 오케스트레이터를 수행해주는 도구의 종류 중 1가지 입니다.
2.4 쿠버네티스란?
컨테이너화된 애플리케이션의 배포, 관리 및 확장을 예약하고 자동화하기 위한 컨테이너 오케스트레이션 플랫폼입니다.
2.5 쿠버네티스의 기능
- 배포 : 지정된 수의 컨테이너를 지정된 호스트에 배포하고 원하는 상태로 계속 실행할 수 있습니다.
- 롤아웃: 롤아웃은 배포를 변경하는 것입니다. Kubernetes를 사용하면 롤아웃을 시작, 일시 중지, 재개 또는 롤백할 수 있습니다.
- 서비스 검색: Kubernetes는 DNS 이름 또는 IP 주소를 사용하여 컨테이너를 인터넷이나 다른 컨테이너에 자동으로 노출할 수 있습니다.
- 스토리지 프로비저닝: 필요에 따라 컨테이너에 대한 영구 로컬 또는 클라우드 스토리지를 마운트하도록 Kubernetes를 설정합니다.
- 로드 밸런싱: Kubernetes 로드 밸런싱은 CPU 사용률 또는 사용자 지정 메트릭을 기반으로 네트워크 전체에 워크로드를 분산하여 성능과 안정성을 유지할 수 있습니다.
- 오토스케일링: 트래픽이 급증하면 Kubernetes 자동 확장은 필요에 따라 새 클러스터를 스핀업하여 추가 워크로드를 처리할 수 있습니다.
- 고가용성을 위한 자가 치료: 컨테이너에 장애가 발생하면 Kubernetes는 자동으로 컨테이너를 재시작하거나 교체하여 중단 시간을 방지할 수 있습니다. 또한 상태 확인 요구 사항을 충족하지 않는 컨테이너를 삭제할 수도 있습니다.
2.6 쿠버네티스의 특징
- 대기업들의 참여로 인해 거대한 생태계가 형성되어 있습니다.
- Deployment, StatefulSets, DaemonSet, Job, CronJob 등 다양한 배포 방식을 지원합니다.
- Namespace 기능으로 하나의 클러스터를 논리적으로 구분하여 사용하고, 라벨 기능으로 유연하면서 확장성 있게 리소스를 관리할 수 있습니다.
- 역할 기반으로 액세스를 제어합니다.
- Auto Scaling으로 손쉽게 리소스를 확장할 수 있습니다.
'G-day (정규 세션)' 카테고리의 다른 글
[GDGoC Ewha] Part Exchange 세션 - BE 4조 (2) | 2024.11.20 |
---|---|
Gdg on Campus Ewha - Part Exchange 세션 3조 (1) | 2024.11.20 |
[Part Exchange FE 7조] CSR vs SSR vs ISR, DOM과 Virtual DOM (0) | 2024.11.20 |
Gdg on Campus Ewha - Part Exchange 세션 1조 (0) | 2024.11.20 |
Gdg on Campus Ewha - Part Exchange 세션 8조 (0) | 2024.11.20 |
댓글