SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Downloaden Sie, um offline zu lesen
AWS DevOps와 ECR을 통한 Elastic Beanstalk
배포 환경 구축 및 타 환경과의 비교
전북대학교 201610674 이영훈
AWS DevOps Tools
Code Commit
• 완전관리형
• 협업 방식의 코드 작업
• 개발 수명 주기 속도 향상
• 기존 도구(Git) 사용
AWS DevOps Tools
• 완전관리형 빌드 서비스
• 지속적 크기 조정
• 사용량에 따라 지불
• 지속적 통합 및 전달 지원
Code Build
AWS DevOps Tools
• 신속한 제공
• 구성 가능한 워크플로
• 빠르게 시작
• 손쉬운 통합
Code Pipeline
AWS DevOps Tools
• 완전 관리형 레지스트리로 수월하게 작업
• 컨테이너 이미지를 안전하게 공유 및 다운로드
• 빠르고 가용성이 뛰어난 액세스 제공
• 배포 워크플로 간소화
Elastic Container Registry
AWS DevOps Tools
• 빠르고 간편한 시작
• 개발자 생산성
• 적절한 규모 유지
• 완벽한 리소스 제어
Elastic Beanstalk
AWS CodePipeline 참고자료
https://docs.aws.amazon.com/ko_kr/codepipeline/latest/userguide/welcome-introducing.html
CodePipeline 릴리스 프로세스의 예
배포 시나리오
Developers
Code Commit Code Pipeline
Code Build Elastic Container Registry
Elastic Beanstalk
비교 시나리오
Developers Github
Travis CI
Docker
Elastic Beanstalk
비교를 위한 동일 환경
• create-react-app 기본 환경
• dockerfile
• Elastic Beanstalk 도커 플랫폼
환경 구축
1. 레포지토리 생성
2. Git 연결 (HTTPS를 이용하면 Github와 동일)
Code Commit
환경 구축
1. 빌드 프로젝트 생성
2. Buildspec.yml 파일 생성 후 레포지토리에 추가
Code Build
환경 구축
• 소스 공급자: 소스를 받을 주체 (여기선 CodeCommit)
• 레포지토리: 생성한 레포지토리
• 참조 유형: 소스 참조 유형 선택
환경 구축
• 환경 이미지: Codebuild 관리 이미지와 도커 이미지 중 선택
• 환경: Ubuntu: aws/codebuild/standard:4.0 버전
(다른 버전 사용시 오류 多)
• 권한: Code build를 통해서 도커 이미지 빌드시 필요한 권한
환경 구축
• 서비스 역할: 역할 지정
• Buildspec: 빌드시 필요한 명령을 저장하는 파일
환경 구축
# buildspec.yml
Version: 0.2
phases:
pre_build:
commands:
- echo Logging in to Amazon ECR...
- aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com
build:
commands:
- echo Build started on `date`
- echo Building the Docker image...
- docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG .
- docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
post_build:
commands:
- echo Build completed on `date`
- echo Pushing the Docker image...
- docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
• 나중에 생성할 AWS ECR 레포지토리의 내용과 IAM 계정의 정보, 소스와 함께 있는 Dockerfile,
저장될 컨테이너의 위치를 작성해야 Codebuild시 해당 설정을 통해 ECR에 docker 이미지를 생성합니다.
환경 구축
Elastic Container Registry
(ECR)
1. 레포지토리 생성
2. Buildspec.yml 파일 ECR 설정 부분 채우기
https://docs.aws.amazon.com/ko_kr/codebuild/latest/userguide/sample-docker.html#sample-docker-docker-hub
환경 구축
• 푸시 명령 보기를 통해서 AWS CLI 인증, 도커 이미
지 build & tag, push 명령을 Buildspec.yml 파일에
지정
환경 구축
Elastic Beanstalk
1. 어플리케이션 및 환경 생성
2. Dockerrun.aws.json 파일 작성
https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/single-container-docker-configuration.html
https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/create_deploy_docker_v2config.html
환경 구축
• Elastic beanstalk에서 Docker 이미지를 통한
배포를 위해 플랫폼을 Docker로 지정하며,
Linux2가 아닌 Linux로 지정해야 버전 오류가 없다.
환경 구축
// dockerrun.aws.json
{
"AWSEBDockerrunVersion": 1,
"containerDefinitions": [
{
"name": "web_container",
"image": "089802069060.dkr.ecr.us-east-1.amazonaws.com/web_container:latest"
}
]
}
• Dockercompose를 사용하지 않는 경우에는 꼭 작성해야 하는 설정 파일
• v1: 도커 컨테이너
• v2: 멀티 컨테이너
• v3: 프라이빗 레포지토리 사용하여 S3 버킷 이용
환경 구축
Code Pipeline
1. 지금까지 설정을 이용하여 Pipeline 작성
환경 구축
소스 빌드 배포
AWS CodeCommit AWS CodeBuild AWS Elastic Beanstalk
비교 환경 구축
1. 레포지토리 작성
Github
비교 환경 구축
1. 도커 환경 실행
Docker
비교 환경 구축
1. Github 레포지토리 연결
2. .travis.yml 파일 작성
3. AWS IAM 사용자 연결 (보안)
Travis CI
비교 환경 구축
sudo: required
language: generic
services:
- docker
before_install:
- echo "start creating an image with dockerfile"
- docker build -t lee20h/docker-travis-aws-config .
script:
- docker run -e CI=true lee20h/docker-travis-aws-config npm run test -- --coverage
deploy:
edge: true
provider: elasticbeanstalk
region: "us-east-1"
app: "web deploy with docker"
env: "WebDeployWithDocker-env"
bucket_name: "elasticbeanstalk-us-east-1-089802069060"
bucket_path: "web deploy with docker"
on:
branch: master
access_key_id: $AWS_ACCESS_KEY
secret_access_key: $AWS_SECRET_ACCESS_KEY
• .travis.yml 파일 작성
• Dockerfile 이미지 build 후 push
• 배포시에 AWS 설정 작성
비교 환경 구축
• IAM 사용자 액세스 키 등록
• Github에서 사용시 대부분 노출되므로 사용 권장
비교 환경 구축
소스 빌드 배포
Github Travis CI AWS Elastic Beanstalk
배포 테스트
• 소스: 즉시
• 빌드: 약 3분
• 배포: 약 6분
• 결과:
비교 배포 테스트
• 소스: 즉시
• 대기: 약 10분
• 빌드: 약 2분
• 배포: 약 8분
• 결과:
비교 결과
• 소요시간 비교
비교군 AWS DevOps 비교 환경
소스 즉시 즉시
빌드 약 3분 약 2분
배포 약 6분 약 8분
• 언뜻 보면 비슷한 수치이나, Travis CI의 경우 빌드를 위한 Travis Queue에 들어가는 시간이
약 10분 소요되어 총 약 20분 소요
• 따라서 Travis CI의 Queue가 대기 중이면 비슷한 성능
• 허나, 대부분 Queue 진입시간은 약 10분 소요
비교 결과
• 설정 필요한 파일
비교군 AWS DevOps 비교 환경
dockerfile O O
dockerrun.aws.json O X
.travis.yml X O
buildspec.yml O X
• AWS 개발자 도구를 사용한 배포는 유기적인 연결을 위해 여러 설정파일이 필요함
• 그에 반해 Travis CI를 사용한 배포는 Travis CI 설정 파일만 필요
비교 결과
• 과정 시각화
비교군 AWS DevOps 비교 환경
소스 O O
빌드 O O
배포 O X
• AWS DevOps로 배포시엔 모든 과정이 시각화로 오류 부분을 바로 체크 가능
• Travis CI는 빌드까지 시각화 되어있지만 배포는 Elastic Beanstalk에서 이뤄지므로
배포까지 책임지지 않음
결론
• 설정하는 시간은 AWS DevOps가 더 소요되며 체크 해야 할 부분이 많다.
• Commit 이후 배포까지의 속도는 AWS DevOps가 더 빠르다.
• 에러 검출과 시각화의 경우 AWS DevOps가 더 편리하다.
• Travis CI의 경우에는 무료인 만큼 속도가 느리나, 설정이 편리하다.
• 프로젝트가 AWS 다른 서비스와 접목이 이뤄지거나, 유지보수에 중점을 준다면
AWS DevOps를 사용하는 것이 장기적으로 도움이 된다.

