[AWS] DevOps

BBeumSeok·2024년 8월 20일
0

aws

목록 보기
4/4
post-thumbnail

AWS DevOps

https://aws.amazon.com/ko/devops/what-is-devops/

1. DevOps 방식

1-1. 지속적 통합(CI; Continuous Integration)

  • 빌드 및 테스트가 완료된 코드들을 중앙 레포지토리에 정기적으로
    병합하는 소프트웨어 개발 방식

  • 개발 및 테스트 ~ 통합

1-2. 지속적 전달(CD; Continuous Dilivery OR COntinuous Deploy)

  • 프로덕션에 릴리즈(배포)하기 위한 코드 변경이 자동으로 빌드, 테스트 및
    준비되는 소프트웨어 개발 방식

  • 프로덕션 ~ 배포

1-3. 마이크로 서비스

1-4. 코드형 인프라

1-5. 모니터링 및 로깅

1-6. 커뮤니케이션 및 협업

DevOps를 사용하는 이유는?

CI/CD on AWS Workshop(Code Pipeline)

https://catalog.workshops.aws/cicdonaws/ko-KR

  1. 구조

Source -> Build & Test -> Deploy

  • Source(AWS Code Commit)

  • Build(AWS Code Build)

  • Test(AWS Code Build & third party)

  • Deploy(AWS Code Deploy)

  1. 지속적 통합 과정


  • 지속적인 통합을 통해 개발자는 Git과 같은 버전 관리 시스템을 사용하여 공유 저장소에 커밋.

  • 각 커밋 전 개발자는 통합 전에 추가 검증 단계로 로컬 단위 테스트를 실행할 수 있다.

  • 지속적 통합 서비스는 새 코드 변경사항을 자동으로 빌드하고, 단위 테스트를 실행하여
    오류를 빠르게 발견한다.

  • 지속적 통합은 소프트웨어 릴리스 프로세스의 빌드 및 단위 테스트 단계를 나타낸다.

  • 커밋된 모든 리비전은 자동화된 빌드 및 테스트를 실행

  • 지속적 전달을 통해 코드 변경 사항은 자동으로 빌드, 테스트 및 프로덕션 릴리스를 위해
    준비된다.

  • 빌드 단계 이후에 테스트 환경 또는 프로덕션 환경에 모든 코드 변경사항을 배포함으로써
    지속적인 통합을 확장한다.

  1. 지속적 전달 과정



  • 지속적 배포를 통해 개발자는 단순한 단위 테스트 이상의 테스트를 자동화할 수 있으므로
    고객에게 배포하기 전에 여러 차원에서 애플리케이션 업데이트를 확인할 수 있다.

  • 테스트의 종류에는 UI 테스트, 부하 테스트, 통합 테스트, API 안정성 테스트 등이 있다.

  • 다양한 테스트를 통해 개발자는 업데이트를 보다 철저하게 검증하고 문제를 사전에 발견할 수
    있다.

  • 클라우드를 사용하면 이전에는 온프레미스에서 수행하기 어려웠던 테스트를 위해 여러 환경의
    생성 및 복제를 쉽고 비용 효율적으로 자동화할 수 있다.

온프레미스(On-Premis)
기업의 서버를 클라우드와 같은 원격 환경에서 운영하는 방식이 아닌, 자체적으로
보유한 서버에 직접 설치해 운영하는 방식을 의미한다.

CI/CD Test

  1. 예제 프로젝트 backend-test-cicd-main 압축 풀기
  • unzip backend-test-cicd-main.zip


  1. 압축 해제된 프로젝트 확인
  1. Virtual Box 포트포워딩 tomcat port:5000으로 변경


  2. backend-test-cicd-main 접근해서 빌드

  • sh ./gradlew build


  • java -jar ./build/libs/codepipeline-0.0.1-SNAPSHOT.jar


  1. 접속 확인


  2. 깃허브 연동하기

  • github.com 접속하여 backend-cicd Repository 생성


  1. 프로젝트 터미널에서 연동 명령어
- echo "# backend-cicd" >> README.md

- git init

- git branch -M main

- git remote add origin [Repository URL]

- git add -A & git add .

- git commit -m "Commit Message"

- git push -u origin main



