본문 바로가기

AWS DevOps

(10)
AWS CodePipeline AWS CodePipeline은 빠르고 안정적으로 애플리케이션과 인프라의 업데이터를 위한 릴리스 파이프라인을 자동화할 수 있도록 서비스 형태로 제공되는 완전 관리형 지속적 전달(Continuous Delivery)을 제공하는 서비스 AWS CodePipeline은 코드에 변경이 있을 때 마다 사용자가 사전에 정의한 릴리스 모델을 기반으로 애플리케이션의 릴리스 프로세스의 빌드, 테스트, 배포 단계에 걸친 프로세스에 대해 자동화를 수행. 이를 통해 애플리케이션의 변경 사항이나 새로운 기능을 신속하고 안정적으로 제공 AWS CodePipeline은 AWS CodeCommit, GitHub, Amazon ECR 또는 Amazon S3에 바로 파이프라인에 대한 소스코드를 가져올 수 있으며 AWS CodeBuild..
AWS CodeDeploy AWS CodeDeploy는 Amazon EC2, Amazon ECS, AWS Lambda 및 On-Premise 서버와 같은 다양한 컴퓨팅 서비스에 대해 소프트웨어 배포를 자동화하여 제공하는 완전 관리형 배포 서비스 AWS CodeDeploy는 지속적인 배포(Continuous Deploy)를 지원하는 대표적인 CD 도구로써, AWS CodeDeploy를 사용하게 되면 새로운 기능 및 문제가 되는 코드에 대해 빠르고 신속하게 배포할 수 있다. AWS CodeDeploy를 사용하면 AWS Console 또는 AWS CLI를 통해 배포를 시작하고, 배포 상태에 대한 추적을 할 수 있으며, 상세한 보고서를 통해 애플리케이션의 수정 버전이 언제 어디에 배포되었는지 확인할 수 있고, 푸시 알림을 통해 배포에 대..
AWS CodeBuild AWS CodeBuild는 소프트웨어 개발에 필요한 소스코드를 컴파일하는 단계에서부터 테스트 후 소프트웨어 배포까지의 단계를 지원하는 완전 관리형 지속적 통합(Continuous Integration)서비스 CodeBuild를 사용하면 자체 빌드 서버가 필요하지 않으며, 빌드 서버를 프로비저닝하거나, 운영/관리 및 확장을 수행할 필요가 없다. AWS CodeBuild는 빌드를 수행할 볼륨에 따라 인프라가 자동으로 확장 및 축소를 지원하여, 제출되는 빌드에 대해 죽각적으로 처리되므로, 여러 빌드를 동시에 처리할 수 있기 때문에 빌드를 위해 대기하지 않고 빠르고 효율적으로 빌드 작업을 수행한다. AWS CodeBuild는 Apache Maven, Gradle 등과 같이 널리 사용되는 프로그래밍 언어 및 빌드..
AWS CodeCommit AWS CodeCommit이란 안전한 Git 기반의 Repository를 클라우드 기반으로 제공하는 완전 관리형 소스 제어 서비스로 일반적인 애플리케이션 개발을 진행하면서 개발된 소스를 저장하고 제어할 수 있는 기능을 제공 CodeCommit은 관리형 클라우드 서비스이므로 소스코드를 저장하기 위한 리포지토리를 생성만 하면 되며, 프로비저니이 및 확장할 하드웨어나 설치, 구성, 운영할 소프트웨어가 필요 없다. 또한 AWS CodeCommit의 가져오기 요청, 분기 및 병합 기능을 활용하면 팀에서 다른 개발자나 구성원과 협업을 할 수 있으며, 이를 통해 보다 효율적으로 소스코드를 관리할 수 있다. AWS CodeCommit은 협업자를 수행하는 내부 구성원에게 코드에 대한 검토를 요청하고 이에 대한 Feedb..
CI/CD를 위한 도구들 Continuous Integration, Continuous Delivery 및 Continuous Deployment에는 서로 다른 도구가 필요함 구분 내용 소스코드 관리 GIT, Bitbucket, Subversion 빌드 자동화 도구 Maven, Ant, Gradle 테스트 자동화 도구 Selenium, JUnit, Cucumber CI 도구 Jenkins, Bamboo, Hudson 구성 관리 도구 Puppet, Chef, Ansible 모니터링 도구 Nagios, Ganglia, Sensu ㅁ DevOps를 위한 AWS의 도구들 AWS 서비스명 솔루션 내용 AWS CodeCommit 버전 관리 소스코드를 개인 Git저장소에 안전하게 저장 AWS CodeBuild CI/CD 연속적인 스케일링으로..
CD(Continuous Delivery/Continuous Deployment) - 지속적인 전달 및 배포 Continuous Delivery라는 용어는 2010년 집필된 [Continuous Delivery: Reliable Software Release through Build, Test, and Deployment Automation]라는 저서를 통해 대중화됨 CI(Continuous Integration)를 통한 빌드의 자동화 및 유닛의 통합 테스트 수행 이후 이어지는 CD(Continuous Delivery) 프로세스는 유효한 소스코드를 리포지토리에 자동으로 전달한다. 따라서 효과적인 CD의 프로세스를 실현하기 위해서는 개발 파이프라인에 CI가 먼저 구축되어야 한다. 이러한 지속적 제공의 목표는 운영 환경으로 배포할 준비가 되어 있는 코드 베이스를 확보하는 것에 있다. CD는 소스코드의 변경 사항을 ..
CI(Continuous Integration) - 지속적인 통합의 개요 CI(Continuous Integration)의 기본적인 콘셉트는 1991년 Grady Booch를 통해 처음 소개 되었지만 1999년 켄트 백(Kent Beck)이 창시한 익스트림 프로그래밍(XP, eXtreme Programming)의 12가지 핵심 프랙티스(Core Practices)에서 이론과 내용이 소개됨 일반적인 기업에서 애플리케이션을 개발할 대, 여러 개발들이 동일한 애플리케이션에서 각기 다른 신규 기능을 개발하거나, 변경 사항을 수정 변경한다. 이 때 어려운 점은 동일한 애플리케이션에 대해 특정 기능 및 개별적으로 수정/변경된 내용을 반영하는 경우 다른 개발자가 동시에 적용하는 변경 사항과 충돌할 가능성이 있으므로, 이러한 부분을 최소화할 수 있도록 조정하는 수작업에 많은 시간과 인력이 ..
IaC(Infra as a Code)의 주요 도구 구성 조정 도구(Configuration Orchestration Tool)와 구성 관리 도구(Configuration Management Tool)의 차이 ㅇ Terraform과 AWS CloudFormation과 같은 구성 조적 도구(Configuration Orchestration Tool)는 서버 및 기타 인프라의 구축을 자동화 하도록 설계됨. ㅇ Chef, Puppet과 같은 구성 관리 도구(Configuration Orchestration Tool)는 이미 프로비저닝된 이 인프라의 소프트웨어와 시스템을 구성하고 관리하는데 도움이 됨. Tools Code Cloud Type Infrastructure Language Architecture CloudFormation Closed Source AW..