Weitere ähnliche Inhalte

Was ist angesagt?

AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017
 AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017 AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017
AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017
Amazon Web Services Korea
 
AWS를 활용한 리테일,이커머스 워크로드와 온라인 서비스 이관 사례::이동열, 임혁용:: AWS Summit Seoul 2018
AWS를 활용한 리테일,이커머스 워크로드와 온라인 서비스 이관 사례::이동열, 임혁용:: AWS Summit Seoul 2018 AWS를 활용한 리테일,이커머스 워크로드와 온라인 서비스 이관 사례::이동열, 임혁용:: AWS Summit Seoul 2018
AWS를 활용한 리테일,이커머스 워크로드와 온라인 서비스 이관 사례::이동열, 임혁용:: AWS Summit Seoul 2018
Amazon Web Services Korea
 

Was ist angesagt? (20)

AWS Backup을 이용한 데이터베이스의 백업 자동화와 편리한 복구방법
AWS Backup을 이용한 데이터베이스의 백업 자동화와 편리한 복구방법AWS Backup을 이용한 데이터베이스의 백업 자동화와 편리한 복구방법
AWS Backup을 이용한 데이터베이스의 백업 자동화와 편리한 복구방법
 
진정한 하이브리드 환경을 위한 올바른 선택, AWS Outposts! - 강동환 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...
진정한 하이브리드 환경을 위한 올바른 선택, AWS Outposts! - 강동환 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...진정한 하이브리드 환경을 위한 올바른 선택, AWS Outposts! - 강동환 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...
진정한 하이브리드 환경을 위한 올바른 선택, AWS Outposts! - 강동환 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...
 