AWS Code Pipeline

  1. AWS -> Code Pipeline으로 이동



  1. 파이프라인 생성 클릭



3-1. 1단계 - 파이프라인 기본 설정 추가



3-2. 변수 설정 & 고급 설정

  • 기본값이 없을 경우 첫 번째 파이프라인 실행이 실패

  • 아티팩트 스토어
    기본 위치 또는 사용자 지정 위치를 설정하여 S3를 생성하거나 위치를 선택

  • 암호화 키
    기본 AWS 관리형 키 or 고객 관리형 키



4. Source 설정

  • Git 또는 Source Stage라고 하는 중앙(통합) 레파지토리를 추가

  • 소스 공급자 설정(예제의 경우 GitHub ver2)
    GitHub ver1과 ver2 차이점 : 깃허브 앱 사용 여부(ver1의 경우 ID, PW만 입력)



  • GitHub 연결
    만들고자 하는 연결명 설정 후 깃허브에 연결

- All Repository
현재 파이프라인으로 내 깃허브 모든 레파지토리 연결

- Only Select Repository
특정 레파지토리만 연결
=> 나중에 수정하여 추가가 가능하다.

- 출력 아티팩트 형식
CodePipeline 기본 값 : zip 형태 사용

- 전체 복제
GitHub에 대한 메타데이터 전달(CodeBuild 시 사용이 가능)

트리거(Trigger)

소스 코드에 어떤 변화가 있을 경우에 동작을 위한 설정

  • 트리거 유형
    필터 없음 : 모든 푸시에 파이프라인 시작
    (푸시가 있으면 무조건 자동화 동작 시작)

  1. 필터 없음

  2. 필터 지정
    특정 필터에 대해서만 파이프라인 시작(Commit Copy)

  3. 변경 사항 감지 안함
    파이프라인을 자동으로 트리거 하지 않음(수동으로 실행)



5. 빌드 스테이지 추가

빌드 공급자 선택



AWS Codebuild
Jenkins 추가 : Jenkins Server 지정

환경

  1. 관리형 이미지(AWS CodeBuild 이미지 사용)

  • 운영체제
    Amazon Linux
    Ubuntu

  • 런타임
    Standard

  • 이미지 및 이미지 버전

  • 서비스 역할(새 서비스, 기존 서비스)
    만들기가 매우 귀찮음

  1. 사용자 지정 이미지(도커 이미지 지정)
  • 환경 유형

  • Buildspec
    1). 빌드 명령 삽입
    편집기에 직접 명령어를 삽입하여 실행시킬 수 있다.

version: 0.2

phases:
  install:
    runtime-versions:
      java: corretto17
      # name: version
  build:
    commands:
      - chmod 755 ./gradlew
      - ./gradlew build
      - mv build/libs/*.jar app.jar
      
artifacts:
  files:
    - app.jar

2). buildspec 파일 사용

3). 배치 구성


4). 로그

6. 배포 스테이지 추가

  1. 배포 공급자
    AWS Elastic beanstalk

  2. 리전
    아시아 태평양(서울)

  3. 애플리케이션 이름

  4. 환경 이름

7. 검토 후 파이프라인 생성 클릭

  • 검토




  1. 파이프라인이 생성되면 Source -> Build -> Deploy 순서로 진행되면서
    성공 여부를 확인

  • Source


  • Build


  • Deploy


  • 파이프라인 생성 성공

  1. 8번까지 완료됐으면 Elastic beanstalk로 들어가서 도메인으로 접속 후
    정상적으로 동작하는지 확인(배포 시에는 포트 번호를 변경하면 안됨 !!)

소스 - 빌드 - 배포 테스트

  1. 프로젝트 내용 수정
    (예제의 경우 Hello Controller 수정)




  1. git commit & push



  1. Code Pipeline 자동화 진행 상태 확인
  • 자동화 진행 중


  • 자동화 성공


  1. 진행 상태가 완료되면 해당 로컬로 재접속하여 확인



파이프라인 편집

  1. 좌측 상단 편집하기 클릭



  2. 파이프라인 속성 수정


  3. 변수 설정 수정



  4. 트리거 수정



  5. Source 수정



  6. Build 수정



  7. Deploy 수정



  8. 편집 완료 시 변경사항 릴리즈



profile
Do your best every moment

0개의 댓글