SlideShare ist ein Scribd-Unternehmen logo
1 von 81
Downloaden Sie, um offline zu lesen
GithubAction,AWSS3andCloudFront를활용한
React애플리케이션CI/CD파이프라인구축
CI/CD란?
애플리케이션개발단계를자동화하여애플리케이션을보다짧은주기로고객에게제공하는방법
React애플리케이션의CI/CD
PR이생성되면자동으로빌드,테스트하고성공여부에따라merge할지를판단한다
배포브랜치에PR이머지되면자동으로빌드,테스트후호스팅환경에배포한다
캐시서버(CDN)을사용한다면서버에저장된캐시를무효화(invalidate)시킨다
etc.(배포가완료되면Slack에알림을쏜다등)
CI/CD파이프라인아키텍처
이번세미나에서구축할React애플리케이션CI/CD파이프라인
GithubAction
GithubAction은?
name
name:
: Continuous Integration
Continuous Integration
on
on:
: [
[pull_request
pull_request]
]
jobs
jobs:
:
build
build:
:
runs-on
runs-on:
: ubuntu
ubuntu-
-latest
latest
steps
steps:
:
-
- uses
uses:
: actions/checkout@v2
actions/checkout@v2
-
- name
name:
: Install dependencies
Install dependencies
run
run:
: npm ci
npm ci
-
- name
name:
: Build webpack
Build webpack
run
run:
: npm run build
npm run build
YAML파일로Github가제공하는서버
상에서CI/CD워크플로우를구축하게
도와주는기능
단순애플리케이션빌드,테스트뿐만아니라
Github의다른기능(브랜치,이슈등)과
연계도가능
GithubAction빌딩블록
워크플로우(Workflow):Github
레포지토리에등록하는자동화된업무흐름
이벤트(Event):워크플로우를트리거하는
특정활동(커밋,풀리퀘스트생성등)
잡(Job):워크플로우에서수행하는작업의
단위.워크플로우내잡은각각독립적으로
러너를실행하며병렬적으로수행(순차적
수행도가능)
스텝(Step):잡에서실행되는일의단위.각
스텝은하나의액션또는커맨드명령으로
구성
액션(Action):커맨드명령외에도다양한
작업(SMS푸시및서드파티라이브러리
이용등)을수행하는잡의구성요소
러너(Runner):잡을실행하는서버.
Github에호스팅된러너를사용할수도있고
GithubActionsrunnerapplication이
설치된온프레미스서버를사용할수도있다
GettingStarted
create-next-app 명령으로만든간단한React애플리케이션을배포해봅시다
WelcometoNext.js!
Getstartedbyediting pages/index.js
Documentation→
Findin-depthinformationaboutNext.jsfeaturesandAPI.
Learn→
LearnaboutNext.jsinaninteractivecoursewithquizzes!
Examples→
DiscoveranddeployboilerplateexampleNext.jsprojects.
Deploy→
InstantlydeployyourNext.jssitetoapublicURLwithVercel.
Package.json
여기서만드는애플리케이션은CSR(ClientSideRendering)한다고가정하고, pakcage.json 은다음과
같습니다
{
{
"name"
"name":
: "react-ci-cd-tutorial"
"react-ci-cd-tutorial",
,
"version"
"version":
: "0.1.0"
"0.1.0",
,
"private"
"private":
: true
true,
,
"scripts"
"scripts":
: {
{
"dev"
"dev":
: "next dev"
"next dev",
,
"build"
"build":
: "next build && next export"
"next build && next export",
,
"start"
"start":
: "next start"
"next start"
}
},
,
"dependencies"
"dependencies":
: {
{
"next"
"next":
: "^10.0.0"
"^10.0.0",
,
"react"
"react":
: "17.0.1"
"17.0.1",
,
"react-dom"
"react-dom":
: "17.0.1"
"17.0.1"
}
}
}
}
브랜치전략
main,dev두브랜치를사용한다고가정합니다
dev:작업이이뤄지는브랜치.main브랜치로PR을날리면자동으로빌드,테스트가실행됩니다
main:배포환경과동일한형상을유지하는브랜치.dev에서날린PR이머지되면자동으로빌드,
테스트그리고배포가진행됩니다
CI워크플로우
dev브랜치에서 .github/workflows 폴더를만들고그아래에 ci.yaml 파일을작성합니다
name
name:
: Continuous Integration
Continuous Integration
on
on:
: [
[pull_request
pull_request]
]
jobs
jobs:
:
build
build:
:
runs-on
runs-on:
: ubuntu
ubuntu-
-latest
latest
steps
steps:
:
-
- uses
uses:
: actions/checkout@v2
actions/checkout@v2
-
- name
name:
: Install dependencies
Install dependencies
run
run:
: npm ci
npm ci
-
- name
name:
: Build webpack
Build webpack
run
run:
: npm run build
npm run build
CI워크플로우-실습
dev브랜치푸시후main브랜치로PR을생성하면CI워크플로우가실행되는것을확인할수있습니다
main브랜치로PR을생성한모습
CI워크플로우-실습
Action탭에서현재실행중인워크플로우목록을확인할수있다
CI워크플로우-실습
워크플로우를클릭하면포함된잡목록을확인할수있다
CI워크플로우-실습
잡을클릭하면스탭목록과진행상황을확인할수있다
CI워크플로우-실습
CI가성공적으로돌고난후PR머지가가능한모습
GithubAction과AWSS3연동
AWSS3는?
S3는SimpleStorageService의약자로데이터를클라우드(버킷)에저장하고반환하는기능을
제공하는인터페이스
S3의정적웹사이트호스팅기능을이용해서html,css,js파일을저장하여웹서비스운영가능
정적웹사이트호스팅할S3버킷생성-실습
React애플리케이션을호스팅할S3버킷을직접생성해봅시다.
AWSS3콘솔에서CreateBucket버튼클릭
정적웹사이트호스팅할S3버킷생성-실습
버킷의이름명명및리전(위치)선택
정적웹사이트호스팅할S3버킷생성-실습
버킷의퍼블릭액세스설정.
원래버킷퍼블릭액세스를차단하는게일반적이지만웹사이트호스팅용도로사용할경우인터넷상의
누구나접근가능하도록퍼블릭액세스허용
정적웹사이트호스팅할S3버킷생성-실습
버저닝,암호화등기타설정은그대로두고Createbucket버튼을클릭
정적웹사이트호스팅할S3버킷생성-실습
만들어진버킷의Properties탭클릭
정적웹사이트호스팅할S3버킷생성-실습
Staticwebsitehosting섹션의Edit버튼클릭
정적웹사이트호스팅할S3버킷생성-실습
Enable을선택하고인덱스페이지와에러페이지로사용할파일을입력
정적웹사이트호스팅할S3버킷생성-실습
Permissions탭클릭
정적웹사이트호스팅할S3버킷생성-실습
Bucketpolicy섹션의Edit버튼클릭
정적웹사이트호스팅할S3버킷생성-실습
Policy섹션에아래스크립트입력
{
{
"Version"
"Version":
: "2012-10-17"
"2012-10-17",
,
"Statement"
"Statement":
: [
[
{
{
"Sid"
"Sid":
: "PublicRead"
"PublicRead",
,
"Effect"
"Effect":
: "Allow"
"Allow",
,
"Principal"
"Principal":
: "*"
"*",
,
"Action"
"Action":
: [
["s3:GetObject"
"s3:GetObject",
, "s3:GetObjectVersion"
"s3:GetObjectVersion"]
],
,
"Resource"
"Resource":
: "arn:aws:s3:::버킷이름/*"
"arn:aws:s3:::버킷이름/*"
}
}
]
]
}
}
CD워크플로우에서의AWSCLI설정
.github/workflows 폴더아래에 cd.yaml 파일을작성하기전준비해야할것
CD워크플로우에는빌드한React앱을S3버킷에업로드하는과정이포함되는데,S3에접근
가능하다는자격증명이필요
AWSIAM(Identity&AccessManagement)으로워크플로우용User를생성해서사용
AWSIAM유저생성-실습
아래와같이CD워크플로우에서S3에접근하는주체(User)를만들어줍시다.
AWSIAM콘솔에서Users탭클릭
AWSIAM유저생성-실습
Adduser버튼클릭
AWSIAM유저생성-실습
Username명명및액세스타입선택(워크플로우에서사용할목적이므로Programaticacces만을선택)
AWSIAM유저생성-실습
AWS에서미리만들어놓은ManagedPolicy중하나인AmazonS3FullAccess를선택
AWSIAM유저생성-실습
마지막으로설정확인후Createuser버튼클릭
AWSIAM유저생성-실습
유저를생성하면Access키와Secret키를주는데반드시별도로저장해야함.CSV다운버튼클릭
생성한User의Access,Secret키를GithubSecret에등록
GithubSecret은민감한데이터를Github에저장하여GithubAction,Package등에서사용할수
있도록도와주는기능
AWSUser의Programaticaccess키를YAML파일에하드코딩하지않고GithubSecret에보관하는
것이안전
GithubSecret등록-실습
아래와같이워크플로우에서사용할키를GithubSecret에저장해봅시다.
Github레포지토리의Settings>Secrets탭클릭후Newrepositorysecret버튼클릭
GithubSecret등록-실습
발급받은AWSAccess키를저장
GithubSecret등록-실습
계속해서AWSSecret키도마저저장(여기서는리전,버킷이름도시크릿으로저장함)
CD워크플로우
.github/workflows 폴더아래에 cd.yaml 파일을작성해봅시다
name
name:
: Continuous Deployment
Continuous Deployment
on
on:
:
push
push:
:
branches
branches:
:
-
- main
main
jobs
jobs:
:
build
build:
:
runs-on
runs-on:
: ubuntu
ubuntu-
-latest
latest
steps
steps:
:
# ...ci.yaml 과 동일한 step
# ...ci.yaml 과 동일한 step
-
- uses
uses:
: actions/upload
actions/upload-
-artifact@v2
artifact@v2
with
with:
:
name
name:
: built
built-
-artifact
artifact
path
path:
: out/
out/
deploy
deploy:
:
needs
needs:
: build
build
runs-on
runs-on:
: ubuntu
ubuntu-
-latest
latest
steps
steps:
:
-
- uses
uses:
: actions/download
actions/download-
-artifact@v2
artifact@v2
with
with:
:
name
name:
: built
built-
-artifact
artifact
-
- uses
uses:
: aws
aws-
-actions/configure
actions/configure-
-aws
aws-
-credentials@v1
credentials@v1
with
with:
:
CD워크플로우-실습
main <- dev PR을merge한뒤Action이실행되는지확인해봅시다
PR을머지한모습
CD워크플로우-실습
Action탭에서CD워크플로우가실행되고있는것을확인할수있다
CD워크플로우-실습
CD워크플로우에포함된잡목록에서build,deploy잡을확인할수있다.현재build잡이실행되는동안
deploy잡은기다리는상태
CD워크플로우-실습
build잡을클릭해서현재진행중인스텝확인
CD워크플로우-실습
build잡이PASS하자deploy잡이실행된상태
CD워크플로우-실습
deploy잡도PASS완료.이제AWSS3URL로웹사이트를확인할수있다
CD워크플로우-실습
AWSS3버킷에빌드된artifact가업로드된상태
CD워크플로우-실습
Properties>Staticwebsitehosting섹션에서웹서비스URL확인가능
CD워크플로우-실습
index페이지가잘나오는것확인
CD워크플로우-실습
error페이지가잘나오는것확인
AWSS3와CloudFront연동
AWSCloudFront는?
콘텐츠(HTML,CSS,JS,etc.)를사용자에게더빨리배포하도록AWS에서제공하는CDN(Content
DeliveryNetwork)서비스
AWSCloudFront,즉CDN을사용해서웹애플리케이션을배포하면로드밸런싱,속도및성능향상,
보안등다양한이점이존재
AWSCloudFront-Howitworks
유럽리전에위치한S3로웹서비스를배포하는경우
AWSCloudFront-Howitworks
S3와CloudFront(CDN)을함께사용하는경우.가까운거리에서요청한사용자는엣지로케이션에서캐싱된콘텐츠를빠르게제공받는다
AWSCloudFront-Benchmark
버지니아북부에위치한S3를오리진으로하는CloudFront여부에따른전송결과비교
AWSCloudFrontDistribution생성-실습
이전에생성한S3를Origin으로하는CloudFrontDistribution을생성해봅시다
CreateDistribution버튼클릭
AWSCloudFrontDistribution생성-실습
GetStarted버튼클릭
AWSCloudFrontDistribution생성-실습
OriginSettings>OriginDomainName설정.S3버킷선택후다른설정은무시
AWSCloudFrontDistribution생성-실습
DefaultCacheBehaviorSettings>ViewProtocolPolicy설정.HTTP를HTTPS로리다이렉트
시키도록한다.다른설정은무시
AWSCloudFrontDistribution생성-실습
DistributionSettings>PriceClass,DefaultRootObject설정.위치하고자하는엣지로케이션에따라
가격이다르기때문에적절한priceclass를선택하고URL접속시보여줄HTML파일(index.html)을
설정한다
AWSCloudFrontDistribution생성-실습
Distribution을생성하고잠시기다리면해당CloudFrontURL로접속할수있다
AWSCloudFrontDistribution생성-실습
CloudFrontURL로접속한모습
GithubActionCD워크플로우수정
main브랜치에새로운커밋이푸시되면사용자는캐시된콘텐츠가아닌새로운콘텐츠를볼수있어야
한다
CD워크플로우에서AWSCLI로CloudFront에저장된캐시를invalidate시켜주어야한다
즉,CD워크플로우의AWSCLIUser에CloudFront에접근할수있는policy를추가하고invlidate
step을추가해야한다
AWSIAM유저에CloudFront접근정책추가-실습
이전에생성한User페이지에서AddPermissions버튼클릭
AWSIAM유저에CloudFront접근정책추가-실습
Attachexistingpoliciesdirectly클릭후cloudFront를검색하여CloudFrontFullAccess롤을선택한다
CD워크플로우수정
.github/workflows/cd.yaml 의 deploy 잡의맨마지막으로다음과같은step을추가합니다
여기서는GithubSecret에cloudfrontdistribution아이디를AWS_CLOUDFRONT_DISTRIBUTION_ID란이름으로추가했습니다
name
name:
: Continuous Deployment
Continuous Deployment
on
on:
:
push
push:
:
branches
branches:
:
-
- main
main
jobs
jobs:
:
build
build:
:
# ...
# ...
deploy
deploy:
:
# ...
# ...
-
- name
name:
: Invalidate CloudFront Cache
Invalidate CloudFront Cache
run
run:
: aws cloudfront create
aws cloudfront create-
-invalidation
invalidation -
--
-distribution
distribution-
-id $
id ${
{{
{ secrets.AWS_CLOUDFRON
secrets.AWS_CLOUDFRON
수정된CD워크플로우-실습
CloudFront캐시invalidation이추가된CD워크플로우가제대로동작하는지확인해봅시다
pages/index.js수정
수정된CD워크플로우-실습
수정된커밋을main브랜치에푸시
수정된CD워크플로우-실습
Actions>ContinuousDeployment>deploy에서캐시invalidation스텝확인
수정된CD워크플로우-실습
CloudfrontURL로접속해서변경사항이적용되었는지확인
수정된CD워크플로우-실습
CloudFront콘솔의invalidation탭에서invalidation이력확인
DONE🎉
React애플리케이션CI/CD파이프라인구축완료!
부록(Tips)
GithubActionCaching
package-lock.json 파일의변경사항이없으면node_modules를매번설치하지않고캐싱할수
있다
참고:https://github.com/actions/cache
웹애플리케이션캐시
Webpack과같은모듈번들러를활용하여CSS,JS,Assets에유니크한해시를부여(ex.app-
67ce7f3483.css)
CS,JS,Assets에대해선 Cache-Control 헤더를 public, max-age=31536000 으로설정
위파일들을포함하는HTML파일에대해선 Cache-Control 헤더를 no-cache 로설정
참고:https://medium.com/pixelpoint/best-practices-for-cache-control-settings-for-your-
website-ff262b38c5a2
AWSCloudFrontOAI(OriginAccessIdentity)
CloudFront의Origin(S3)으로직접접근하지못하도록막는대신CloudFront를통해서만접근할수
있도록할수있다
참고:https://docs.aws.amazon.com/ko_kr/AmazonCloudFront/latest/DeveloperGuide/private-
content-restricting-access-to-s3.html
AWSRoute53
Route53은AWS에서관리하는DNS서비스로이를활용해서S3,CloudFront에대한ALIASDNS
레코드를추가할수있다
참고:https://docs.aws.amazon.com/ko_kr/Route53/latest/DeveloperGuide/Welcome.html
AWSACM
CloudFront에커스텀도메인설정할때TLS/SSL인증서를만들어주고관리해주는서비스
참고:https://docs.aws.amazon.com/ko_kr/acm/latest/userguide/acm-overview.html
Q&A
References
GithubAction공식문서
AWSS3공식문서
AWSIAM공식문서
AWSCloudFront공식문서
실전AmazonS3와CloudFront로정적파일배포하기
AWSCLI로AmazonCloudFrontOAI(OriginAccessIdentity)설정하기
ThankYou
Author:@eunsukimme

Weitere ähnliche Inhalte

Was ist angesagt?

Hacking Jenkins
Hacking JenkinsHacking Jenkins
Hacking JenkinsMiro Cupak
 
Jenkins Introduction
Jenkins IntroductionJenkins Introduction
Jenkins IntroductionPavan Gupta
 
Designing a complete ci cd pipeline using argo events, workflow and cd products
Designing a complete ci cd pipeline using argo events, workflow and cd productsDesigning a complete ci cd pipeline using argo events, workflow and cd products
Designing a complete ci cd pipeline using argo events, workflow and cd productsJulian Mazzitelli
 
Asynchronous Programming in C# - Part 1
Asynchronous Programming in C# - Part 1Asynchronous Programming in C# - Part 1
Asynchronous Programming in C# - Part 1Mindfire Solutions
 
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개if kakao
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes IntroductionPeng Xiao
 
NGINX Ingress Controller for Kubernetes
NGINX Ingress Controller for KubernetesNGINX Ingress Controller for Kubernetes
NGINX Ingress Controller for KubernetesNGINX, Inc.
 
Terraform: An Overview & Introduction
Terraform: An Overview & IntroductionTerraform: An Overview & Introduction
Terraform: An Overview & IntroductionLee Trout
 
EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...
EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...
EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...AWSKRUG - AWS한국사용자모임
 
Jenkins를 활용한 Openshift CI/CD 구성
Jenkins를 활용한 Openshift CI/CD 구성 Jenkins를 활용한 Openshift CI/CD 구성
Jenkins를 활용한 Openshift CI/CD 구성 rockplace
 
CI/CD Overview
CI/CD OverviewCI/CD Overview
CI/CD OverviewAn Nguyen
 
Cloud Native ClickHouse at Scale--Using the Altinity Kubernetes Operator-2022...
Cloud Native ClickHouse at Scale--Using the Altinity Kubernetes Operator-2022...Cloud Native ClickHouse at Scale--Using the Altinity Kubernetes Operator-2022...
Cloud Native ClickHouse at Scale--Using the Altinity Kubernetes Operator-2022...Altinity Ltd
 
Using GitHub Actions to Deploy your Workloads to Azure
Using GitHub Actions to Deploy your Workloads to AzureUsing GitHub Actions to Deploy your Workloads to Azure
Using GitHub Actions to Deploy your Workloads to AzureKasun Kodagoda
 
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...Simplilearn
 
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법Open Source Consulting
 

Was ist angesagt? (20)

Hacking Jenkins
Hacking JenkinsHacking Jenkins
Hacking Jenkins
 
Jenkins Introduction
Jenkins IntroductionJenkins Introduction
Jenkins Introduction
 
Helm.pptx
Helm.pptxHelm.pptx
Helm.pptx
 
Designing a complete ci cd pipeline using argo events, workflow and cd products
Designing a complete ci cd pipeline using argo events, workflow and cd productsDesigning a complete ci cd pipeline using argo events, workflow and cd products
Designing a complete ci cd pipeline using argo events, workflow and cd products
 
CI/CD with GitHub Actions
CI/CD with GitHub ActionsCI/CD with GitHub Actions
CI/CD with GitHub Actions
 
Asynchronous Programming in C# - Part 1
Asynchronous Programming in C# - Part 1Asynchronous Programming in C# - Part 1
Asynchronous Programming in C# - Part 1
 
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
 
Final terraform
Final terraformFinal terraform
Final terraform
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
 
NGINX Ingress Controller for Kubernetes
NGINX Ingress Controller for KubernetesNGINX Ingress Controller for Kubernetes
NGINX Ingress Controller for Kubernetes
 
Effective terraform
Effective terraformEffective terraform
Effective terraform
 
Terraform
TerraformTerraform
Terraform
 
Terraform: An Overview & Introduction
Terraform: An Overview & IntroductionTerraform: An Overview & Introduction
Terraform: An Overview & Introduction
 
EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...
EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...
EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...
 
Jenkins를 활용한 Openshift CI/CD 구성
Jenkins를 활용한 Openshift CI/CD 구성 Jenkins를 활용한 Openshift CI/CD 구성
Jenkins를 활용한 Openshift CI/CD 구성
 
CI/CD Overview
CI/CD OverviewCI/CD Overview
CI/CD Overview
 
Cloud Native ClickHouse at Scale--Using the Altinity Kubernetes Operator-2022...
Cloud Native ClickHouse at Scale--Using the Altinity Kubernetes Operator-2022...Cloud Native ClickHouse at Scale--Using the Altinity Kubernetes Operator-2022...
Cloud Native ClickHouse at Scale--Using the Altinity Kubernetes Operator-2022...
 
Using GitHub Actions to Deploy your Workloads to Azure
Using GitHub Actions to Deploy your Workloads to AzureUsing GitHub Actions to Deploy your Workloads to Azure
Using GitHub Actions to Deploy your Workloads to Azure
 
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
 
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법
 

Ähnlich wie Github Action, AWS S3, CloudFront를 활용한 React 애플리케이션 CICD 파이프라인 구축

20171122 aws usergrp_coretech-spn-cicd-aws-v01
20171122 aws usergrp_coretech-spn-cicd-aws-v0120171122 aws usergrp_coretech-spn-cicd-aws-v01
20171122 aws usergrp_coretech-spn-cicd-aws-v01Scott Miao
 
Introduction to Cloud Foundry #JJUG
Introduction to Cloud Foundry #JJUGIntroduction to Cloud Foundry #JJUG
Introduction to Cloud Foundry #JJUGToshiaki Maki
 
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with ConcourseContinuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with ConcourseVMware Tanzu
 
CICD Pipeline - AWS Azure
CICD Pipeline - AWS AzureCICD Pipeline - AWS Azure
CICD Pipeline - AWS AzureRatan Das
 
Migrate a on-prem platform to the public cloud with Java - SpringBoot and PCF
Migrate a on-prem platform to the public cloud with Java - SpringBoot and PCFMigrate a on-prem platform to the public cloud with Java - SpringBoot and PCF
Migrate a on-prem platform to the public cloud with Java - SpringBoot and PCFRoy Braam
 
Arquitectura en detalle de una anatomia devops
Arquitectura en detalle de una anatomia devopsArquitectura en detalle de una anatomia devops
Arquitectura en detalle de una anatomia devopsOrlando Chamorro
 
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) PipelineAnatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) PipelineRobert McDermott
 
The twelve factor app
The twelve factor appThe twelve factor app
The twelve factor appRavi Okade
 
Achieving Developer Nirvana With Codename: BlueMix
Achieving Developer Nirvana With Codename: BlueMixAchieving Developer Nirvana With Codename: BlueMix
Achieving Developer Nirvana With Codename: BlueMixRyan Baxter
 
quickguide-einnovator-4-cloudfoundry
quickguide-einnovator-4-cloudfoundryquickguide-einnovator-4-cloudfoundry
quickguide-einnovator-4-cloudfoundryjorgesimao71
 
Salvatore Incandela, Fabio Marinelli - Using Spinnaker to Create a Developmen...
Salvatore Incandela, Fabio Marinelli - Using Spinnaker to Create a Developmen...Salvatore Incandela, Fabio Marinelli - Using Spinnaker to Create a Developmen...
Salvatore Incandela, Fabio Marinelli - Using Spinnaker to Create a Developmen...Codemotion
 
Visual Studio 2017 - Montreal Launch Event
Visual Studio 2017  - Montreal Launch EventVisual Studio 2017  - Montreal Launch Event
Visual Studio 2017 - Montreal Launch EventGuy Barrette
 
App fabric hybrid computing
App fabric   hybrid computingApp fabric   hybrid computing
App fabric hybrid computingHammad Rajjoub
 
La sécurité avec Kubernetes et les conteneurs Docker (June 19th, 2019)
La sécurité avec Kubernetes et les conteneurs Docker (June 19th, 2019)La sécurité avec Kubernetes et les conteneurs Docker (June 19th, 2019)
La sécurité avec Kubernetes et les conteneurs Docker (June 19th, 2019)Alexandre Roman
 
Containers and Kubernetes
Containers and KubernetesContainers and Kubernetes
Containers and KubernetesNills Franssens
 
Moderniser le legacy JEE avec les containers et les microservices: patterns a...
Moderniser le legacy JEE avec les containers et les microservices: patterns a...Moderniser le legacy JEE avec les containers et les microservices: patterns a...
Moderniser le legacy JEE avec les containers et les microservices: patterns a...VMware Tanzu
 
Aws container webinar day 2
Aws container webinar day 2Aws container webinar day 2
Aws container webinar day 2HoseokSeo7
 
Developer Nirvana with IBM Bluemix™
Developer Nirvana with IBM Bluemix™Developer Nirvana with IBM Bluemix™
Developer Nirvana with IBM Bluemix™IBM
 
Continuous delivery with azure app service
Continuous delivery with azure app serviceContinuous delivery with azure app service
Continuous delivery with azure app serviceNabeel Khan
 

Ähnlich wie Github Action, AWS S3, CloudFront를 활용한 React 애플리케이션 CICD 파이프라인 구축 (20)

20171122 aws usergrp_coretech-spn-cicd-aws-v01
20171122 aws usergrp_coretech-spn-cicd-aws-v0120171122 aws usergrp_coretech-spn-cicd-aws-v01
20171122 aws usergrp_coretech-spn-cicd-aws-v01
 
Introduction to Cloud Foundry #JJUG
Introduction to Cloud Foundry #JJUGIntroduction to Cloud Foundry #JJUG
Introduction to Cloud Foundry #JJUG
 
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with ConcourseContinuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
 
CICD Pipeline - AWS Azure
CICD Pipeline - AWS AzureCICD Pipeline - AWS Azure
CICD Pipeline - AWS Azure
 
Migrate a on-prem platform to the public cloud with Java - SpringBoot and PCF
Migrate a on-prem platform to the public cloud with Java - SpringBoot and PCFMigrate a on-prem platform to the public cloud with Java - SpringBoot and PCF
Migrate a on-prem platform to the public cloud with Java - SpringBoot and PCF
 
Arquitectura en detalle de una anatomia devops
Arquitectura en detalle de una anatomia devopsArquitectura en detalle de una anatomia devops
Arquitectura en detalle de una anatomia devops
 
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) PipelineAnatomy of a Continuous Integration and Delivery (CICD) Pipeline
Anatomy of a Continuous Integration and Delivery (CICD) Pipeline
 
5 pcf
5 pcf5 pcf
5 pcf
 
The twelve factor app
The twelve factor appThe twelve factor app
The twelve factor app
 
Achieving Developer Nirvana With Codename: BlueMix
Achieving Developer Nirvana With Codename: BlueMixAchieving Developer Nirvana With Codename: BlueMix
Achieving Developer Nirvana With Codename: BlueMix
 
quickguide-einnovator-4-cloudfoundry
quickguide-einnovator-4-cloudfoundryquickguide-einnovator-4-cloudfoundry
quickguide-einnovator-4-cloudfoundry
 
Salvatore Incandela, Fabio Marinelli - Using Spinnaker to Create a Developmen...
Salvatore Incandela, Fabio Marinelli - Using Spinnaker to Create a Developmen...Salvatore Incandela, Fabio Marinelli - Using Spinnaker to Create a Developmen...
Salvatore Incandela, Fabio Marinelli - Using Spinnaker to Create a Developmen...
 
Visual Studio 2017 - Montreal Launch Event
Visual Studio 2017  - Montreal Launch EventVisual Studio 2017  - Montreal Launch Event
Visual Studio 2017 - Montreal Launch Event
 
App fabric hybrid computing
App fabric   hybrid computingApp fabric   hybrid computing
App fabric hybrid computing
 
La sécurité avec Kubernetes et les conteneurs Docker (June 19th, 2019)
La sécurité avec Kubernetes et les conteneurs Docker (June 19th, 2019)La sécurité avec Kubernetes et les conteneurs Docker (June 19th, 2019)
La sécurité avec Kubernetes et les conteneurs Docker (June 19th, 2019)
 
Containers and Kubernetes
Containers and KubernetesContainers and Kubernetes
Containers and Kubernetes
 
Moderniser le legacy JEE avec les containers et les microservices: patterns a...
Moderniser le legacy JEE avec les containers et les microservices: patterns a...Moderniser le legacy JEE avec les containers et les microservices: patterns a...
Moderniser le legacy JEE avec les containers et les microservices: patterns a...
 
Aws container webinar day 2
Aws container webinar day 2Aws container webinar day 2
Aws container webinar day 2
 
Developer Nirvana with IBM Bluemix™
Developer Nirvana with IBM Bluemix™Developer Nirvana with IBM Bluemix™
Developer Nirvana with IBM Bluemix™
 
Continuous delivery with azure app service
Continuous delivery with azure app serviceContinuous delivery with azure app service
Continuous delivery with azure app service
 

Mehr von Eunsu Kim

프로그래머스 프론트엔드 아키텍처 변천사: 좋은 개발 경험을 찾아서
프로그래머스 프론트엔드 아키텍처 변천사: 좋은 개발 경험을 찾아서프로그래머스 프론트엔드 아키텍처 변천사: 좋은 개발 경험을 찾아서
프로그래머스 프론트엔드 아키텍처 변천사: 좋은 개발 경험을 찾아서Eunsu Kim
 
AWS 기반 마이크로 프론트엔드 아키텍처 구축하기
AWS 기반 마이크로 프론트엔드 아키텍처 구축하기AWS 기반 마이크로 프론트엔드 아키텍처 구축하기
AWS 기반 마이크로 프론트엔드 아키텍처 구축하기Eunsu Kim
 
AWS CDK를 활용한 클라우드 프로그래밍
AWS CDK를 활용한 클라우드 프로그래밍AWS CDK를 활용한 클라우드 프로그래밍
AWS CDK를 활용한 클라우드 프로그래밍Eunsu Kim
 
Chrome DevTools로 JS 메모리릭 디버깅하기.pptx
Chrome DevTools로 JS 메모리릭 디버깅하기.pptxChrome DevTools로 JS 메모리릭 디버깅하기.pptx
Chrome DevTools로 JS 메모리릭 디버깅하기.pptxEunsu Kim
 
웹 프론트엔드 테스팅
웹 프론트엔드 테스팅웹 프론트엔드 테스팅
웹 프론트엔드 테스팅Eunsu Kim
 
2021 AUSG Big Chat - AWS IVS 로 Live Streaming 웹 앱 만들기
2021 AUSG Big Chat - AWS IVS 로 Live Streaming 웹 앱 만들기2021 AUSG Big Chat - AWS IVS 로 Live Streaming 웹 앱 만들기
2021 AUSG Big Chat - AWS IVS 로 Live Streaming 웹 앱 만들기Eunsu Kim
 

Mehr von Eunsu Kim (6)

프로그래머스 프론트엔드 아키텍처 변천사: 좋은 개발 경험을 찾아서
프로그래머스 프론트엔드 아키텍처 변천사: 좋은 개발 경험을 찾아서프로그래머스 프론트엔드 아키텍처 변천사: 좋은 개발 경험을 찾아서
프로그래머스 프론트엔드 아키텍처 변천사: 좋은 개발 경험을 찾아서
 
AWS 기반 마이크로 프론트엔드 아키텍처 구축하기
AWS 기반 마이크로 프론트엔드 아키텍처 구축하기AWS 기반 마이크로 프론트엔드 아키텍처 구축하기
AWS 기반 마이크로 프론트엔드 아키텍처 구축하기
 
AWS CDK를 활용한 클라우드 프로그래밍
AWS CDK를 활용한 클라우드 프로그래밍AWS CDK를 활용한 클라우드 프로그래밍
AWS CDK를 활용한 클라우드 프로그래밍
 
Chrome DevTools로 JS 메모리릭 디버깅하기.pptx
Chrome DevTools로 JS 메모리릭 디버깅하기.pptxChrome DevTools로 JS 메모리릭 디버깅하기.pptx
Chrome DevTools로 JS 메모리릭 디버깅하기.pptx
 
웹 프론트엔드 테스팅
웹 프론트엔드 테스팅웹 프론트엔드 테스팅
웹 프론트엔드 테스팅
 
2021 AUSG Big Chat - AWS IVS 로 Live Streaming 웹 앱 만들기
2021 AUSG Big Chat - AWS IVS 로 Live Streaming 웹 앱 만들기2021 AUSG Big Chat - AWS IVS 로 Live Streaming 웹 앱 만들기
2021 AUSG Big Chat - AWS IVS 로 Live Streaming 웹 앱 만들기
 

Kürzlich hochgeladen

Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 

Kürzlich hochgeladen (20)

Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 

Github Action, AWS S3, CloudFront를 활용한 React 애플리케이션 CICD 파이프라인 구축