AWS Summit Seoul 2023 | AWS에서 OpenTelemetry 기반의 애플리케이션 Observability 구축/활용하기
AWS Summit Seoul 2023 | AWS에서 OpenTelemetry 기반의 애플리케이션 Observability 구축/활용하기AWS Summit Seoul 2023 | AWS에서 OpenTelemetry 기반의 애플리케이션 Observability 구축/활용하기
AWS Summit Seoul 2023 | AWS에서 OpenTelemetry 기반의 애플리케이션 Observability 구축/활용하기
 
AWS Summit Seoul 2023 | 금융 디지털 서비스 혁신을 리딩하는 교보정보통신의 클라우드 마이그레이션 사례 소개
AWS Summit Seoul 2023 | 금융 디지털 서비스 혁신을 리딩하는 교보정보통신의 클라우드 마이그레이션 사례 소개AWS Summit Seoul 2023 | 금융 디지털 서비스 혁신을 리딩하는 교보정보통신의 클라우드 마이그레이션 사례 소개
AWS Summit Seoul 2023 | 금융 디지털 서비스 혁신을 리딩하는 교보정보통신의 클라우드 마이그레이션 사례 소개
 
클라우드 마이그레이션 성공적인 여정, 그 중요한 시작 "Readiness Assessment (전환 준비 평가)" - 김준범, AWS Mi...
클라우드 마이그레이션 성공적인 여정, 그 중요한 시작 "Readiness Assessment (전환 준비 평가)" - 김준범, AWS Mi...클라우드 마이그레이션 성공적인 여정, 그 중요한 시작 "Readiness Assessment (전환 준비 평가)" - 김준범, AWS Mi...
클라우드 마이그레이션 성공적인 여정, 그 중요한 시작 "Readiness Assessment (전환 준비 평가)" - 김준범, AWS Mi...
 
AWS와 함께하는 클라우드 컴퓨팅 (강철 AWS 매니저) :: AWS 기초 교육 온라인 세미나
AWS와 함께하는 클라우드 컴퓨팅 (강철 AWS 매니저) :: AWS 기초 교육 온라인 세미나AWS와 함께하는 클라우드 컴퓨팅 (강철 AWS 매니저) :: AWS 기초 교육 온라인 세미나
AWS와 함께하는 클라우드 컴퓨팅 (강철 AWS 매니저) :: AWS 기초 교육 온라인 세미나
 
Meetup #4: AWS ELB Deep dive & Best practices
Meetup #4: AWS ELB Deep dive & Best practicesMeetup #4: AWS ELB Deep dive & Best practices
Meetup #4: AWS ELB Deep dive & Best practices
 
