토이프로젝트/CICD 도입기 7

프로젝트 CI/CD 도입기 -7 (CodeDeploy 설정하기-2)

저번에 대략적인 CodeDeploy 설정은 진행하였고, 이제 배포 대상의 EC2 서버에 Agent 설치 및프로젝트 내에 실제 배포를 진행할 Script를 작성할 예정입니다.  1. Agent 설치- 설치 대상 EC2 접속sudo yum update -ysudo yum install -y rubyAWS_REGION=ap-northeast-2 ## 서울 리전일 경우wget https://aws-codedeploy-${AWS_REGION}.s3.${AWS_REGION}.amazonaws.com/latest/installchmod +x ./installsudo ./install auto - 설치 확인sudo service codedeploy-agent status  2. CodeDeploy 설정 스크립트 작성-..

프로젝트 CI/CD 도입기 -6 (CodeDeploy 설정하기-1)

저번 포스트에 Github action을 통해 Git에 push 하면 S3에 프로젝트 파일 업로드 하는 부분까지 진행하였다.이번엔 S3에 파일 업로드 시, EC2에 우리 애플리케이션을 build, deploy 하는 과정을 진행하고자 한다. 이 부분까지 적용되면, 기본 CI/CD 파이프라인 동작은 얼추 완료되고, 그 외 Test 케이스들이나, 서버 분기, 로깅나 실패 시 재시도 등살을 붙이며 안정적인 파이프라인을 꾸며가면 된다. 1. CodeDeploy 애플리케이션 생성1.1 상단 검색하여 CodeDeploy 서비스 들어온 후 , 애플리케이션 생성   1.2 애플리케이션 이름 및 대상 서비스(EC2) 지정 1.3 IAM 역할 생성- CodeDeploy 가 실행하는 DeployGroup에 대해 실행 권한을 ..

프로젝트 CI/CD 도입기 -5 (Github action으로 s3에 업로드)

action 만들기 1. Actions 탭 -> 좌측 New workflow  2. simple workflow  3. workflow 코드 작성- 아래 코드 중 버킷 URL ,region 등은 개인에 맞게 변경해야합니다.- dev 와 main 에 push 이벤트가 발생하면 브랜치에 맞게 s3에 업로드 합니다.* 추후 CodeDeploy 에서 배포를 하기 위하여 S3엔 압축파일로 업로드*name: Deploy to S3on: push: branches: - dev - mainjobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v2..

프로젝트 CI/CD 도입기 -4 (EC2에 개발환경 설정,docker, git, compose)

오늘은 기존 프로젝트를 EC2 위에서 실행하며, 테스트 하는 정도만 진행하겠다.EC2 인스턴스 생성 및 네트워크 설정 하는 부분은 생략! 도커 설치# 도커 설치sudo yum install docker -y# 도커 버전 확인docker -v# sudo 없이 실행 하도록 sudo usermod -aG docker ec2-user# 서비스 등록/실행sudo service docker status    git 설치sudo yum install git -y  도커 컴포즈 설치아래 2.29.7 부분은 각자 원하는 버전에 맞춰 설치하면 됩니다.  - 버전 확인 https://github.com/docker/compose/releases- docs https://docs.docker.com/compose/instal..

프로젝트 CI/CD 도입기 -3 (컨테이너화)

Node JS, React 를 각각 컨테이너화 할 예정이다.운영은 별개 서버에서 각 서비스가 운용되겠지만, 현재는 개발/테스트 중임으로 Docker Compose 를 사용하였다. 각 코드의 설명은 주석을 통해 기입하였다. 그리고 현재 개발 중인 코드는 backend 호출 url 을 env 를 통해 관리하고 있어, 그 부분이 설정 코드에 들어가 있으니유의하여 참고하면 될 것 같다. 작업 순서1. 백앤드 도커 구성2. 프론트앤드 도커 구성3. 도커 컴포즈 구성  * 도커 설치 과정은 생략1. 백앤드 도커 구성 backend/DockerfileFROM node:18WORKDIR /appCOPY package*.json ./RUN npm installCOPY . .# 환경변수를 고려한 실행 명령어 설정CMD [..

프로젝트 CI/CD 도입기 -2 (환경 설정 분리)

CI/CD 를 도입 전 필수적인게 CI 간 테스트 코드 작성, 뭐 프로세스 정립 등 많지만,,,아주 기초적이자 중요한건 수행되는 환경에 따른 실행 조건 분기 라고 생각한다.  우선 대표적인 환경 설정 방법은 아래 표와 같다.  일전에 Airflow 를 통한 파이프라인 관리했을땐, config 용 Git repo 를 따서 Sub repo 로 등록하여 사용하거나,FastApi 로 개발할땐 파이썬의 dataclass를 유용하게 사용했다.뭐 어떤 기술을 사용하든, 내부 동작은 보통 json 이나 환경변수로 동작하는 구조인데, 이번엔 env 를 선택헀다. 선택 근거1. Node 에서 dotenv 핵 쉬움,,,2. React 에선 CRA에서 .env 기본 지원(.env 파일 안 환경변수 Key 앞에 REACT_AP..

프로젝트 CI/CD 도입기 -1

개발 중인 React , Express 프로젝트에 CI/CD를 도입하려 한다.현재 Github action + Jira 조합으로 사용 중인 업무 프로세스도 있고, 이전 Gitlab CI/CD를 사용하여 DevOps를 구축한 경험이 있어, Github action을 기반으로 구축하려 결정했다. 아래는 고려 중인 프로세스를 정리한 표이다. github Action을 어떤 역할까지 사용할지, AWS 서비스들을 어디까지 활용할지가 결정해야 할 Key point였다.난 3. Github Action -> s3 -> ec2 Docker build&push를 선택했다 선택한 근거 1.  비용- 당장 서비스가 오픈되지 않고, 유저 수가 적기 때문에 AWS ECS 나 ECR을 바로 도입 부담이 되었다. 2. 컨테이너화-..