- 요구분석 및 시스템 명세작성
문제분석 단계라고도 하며, 개발할 소프트웨어의 기능과 제약조건, 목표 등을 사용자와 함께 정확히 정의하는 단계
- 설계
설계단계에서는 앞서 정의한 기능을 실제로 수행하기 위한 방법을 논리적으로 결정
- 구현
설계 단계에서 논리적으로 결정한 문제 해결 방법을 프로그래밍언어를 사용하여 실제 프로그램을 작성
- 테스트
개발한 시스템이 요구사항을 만족하는지, 실행 결과가 예상한 결과와 정확하게 맞는지를 검사
- 배포 및 유지보수
배포와 유지보수 단계는 시스템이 인수되고 설치된 후(배포) 일어나는 모든 활동을 지칭
요구사항이 변하는 것을 전재로 계획에 의존하여 형식적인 절차를 끝까지 따라야 하고 중간에 뒤로 회귀할 수 없는 전통적인 개발 프로세스보다는 훨씬 효율적으로 개발에 착수할 수 있다. 애자일 개발 프로세스를 적절히 사용하면 빠르게 문제를 해결해 하루에도 여러 번의 배포가 가능해진다.
클라우드 서비스의 한 방식, 브라우저에 접속하기만 해도 새 버전을 즉시 사용할 수 있는 서비스 방식
CI
는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)을 의미한다.
CI를 성공적으로 구현할 경우 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있다.
push
하는 단계빌드
하는 단계통합
되는지 확인
하는 과정잦은 push로 버그를 일찍 발견할 수 있고 빠른 전달로 지속적인 배포가 가능해진다.
CD
는 지속적인 서비스 제공(Continuous Delivery) 및/또는 지속적인 배포(Continuous Deployment)를 의미한다.
두 가지 의미 모두 파이프라인의 추가 단계에 대한 자동화를 뜻하지만 때로는 얼마나 많은 자동화가 이루어지고 있는지를 설명하기 위해 별도로 사용되기도 한다.
프로비저닝
을 실행하고 서비스를 사용자에게 노출합니다. 실질적인 배포 부분배포 자동화란 한 번의 클릭 혹은 명령어 입력을 통해 전체 배포 과정을 자동으로 진행하는 것을 뜻한다.
수없이 진행되는 배포 과정을 자동화시키는 방법을 구축하게 되는데, 그것을 CI/CD 파이프라인이라고 한다.
사람이 읽을 수 있는 데이터 직렬화 언어를 의미
다른 프로그래밍 언어와 함께 사용할 수도 있다. YAML은 그 유연성과 접근성으로 인해 자동화 프로세스를 생성하는 데에도 사용된다.
![]
1번에 AWS의 엑세스 키 ID를 값으로 AWS_ACCESS_KEY_ID
로,
1번에 AWS의 비밀 엑세스 키를 값으로 AWS_SECRET_ACCESS_KEY
라는 이름으로 생성한다.
Github actions AWS키 등록(공식문서)
등록한 키로 배포할 작업물에 yml파일을 작성하고,
리포지토리에 push
하면 자동으로 빌드 후 S3의 버킷으로 업로드가 된다.
-->
이렇게 자동화하기위해 yml 파일을 작성해주어야한다.
파일 위치: ./.github/workflows/client.yml
name
: 자동으로 처리할 액션의 임의의 이름
on
: 언제 이 액션이 실행될지 명시
jobs
: 구체적으로 실행할 내용
name: client
on:
push:
# 이벤트 브랜치
branches:
- reference
on
에는 git push
시 실행하도록 작성reference
각 스텝을 작성(steps 안에 실행내용)
각 실행 내용의 이름은 - name: <내용>
으로 작성
jobs:
build:
runs-on: ubuntu-20.04
steps:
- name: Checkout source code.
uses: actions/checkout@v2
- name: Install dependencies
run: npm install
working-directory: ./my-agora-states-client-react
run:
에 npm install
작성working-directory
에는 배포할 클라이언트의 디렉토리명# Build 단계
- name: Build
run: npm run build
working-directory: ./my-agora-states-client-react
npm run build
생략하고 바로 버킷으로 연결 가능
- name: SHOW AWS CLI VERSION
run: |
aws --version
엑세스 키
, 시크릿 키
가 필요하다.env
에 해당 키를 입력한다.빌드한 클라이언트를 버킷에 배포하기 위함
- name: Sync Bucket
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_EC2_METADATA_DISABLED: true
run: |
aws s3 sync \
--region ap-northeast-2 \
build s3://Bucket-name\
--delete
working-directory: ./my-agora-states-client-react
aws s3 sync \ #sync냐 cp에 따라 차이가 있다.
--region ap-northeast-2 \ #리전에 대한 부분이다. 여기선 서울이다.
build s3://fe-63-shinnh2-s3 \ # build s3://[버킷 이름]
--delete #sync, cp와 결합하여 다른 명령어를 사용한다.
❖ aws s3 sync
와 aws s3 cp
cp
: 기존에 똑같은 파일이 있더라도 모든 파일을 복사하여 업로드
sync
: 업데이트된 파일만 복사하여 업로드
여기서 --delete
를 사용하면 업로드시 삭제된 파일이 있다면, 버킷에서도 이를 적용하여 해당 파일을 삭제한다.
참고: 🔗 AWS 관련 가이드
배포 완료!