데이터베이스 운영, 서버리스로 걱정 끝! - 윤석찬, AWS 테크에반젤리스트 - AWS Builders Online Series
데이터베이스 운영, 서버리스로 걱정 끝! - 윤석찬, AWS 테크에반젤리스트 - AWS Builders Online Series데이터베이스 운영, 서버리스로 걱정 끝! - 윤석찬, AWS 테크에반젤리스트 - AWS Builders Online Series
데이터베이스 운영, 서버리스로 걱정 끝! - 윤석찬, AWS 테크에반젤리스트 - AWS Builders Online Series
 
AWS Elastic Beanstalk
AWS Elastic BeanstalkAWS Elastic Beanstalk
AWS Elastic Beanstalk
 
AWS 기반 5천만 모바일 앱서비스 확장하기 - 이영진 (강남SE 모임) :: AWS Community Day 2017
AWS 기반 5천만 모바일 앱서비스 확장하기 - 이영진 (강남SE 모임) :: AWS Community Day 2017AWS 기반 5천만 모바일 앱서비스 확장하기 - 이영진 (강남SE 모임) :: AWS Community Day 2017
AWS 기반 5천만 모바일 앱서비스 확장하기 - 이영진 (강남SE 모임) :: AWS Community Day 2017
 
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트) 마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
 
Amazon EMR과 SageMaker를 이용하여 데이터를 준비하고 머신러닝 모델 개발 하기
Amazon EMR과 SageMaker를 이용하여 데이터를 준비하고 머신러닝 모델 개발 하기Amazon EMR과 SageMaker를 이용하여 데이터를 준비하고 머신러닝 모델 개발 하기
Amazon EMR과 SageMaker를 이용하여 데이터를 준비하고 머신러닝 모델 개발 하기
 
AWS Fargate와 Amazon ECS를 사용한 CI/CD 베스트 프랙티스 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Build...
AWS Fargate와 Amazon ECS를 사용한 CI/CD 베스트 프랙티스 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Build...AWS Fargate와 Amazon ECS를 사용한 CI/CD 베스트 프랙티스 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Build...
AWS Fargate와 Amazon ECS를 사용한 CI/CD 베스트 프랙티스 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Build...
 
Arm 기반의 AWS Graviton 프로세서로 구동되는 AWS 인스턴스 살펴보기 - 김종선, AWS솔루션즈 아키텍트:: AWS Summi...
Arm 기반의 AWS Graviton 프로세서로 구동되는 AWS 인스턴스 살펴보기 - 김종선, AWS솔루션즈 아키텍트:: AWS Summi...Arm 기반의 AWS Graviton 프로세서로 구동되는 AWS 인스턴스 살펴보기 - 김종선, AWS솔루션즈 아키텍트:: AWS Summi...
Arm 기반의 AWS Graviton 프로세서로 구동되는 AWS 인스턴스 살펴보기 - 김종선, AWS솔루션즈 아키텍트:: AWS Summi...
 
네트워크 및 엣지 컴퓨팅 분야 신규 서비스 - 최우형, AWS 솔루션즈 아키텍트 :: AWS re:Invent re:Cap 2021
네트워크 및 엣지 컴퓨팅 분야 신규 서비스 - 최우형, AWS 솔루션즈 아키텍트 :: AWS re:Invent re:Cap 2021네트워크 및 엣지 컴퓨팅 분야 신규 서비스 - 최우형, AWS 솔루션즈 아키텍트 :: AWS re:Invent re:Cap 2021
네트워크 및 엣지 컴퓨팅 분야 신규 서비스 - 최우형, AWS 솔루션즈 아키텍트 :: AWS re:Invent re:Cap 2021
 
AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017
 AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017 AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017
AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략 - AWS Summit Seoul 2017
 
AWS를 활용한 리테일,이커머스 워크로드와 온라인 서비스 이관 사례::이동열, 임혁용:: AWS Summit Seoul 2018
AWS를 활용한 리테일,이커머스 워크로드와 온라인 서비스 이관 사례::이동열, 임혁용:: AWS Summit Seoul 2018 AWS를 활용한 리테일,이커머스 워크로드와 온라인 서비스 이관 사례::이동열, 임혁용:: AWS Summit Seoul 2018
AWS를 활용한 리테일,이커머스 워크로드와 온라인 서비스 이관 사례::이동열, 임혁용:: AWS Summit Seoul 2018
 
