🏛️Infra/CI & CD

✅ 전체적인 흐름✅ 장점컨테이너 기반의 서버가 여러 대이더라도 쉽게 자동 배포를 구축할 수 있다.쉽게 무중단 배포를 적용시킬 수 있다.✅ 단점CodeDeploy를 사용함으로써 인프라 구조가 복잡해졌다. 구조가 복잡해짐에 따라 관리 비용, 유지보수 비용, 난이도, 트러블 슈팅 어려움, 복잡도가 증가했다.  ✅ Github Actions 코드 수정하기 .github/workflows/deploy.yml name: Deploy To EC2on: push: branches: - mainjobs: deploy: runs-on: ubuntu-latest steps: - name: Github Repository 파일 불러오기 uses: actions/checkout..
전체적인 흐름 ✅ 장점Docker 기반으로 서비스를 운영할 때, 가장 간단하게 구성할 수 있는 인프라 구조이다.✅ 단점무중단 배포를 구현하거나 여러 EC2 인스턴스에 배포를 해야 하는 상황이라면, 직접 Github Actions에 스크립트를 작성해서 구현해야 한다. 직접 구현을 해보면 알겠지만 생각보다 꽤 복잡하다.  ✅ 1. Docker 기반으로 프로젝트 수정하기Dockerfile 작성하FROM eclipse-temurin:17-jdk-alpineCOPY ./build/libs/*SNAPSHOT.jar project.jarENTRYPOINT ["java", "-jar", "project.jar"] ✅ 2. EC2가 Private ECR에 접근할 수 있게 셋팅하기# Ubuntu일 경우$ sudo apt ..
✅ 1. Ubuntu에서 Docker, Docker Compose 설치하기$ sudo apt-get update && \ sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common && \ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - && \ sudo apt-key fingerprint 0EBFCD88 && \ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" &&..
✅ 전체적인 흐름 ✅ CodeDeploy를 사용하는 이유CodeDeploy는 수많은 AWS EC2에 배포를 쉽게 할 수 있도록 도와준다.CodeDeploy에 무중단 배포 기능이 내재되어 있어 손쉽게 무중단 배포를 진행할 수 있다. ✅ 장점서버가 여러 대이더라도 쉽게 자동 배포를 구축할 수 있다.쉽게 무중단 배포를 적용시킬 수 있다.✅ 단점CodeDeploy를 사용함으로써 인프라 구조가 복잡해졌다. 구조가 복잡해짐에 따라 관리 비용, 유지보수 비용, 난이도, 트러블 슈팅 어려움, 복잡도가 증가했다.✅ 이 방법은 언제 주로 쓰는 지서버를 여러 대 이상 구동해야 하거나 무중단 배포가 중요한 서비스일 때 주로 활용한다.  1. appspec.yml, 스크립트 파일 작성하기 appspec.yml은 CodeDepl..
✅ 1. CodeDeploy 역할(Role) 생성하기 Code Deploy가 다른 AWS Resource에 접근하려면 권한이 필요하다. 그 권한을 부여해주는 기능이 IAM의 역할(Role)이다.    ✅ 2. CodeDeploy 생성하기1. CodeDeploy 애플리케이션 생성 2. CodeDeploy 배포그룹 생성  ✅ 3. EC2 역할(Role) 생성하기 EC2가 빌드된 파일을 S3로부터 다운받아야 한다. 이 때, EC2가 S3에 접근하려면 권한이 필요하다. 그 권한을 부여해주는 기능이 IAM의 역할(Role)이다.  1. 정책 생성 2. 권한 지정하기  3. 정책 세부 설정  4. 역할 생성 5. EC2에 생성한 IAM 역할 연결하기 참고)혹시나 Code Deploy Agent를 먼저 설치한 뒤에 ..
개인 프로젝트에서 많이 쓰는 CI/CD 구축 방법 (Github Actions) ✅ 전체적인 흐름 ✅ 장점git pull을 활용해서 변경된 부분의 프로젝트 코드에 대해서만 업데이트 하기 때문에 CI/CD 속도가 빠르다.대부분의 CI/CD 방식들은 전체 프로젝트를 통째로 갈아끼우는 방식을 사용한다.CI/CD 툴로 Github Actions만 사용하기 때문에 인프라 구조가 복잡하지 않고 간단하다. ✅ 단점빌드 작업을 EC2에서 직접 진행하기 때문에 운영하고 있는 서버의 성능에 영향을 미칠 수 있다. (운영하고 있는 서버에서 빌드를 하면 성능이 안좋아짐)Github 계정 정보가 해당 EC2에 저장되기 때문에 개인 프로젝트 또는 믿을만한 사람들과 같이 진행하는 토이 프로젝트에서만 사용해야 한다.  1.  Spr..
✅ 처음으로 Github Actions 작동시켜보기새로운 프로젝트 폴더 만들기.github/workflows/deploy.yml 만들기# Workflow의 이름# Workflow : 하나의 yml 파일을 하나의 Workflow라고 부른다. name: Github Actions 실행시켜보기# Event : 실행되는 시점을 설정# main이라는 브랜치에 push 될 때 아래 Workflow를 실행on: push: branches: - main# 하나의 Workflow는 1개 이상의 Job으로 구성된다. # 여러 Job은 기본적으로 병렬적으로 수행된다.jobs: # Job을 식별하기 위한 id My-Deploy-Job: # Github Actions를 실행시킬 서버 종류 선택 ..
✅ CI/CD CI/CD란 Continuous Integration, Continuous Deployment라는 의미를 가지고 있다. CI/CD는 테스트(Test), 통합(Merge), 배포(Deploy)의 과정을 자동화하는 걸 의미한다.  왜 필요한가?서비스를 운영하다보면 새로운 기능을 추가하는 일이 많아진다. 새로운 기능에 대한 코드를 작성한 뒤에 Commit을 찍는다. 그런 뒤에 브랜치에 Merge를 하고 배포를 한다. 배포를 할 때 직접 컴퓨터 서버(ex. AWS EC2)에 접속해서 새로운 코드를 다운받아 실행시켜주어야 한다.     특정 기능을 개발 완료해서 Commit을 찍으면 빌드가 되게 셋팅한다. 빌드가 완료되면 작성한 테스트 코드를 실행시킨다.(테스트 코드를 작성하지 않은 서비스에서는 이..
말동말동현
'🏛️Infra/CI & CD' 카테고리의 글 목록