클라우드 네이티브 애플리케이션 아키텍처는 크게 4가지 핵심 구성 요소로 이루어져 있다.
마이크로서비스 아키텍처(MSA) 컨테이너 DevOps CI/CD
- 마이크로서비스 아키텍처 (MSA): 서비스를 작은, 독립적인 단위로 분리함으로써 시스템이 다양한 요구사항이나 예외 사항에 견고하게 대응하도록 한다.
- 컨테이너: 클라우드 환경에 쉽게 배포하고 관리할 수 있도록 컨테이너 가상화 기술을 사용한다. 컨테이너는 서비스의 실행 환경을 표준화하고, 이식성을 높여 준다.
- DevOps: 개발 팀과 운영 팀간의 긴밀한 협력을 통해 빠른 시간 안에 서비스의 문제를 수정하고 사용자의 요구사항을 반영하고 배포하는 것을 가능하게 한다. 이는 지속적인 서비스 개선을 가능하게 한다.
- CI/CD: 지속적 통합(Continuous Integration)과 지속적 배포(Continuous Deployment)는 코드 변경 사항을 자동으로 통합, 빌드, 테스트, 배포하는 파이프라인을 구성한다. 이를 통해 개발된 서비스들은 신속하게 운영 상태로 전환될 수 있다.
이 네 가지 구성 요소는 함께 작동하여, 빠르게 변화하는 시장 요구사항에 능동적으로 대응하면서도 견고한 서비스를 제공할 수 있는 클라우드 네이티브 애플리케이션을 구축하는 데 필수적이다.
📌 CI/CD
지속적 통합(Continuous Integration)과 지속적 배포(Continuous Deployment)
지속적 통합 (Continuous Integration, CI)
CI는 개발자들이 코드 변경 사항을 중앙 저장소에 자주 통합하는 방법론이다. 일반적으로 하루에 여러 번 이루어지며, 각 통합은 자동화된 빌드 및 테스트를 통해 검증된다. 이는 코드 충돌을 미리 발견하고 해결하며, 결국은 품질을 높이고 개발 시간을 줄이는 데 도움이 된다.
지속적 배포 (Continuous Deployment, CD) / 지속적 전달 (Continuous Delivery, CD)
CD는 개발된 소프트웨어를 자동적으로 프로덕션 환경에 배포하는 방법론이다. CI와 비슷하지만, 추가적으로 자동화된 배포 단계가 포함된다. 이는 새로운 변경 사항이 실제 사용자에게 빠르게 제공되도록 하며, 이를 통해 빠르게 피드백을 받아 반영할 수 있다.
이 두 가지 방법론은 보통 함께 사용되며, 이를 CI/CD라고 부릅니다. CI/CD 파이프라인은 개발, 테스팅, 배포 과정을 효율적으로 만들어 개발 팀이 보다 신속하게, 그리고 품질을 유지하면서 소프트웨어를 배포할 수 있도록 한다.
✏️ CI/CD Flow
Infrastructure as Code (IaC)는 IT 인프라 구성을 코드로 관리하고 자동화하는 방법론을 의미한다.
코드를 통해 서버, 네트워크, 데이터베이스, 로드 밸런서, 방화벽 규칙 등의 인프라 구성을 관리할 수 있다.
이 방식은 휴먼 에러를 줄이고, 인프라 설정을 일관성 있게 유지하며, 인프라 배포를 보다 빠르고 자동화된 방식으로 수행할 수 있게 해준다.
Ansible은 Red Hat에서 개발하고 유지 보수하는 오픈 소스 IT 자동화 도구이다. Ansible은 Python으로 작성되었으며, 서버 구성 관리와 자동화 작업을 위한 강력한 도구로 알려져 있다.
Ansible은 IaC 방식을 채택하며, 서버와 네트워크 장비, 클라우드 인프라 등의 설정을 자동화하고 관리하는 데 사용할 수 있는 '플레이북(playbook)'이라는 YAML 형식의 파일을 이용한다. 플레이북에는 실행할 작업들이 정의되어 있으며, 이를 통해 다양한 시스템에서 동일한 구성을 쉽게 재현하거나, 복잡한 IT 작업들을 자동화할 수 있다.
Ansible은 에이전트리스(agentless) 모델을 사용하기 때문에, 관리 대상 시스템에 별도의 소프트웨어를 설치할 필요가 없다. 이는 Ansible의 배포와 사용을 단순화하며, 다양한 환경에서 유연하게 활용할 수 있게 한다.
🔍 reference
https://www.devopsroles.com/devops-ci-cd-pipeline-tutorial-part-1/
'DevOps' 카테고리의 다른 글
[DevOps] 개발 방법론의 변화 WaterFall VS Agile VS DevOps (0) | 2023.05.20 |
---|