SK Telecom - 망관리 프로젝트 TANGO의 오픈소스 데이터베이스 전환 여정 - 발표자 : 박승전, Project Manager, ...
SK Telecom - 망관리 프로젝트 TANGO의 오픈소스 데이터베이스 전환 여정 - 발표자 : 박승전, Project Manager, ...SK Telecom - 망관리 프로젝트 TANGO의 오픈소스 데이터베이스 전환 여정 - 발표자 : 박승전, Project Manager, ...
SK Telecom - 망관리 프로젝트 TANGO의 오픈소스 데이터베이스 전환 여정 - 발표자 : 박승전, Project Manager, ...
 
AWS 기반 클라우드 아키텍처 모범사례 - 삼성전자 개발자 포털/개발자 워크스페이스 - 정영준 솔루션즈 아키텍트, AWS / 유현성 수석,...
AWS 기반 클라우드 아키텍처 모범사례 - 삼성전자 개발자 포털/개발자 워크스페이스 - 정영준 솔루션즈 아키텍트, AWS / 유현성 수석,...AWS 기반 클라우드 아키텍처 모범사례 - 삼성전자 개발자 포털/개발자 워크스페이스 - 정영준 솔루션즈 아키텍트, AWS / 유현성 수석,...
AWS 기반 클라우드 아키텍처 모범사례 - 삼성전자 개발자 포털/개발자 워크스페이스 - 정영준 솔루션즈 아키텍트, AWS / 유현성 수석,...
 
AWS 클라우드 비용 최적화를 위한 TIP - 임성은 AWS 매니저
AWS 클라우드 비용 최적화를 위한 TIP - 임성은 AWS 매니저AWS 클라우드 비용 최적화를 위한 TIP - 임성은 AWS 매니저
AWS 클라우드 비용 최적화를 위한 TIP - 임성은 AWS 매니저
 

Ähnlich wie AWS DevOps와 ECR을 통한 Elastic Beanstalk 배포 환경 구축 및 타 환경과의 비교

10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)
10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)
10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)
Amazon Web Services Korea
 
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
Amazon Web Services Korea
 
인프라 자동 배포를 위한 AWS CloudFormation 고급 활용법 - AWS Summit Seoul 2017
인프라 자동 배포를 위한 AWS CloudFormation 고급 활용법 - AWS Summit Seoul 2017인프라 자동 배포를 위한 AWS CloudFormation 고급 활용법 - AWS Summit Seoul 2017
인프라 자동 배포를 위한 AWS CloudFormation 고급 활용법 - AWS Summit Seoul 2017
Amazon Web Services Korea
 
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
Amazon Web Services Korea
 
AWS 상에서 Microsoft 워크로드 구축 및 운영 - AWS Summit Seoul 2017
AWS 상에서 Microsoft 워크로드 구축 및 운영 - AWS Summit Seoul 2017AWS 상에서 Microsoft 워크로드 구축 및 운영 - AWS Summit Seoul 2017
AWS 상에서 Microsoft 워크로드 구축 및 운영 - AWS Summit Seoul 2017
Amazon Web Services Korea
 
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
Amazon Web Services Korea
 
HB Smith에서는 AWS 이렇게 사용한다
HB Smith에서는 AWS 이렇게 사용한다HB Smith에서는 AWS 이렇게 사용한다
HB Smith에서는 AWS 이렇게 사용한다
Jongwon Han
 

Ähnlich wie AWS DevOps와 ECR을 통한 Elastic Beanstalk 배포 환경 구축 및 타 환경과의 비교 (20)

DevOps Study
DevOps StudyDevOps Study
DevOps Study
 
