[Cloud Infra-7] 코드와 개발 운영방법
코드형 인프라(Infrastructure as Code, IaC)
- 수동 프로세스가 아닌 코드를 통해 인프라를 관리, 프로비저닝하고 지원하는 기능
- 서버,네트워크,스토리지 등의 인프라 자원을 코드로 표현하고 버전 관리
- 도구: AWS CloudFormation / Ansible, Terraform
1. aws가 가지고 있는 여러 region중에 us-east-1을 취하는 거구나
2. aws_instance의 구성요소를 설정 중(ami instance_type key_name tags)
DevOps
- 정의: 애플리케이션과 서비스를 빠른 속도로 제공할 수 있도록 조직 역량을 향상시키는 문화/철학/방식/도구의 조합
- SW개발사이클의 속도를 높여 제품을 더 빠르게 혁신하고 개선할 수 있으며 조직은 고객을 더 잘 지원하고 시장에서 효과적으로 경쟁할 수 있다.
- 핵심원칙: 문화(Curture) / 자동화(Automation) / 측정(Measureing) / 공유(sharing)
- 주요 구성 요소: 지속적 통합(Continuous Intergration, CI) / 지속적 배포(Continuous Deployment, CD) / 자동화 도구 / 마이크로서비스 아키텍쳐 / 지속적 모니터링
CI/CD
- 정의:
. 지속적 통합(Continuous Integration)과 지속적 전달(Continuous Delivery)의 약자로, 소프트웨어 개발 사이클을 자동화하고 지속적으로 통합 제공하는 개념
. 소프트웨어 업데이트의 빈도를 높이고 품지릉ㄹ 향상시키기 위한 소프트웨어 개발으 ㅣ자동화된 접근 방식
. CI(Continuous Integration): 코드 변경사항이 빈번하게 통합되고 테스트되는 것을 의미
- 팀이 개발하는 모든 코드 변경사항이 자동 통함 및 테스트 과정을 거쳐 / 공유 코드 베이스에 안전하게 통합되는 것
- 프로세스:
(1). 개발자는 코드를 중앙 리포지토리에 푸시(Push)
(2). CI서버는 푸시를 감지하고 소스 코드를 빌드하고 테스트
(3). 테스트가 성공하면 코드가 리포지토리에 통합
(4). 테스트 실패 시 개발자에게 피드백이 제공되어 문제를 수정
. CD(COntinuous Deployment/Delivery): 통합된 코드가 자동으로 운영 환경에 배포되는 것을 포함
- Continuous Deployment: 자동으로 통합된 코드를 실제 운영 환경에 자동으로 배포하는 것
- Continuous Delivery: 통합된 코드는 운영 환경으로 배포되기 전에 스테이징 환경 등에서 수동으로 검토되는 것
- 프로세스:
(1). CI를 통해 검증된 코드는 자동으로 운영 환경에 배포
(2). Continuous Delivery의 경우, 스테이징 환경 등에서 추가적인 검토 및 테스트
(3). 배포 프로세스 중 문제가 감지되면 롤백 등의 조치를 자동으로 수행
문제: 다음 중 DevOps를 구현하기 위한 핵심 원칙이 아닌 것은?
1). 문화 / 2). 자동화 / 3). 측정 / 4). 공유 / 5). 자유