본문 바로가기

분류 전체보기

(345)
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)에서 이론과 내용이 소개됨 일반적인 기업에서 애플리케이션을 개발할 대, 여러 개발들이 동일한 애플리케이션에서 각기 다른 신규 기능을 개발하거나, 변경 사항을 수정 변경한다. 이 때 어려운 점은 동일한 애플리케이션에 대해 특정 기능 및 개별적으로 수정/변경된 내용을 반영하는 경우 다른 개발자가 동시에 적용하는 변경 사항과 충돌할 가능성이 있으므로, 이러한 부분을 최소화할 수 있도록 조정하는 수작업에 많은 시간과 인력이 ..
AWS Lambda의 서비스 모델 AWS Lambda의 주요 구현 방법은 다음과 같다. 구분 서비스 모델 구현 사례 Synchronous (Push) Amazon API Gateway와 연동으로 웹 애플리케이션을 통한 Request 수신 및 처리 결과에 대한 Feedback 제공(양방향) 웹 애플리케이션, 모바일 백앤드, IoT 백앤드 Asynchronous (Event) Amazon SNS, Amazon S3 등의 이벤트 수신을 통해 트리거되어, 요청에 대한 처리 후 결과를 별도 저장 및 다른 서비스로 전송 처리 파일 또는 이미지 변환, 실시간 요청 처리, 타서비스 연동 및 전달 Stream-Base Amazon DynamoDB, Amazon Kinesis로부터 상태 변경에 따른 트리거나 스트림베이스트의 요청에 따른 사항 처리 및 타 ..
AWS Lambda의 서비스 동작 방식 AWS Lambda는 4단계의 절차를 걸쳐 동작하도록 구현되어 있음. LAmbda 함수 호출은 이벤트 소스 또는 사전에 정의된 일정 또는 스케줄러를 통해 이벤트가 발생 ㅁ 첫번째 이벤트 소스로부터 함수 실행에 대한 트리거 발생 이러한 트리거는 S3 Bucket에 파일을 업로드하거나, 수정, 삭제 시 발생되도록 구성할 수 있다. ㅇ S3로 이미지를 업로드하면 업로드된 이미지에 대한 Thumbnail을 자동으로 처리하는 Lambda 함수를 실행하도록 구성 가능 ㅇ DynamoDB의 특정 Fielddp Insert나 업데이트 수행 시 업데이트 된 정보를 다른 RDB로 업데이트 하는 Lambda 함수를 구현 ㅇ 스케줄러 설정을 통해 특정 시점에 자동으로 Lambda 함수를 실행하도록 구성하여, 정기적으로 EC2..
Helm으로 nginx 설치 Helm은 여러 Kubernetes Resource를 Chart 라는 단일 논리적 배포 단위로 패키징하는 Kubernetes용 패키지 관리자 및 애플리케이션 관리 도구 이다. Helm은 다음 이점을 제공한다. ㅇ 단순하고 (하나의 명령) 반복 적인 Deployment 수행 ㅇ 다른 애플리케이션 및 서비스의 특정 버전을 사용하여 애플리케이션간의 종속성 관리 ㅇ 여러 배포 구성 관리: Test, Stag, Production 등 ㅇ 업데이트 / 롤백 및 애플리케이션 배포 테스트 ㅇ Install the Helm CLI $ curl -sSL https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash ㅇ 설치된 버전 확인 $ helm..
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..
DevOps를 위한 기술적 요소 DevOps를 위한 기술적 구성 요소는 네가지로 정리할 수 있다. 첫번째 : 코드 기반 인프라(Infrastructure as Code) 관리 프로그래밍형 인프라 라고도 하는 Infrastructure as Code는 인프라 구성을 소프트웨어를 프로그래밍하는 것 처럼 처리하는 방식을 가리킨다. 결과적으로 애플리케이션을 작성하는 작업과 애플리케이션이 실행되는 환경을 구현하는 작업을 코드 기반으로 관리 할 수 있다. 애플리케이션은 자체적으로 VM(가상 시스템)을 생성하고 오케스트레이션하는 스크립트를 포함핲구 있다. AWS, MS, Google 등 대부분의 클라우드 업체는 IaC 기반의 인프라 서비스를 제공한다. 두번째: 버전 관리(Version Control). 개발 시간이 지남에 따라 발생되는 소스코드의 ..