[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...
[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...
[AWS Dev Day] 앱 현대화 | 코드 기반 인프라(IaC)를 활용한 현대 애플리케이션 개발 가속화, 우리도 할 수 있어요 - 김필중...
 
AWS Fargate와 Amazon ECS를 활용한 CI/CD 모범사례 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Game Mast...
AWS Fargate와 Amazon ECS를 활용한 CI/CD 모범사례 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Game Mast...AWS Fargate와 Amazon ECS를 활용한 CI/CD 모범사례 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Game Mast...
AWS Fargate와 Amazon ECS를 활용한 CI/CD 모범사례 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Game Mast...
 
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...
클라이드 네이티브 기반 Twelve Factor 앱 개발 - 윤석찬, AWS 테크에반젤리스트 :: AWS Summit Online Kore...
 
AWS 관리형 서비스를 활용하여 Kubernetes 를 위한 Devops 환경 구축하기 - 김광영, AWS솔루션즈 아키텍트:: AWS S...
AWS 관리형 서비스를 활용하여 Kubernetes 를 위한 Devops 환경 구축하기 - 김광영, AWS솔루션즈 아키텍트::  AWS S...AWS 관리형 서비스를 활용하여 Kubernetes 를 위한 Devops 환경 구축하기 - 김광영, AWS솔루션즈 아키텍트::  AWS S...
AWS 관리형 서비스를 활용하여 Kubernetes 를 위한 Devops 환경 구축하기 - 김광영, AWS솔루션즈 아키텍트:: AWS S...
 
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
AWS Code 서비스 특집 - 아마존 DevOps와 CodeDeploy, CodePipeline (윤석찬)
 
Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...
Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...
Amazon EKS를 위한 AWS CDK와 CDK8s 활용법 - 염지원, 김광영 AWS 솔루션즈 아키텍트 :: AWS Summit Seou...
 
10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)
10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)
10월 웨비나 - AWS에서 MS Windows 운영, 관리 및 개발 손쉽게 하기 (박철수 솔루션즈 아키텍트)
 
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
 
DevOps (AWS, Docker, Ansible, Jenkins)
DevOps (AWS, Docker, Ansible, Jenkins)DevOps (AWS, Docker, Ansible, Jenkins)
DevOps (AWS, Docker, Ansible, Jenkins)
 
인프라 자동 배포를 위한 AWS CloudFormation 고급 활용법 - AWS Summit Seoul 2017
인프라 자동 배포를 위한 AWS CloudFormation 고급 활용법 - AWS Summit Seoul 2017인프라 자동 배포를 위한 AWS CloudFormation 고급 활용법 - AWS Summit Seoul 2017
인프라 자동 배포를 위한 AWS CloudFormation 고급 활용법 - AWS Summit Seoul 2017
 
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
 
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
 
AWS 상에서 Microsoft 워크로드 구축 및 운영 - AWS Summit Seoul 2017
AWS 상에서 Microsoft 워크로드 구축 및 운영 - AWS Summit Seoul 2017AWS 상에서 Microsoft 워크로드 구축 및 운영 - AWS Summit Seoul 2017
AWS 상에서 Microsoft 워크로드 구축 및 운영 - AWS Summit Seoul 2017
 
Aws serverless services
Aws serverless servicesAws serverless services
Aws serverless services
 
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
 
코드로 인프라 관리하기 - 자동화 툴 소개
코드로 인프라 관리하기 - 자동화 툴 소개코드로 인프라 관리하기 - 자동화 툴 소개
코드로 인프라 관리하기 - 자동화 툴 소개
 
introduction of IaC using CloudFormation
introduction of IaC using CloudFormationintroduction of IaC using CloudFormation
introduction of IaC using CloudFormation
 
DevOps를 위한 AWS 서비스 및 개발도구 -김상필 솔루션아키텍트 :: AWS 파트너 테크시프트 세미나
DevOps를 위한 AWS 서비스 및 개발도구  -김상필 솔루션아키텍트 :: AWS 파트너 테크시프트 세미나 DevOps를 위한 AWS 서비스 및 개발도구  -김상필 솔루션아키텍트 :: AWS 파트너 테크시프트 세미나
DevOps를 위한 AWS 서비스 및 개발도구 -김상필 솔루션아키텍트 :: AWS 파트너 테크시프트 세미나
 
HB Smith에서는 AWS 이렇게 사용한다
HB Smith에서는 AWS 이렇게 사용한다HB Smith에서는 AWS 이렇게 사용한다
HB Smith에서는 AWS 이렇게 사용한다
 

Kürzlich hochgeladen

Kürzlich hochgeladen (7)

공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화
 
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
 
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
 
JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!
 
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
 
데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법
 
JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례
 

AWS DevOps와 ECR을 통한 Elastic Beanstalk 배포 환경 구축 및 타 환경과의 비교

  • 1. AWS DevOps와 ECR을 통한 Elastic Beanstalk 배포 환경 구축 및 타 환경과의 비교 전북대학교 201610674 이영훈
  • 2. AWS DevOps Tools Code Commit • 완전관리형 • 협업 방식의 코드 작업 • 개발 수명 주기 속도 향상 • 기존 도구(Git) 사용
  • 3. AWS DevOps Tools • 완전관리형 빌드 서비스 • 지속적 크기 조정 • 사용량에 따라 지불 • 지속적 통합 및 전달 지원 Code Build
  • 4. AWS DevOps Tools • 신속한 제공 • 구성 가능한 워크플로 • 빠르게 시작 • 손쉬운 통합 Code Pipeline
  • 5. AWS DevOps Tools • 완전 관리형 레지스트리로 수월하게 작업 • 컨테이너 이미지를 안전하게 공유 및 다운로드 • 빠르고 가용성이 뛰어난 액세스 제공 • 배포 워크플로 간소화 Elastic Container Registry
  • 6. AWS DevOps Tools • 빠르고 간편한 시작 • 개발자 생산성 • 적절한 규모 유지 • 완벽한 리소스 제어 Elastic Beanstalk
  • 8. 배포 시나리오 Developers Code Commit Code Pipeline Code Build Elastic Container Registry Elastic Beanstalk
  • 9. 비교 시나리오 Developers Github Travis CI Docker Elastic Beanstalk
  • 10. 비교를 위한 동일 환경 • create-react-app 기본 환경 • dockerfile • Elastic Beanstalk 도커 플랫폼
  • 11. 환경 구축 1. 레포지토리 생성 2. Git 연결 (HTTPS를 이용하면 Github와 동일) Code Commit
  • 12. 환경 구축 1. 빌드 프로젝트 생성 2. Buildspec.yml 파일 생성 후 레포지토리에 추가 Code Build
  • 13. 환경 구축 • 소스 공급자: 소스를 받을 주체 (여기선 CodeCommit) • 레포지토리: 생성한 레포지토리 • 참조 유형: 소스 참조 유형 선택
  • 14. 환경 구축 • 환경 이미지: Codebuild 관리 이미지와 도커 이미지 중 선택 • 환경: Ubuntu: aws/codebuild/standard:4.0 버전 (다른 버전 사용시 오류 多) • 권한: Code build를 통해서 도커 이미지 빌드시 필요한 권한
  • 15. 환경 구축 • 서비스 역할: 역할 지정 • Buildspec: 빌드시 필요한 명령을 저장하는 파일
  • 16. 환경 구축 # buildspec.yml Version: 0.2 phases: pre_build: commands: - echo Logging in to Amazon ECR... - aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com build: commands: - echo Build started on `date` - echo Building the Docker image... - docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG . - docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG post_build: commands: - echo Build completed on `date` - echo Pushing the Docker image... - docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG • 나중에 생성할 AWS ECR 레포지토리의 내용과 IAM 계정의 정보, 소스와 함께 있는 Dockerfile, 저장될 컨테이너의 위치를 작성해야 Codebuild시 해당 설정을 통해 ECR에 docker 이미지를 생성합니다.
  • 17. 환경 구축 Elastic Container Registry (ECR) 1. 레포지토리 생성 2. Buildspec.yml 파일 ECR 설정 부분 채우기 https://docs.aws.amazon.com/ko_kr/codebuild/latest/userguide/sample-docker.html#sample-docker-docker-hub
  • 18. 환경 구축 • 푸시 명령 보기를 통해서 AWS CLI 인증, 도커 이미 지 build & tag, push 명령을 Buildspec.yml 파일에 지정
  • 19. 환경 구축 Elastic Beanstalk 1. 어플리케이션 및 환경 생성 2. Dockerrun.aws.json 파일 작성 https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/single-container-docker-configuration.html https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/create_deploy_docker_v2config.html
  • 20. 환경 구축 • Elastic beanstalk에서 Docker 이미지를 통한 배포를 위해 플랫폼을 Docker로 지정하며, Linux2가 아닌 Linux로 지정해야 버전 오류가 없다.
  • 21. 환경 구축 // dockerrun.aws.json { "AWSEBDockerrunVersion": 1, "containerDefinitions": [ { "name": "web_container", "image": "089802069060.dkr.ecr.us-east-1.amazonaws.com/web_container:latest" } ] } • Dockercompose를 사용하지 않는 경우에는 꼭 작성해야 하는 설정 파일 • v1: 도커 컨테이너 • v2: 멀티 컨테이너 • v3: 프라이빗 레포지토리 사용하여 S3 버킷 이용
  • 22. 환경 구축 Code Pipeline 1. 지금까지 설정을 이용하여 Pipeline 작성
  • 23. 환경 구축 소스 빌드 배포 AWS CodeCommit AWS CodeBuild AWS Elastic Beanstalk
  • 24. 비교 환경 구축 1. 레포지토리 작성 Github
  • 25. 비교 환경 구축 1. 도커 환경 실행 Docker
  • 26. 비교 환경 구축 1. Github 레포지토리 연결 2. .travis.yml 파일 작성 3. AWS IAM 사용자 연결 (보안) Travis CI
  • 27. 비교 환경 구축 sudo: required language: generic services: - docker before_install: - echo "start creating an image with dockerfile" - docker build -t lee20h/docker-travis-aws-config . script: - docker run -e CI=true lee20h/docker-travis-aws-config npm run test -- --coverage deploy: edge: true provider: elasticbeanstalk region: "us-east-1" app: "web deploy with docker" env: "WebDeployWithDocker-env" bucket_name: "elasticbeanstalk-us-east-1-089802069060" bucket_path: "web deploy with docker" on: branch: master access_key_id: $AWS_ACCESS_KEY secret_access_key: $AWS_SECRET_ACCESS_KEY • .travis.yml 파일 작성 • Dockerfile 이미지 build 후 push • 배포시에 AWS 설정 작성
  • 28. 비교 환경 구축 • IAM 사용자 액세스 키 등록 • Github에서 사용시 대부분 노출되므로 사용 권장
  • 29. 비교 환경 구축 소스 빌드 배포 Github Travis CI AWS Elastic Beanstalk
  • 30. 배포 테스트 • 소스: 즉시 • 빌드: 약 3분 • 배포: 약 6분 • 결과:
  • 31. 비교 배포 테스트 • 소스: 즉시 • 대기: 약 10분 • 빌드: 약 2분 • 배포: 약 8분 • 결과:
  • 32. 비교 결과 • 소요시간 비교 비교군 AWS DevOps 비교 환경 소스 즉시 즉시 빌드 약 3분 약 2분 배포 약 6분 약 8분 • 언뜻 보면 비슷한 수치이나, Travis CI의 경우 빌드를 위한 Travis Queue에 들어가는 시간이 약 10분 소요되어 총 약 20분 소요 • 따라서 Travis CI의 Queue가 대기 중이면 비슷한 성능 • 허나, 대부분 Queue 진입시간은 약 10분 소요
  • 33. 비교 결과 • 설정 필요한 파일 비교군 AWS DevOps 비교 환경 dockerfile O O dockerrun.aws.json O X .travis.yml X O buildspec.yml O X • AWS 개발자 도구를 사용한 배포는 유기적인 연결을 위해 여러 설정파일이 필요함 • 그에 반해 Travis CI를 사용한 배포는 Travis CI 설정 파일만 필요
  • 34. 비교 결과 • 과정 시각화 비교군 AWS DevOps 비교 환경 소스 O O 빌드 O O 배포 O X • AWS DevOps로 배포시엔 모든 과정이 시각화로 오류 부분을 바로 체크 가능 • Travis CI는 빌드까지 시각화 되어있지만 배포는 Elastic Beanstalk에서 이뤄지므로 배포까지 책임지지 않음
  • 35. 결론 • 설정하는 시간은 AWS DevOps가 더 소요되며 체크 해야 할 부분이 많다. • Commit 이후 배포까지의 속도는 AWS DevOps가 더 빠르다. • 에러 검출과 시각화의 경우 AWS DevOps가 더 편리하다. • Travis CI의 경우에는 무료인 만큼 속도가 느리나, 설정이 편리하다. • 프로젝트가 AWS 다른 서비스와 접목이 이뤄지거나, 유지보수에 중점을 준다면 AWS DevOps를 사용하는 것이 장기적으로 도움이 된다.