Carnival7
Change Developer
Carnival7
전체 방문자
오늘
어제
  • 분류 전체보기
    • 자바의 정석
    • 프로그래밍 언어별 tools
      • 파이썬
      • 자바
    • 코딩 테스트
      • 백준 강의 기초편
      • 백준 강의 연습편
      • 백준 강의 문제편
      • 삼성 기출
      • 백준 - 일반
      • 카카오 기출
      • 프로그래머스 - 일반
      • 코테 풀이 Tools
    • CS
      • Network
      • 운영체제
      • 알고리즘
      • DB
    • Web_Backend
      • Spring
      • 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
      • 스프링 핵심 원리 - 기본편
    • DevOps
    • IT 업무 지식
      • 인프라
      • 클라우드
    • 자격증
      • AWS - CLF
      • 정처기 - 실기
    • 생각 정리

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 슬라이딩 윈도우 #덱
  • 프로그래머스 #카카오기출 #레벨2
  • ci/cd
  • code deploy
  • 슬라이딩 윈도우
  • nginx
  • 삼성기출 #백준강의문제편
  • 삼성기출 #2023 #상반기
  • 알고리즘 #백준강의기초편 #코딩테스트
  • DevOps
  • 스프링 #인터셉터 #AOP #필터
  • DMZ
  • 스프링 #AOP
  • 스프링 부트 무중단 웹 서비스
  • 코딩테스트 #삼성기출 #구현 #시뮬레이션
  • Github Actions

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Carnival7

Change Developer

스프링부트와 AWS로 혼자 구현하는 웹 서비스 - CI/CD
카테고리 없음

스프링부트와 AWS로 혼자 구현하는 웹 서비스 - CI/CD

2021. 9. 2. 15:49

출처 : https://moonsbeen.tistory.com/102

 

스프링부트와 AWS로 혼자 구현하는 웹 서비스 - CI/CD

스프링부트와 AWS로 혼자 구현하는 웹 서비스 - CI/CD CI (Continuous Integration) CI란? 코드 버전 관리를 하는 VCS시스템(Git, SVN등)에 PUSH가 되면 자동으로 테스트와 빌드가 실행되어 안정적인 배포 파일을

moonsbeen.tistory.com

스프링부트와 AWS로 혼자 구현하는 웹 서비스 - CI/CD


CI (Continuous Integration)

CI란?

  • 코드 버전 관리를 하는 VCS시스템(Git, SVN등)에 PUSH가 되면 자동으로 테스트와 빌드가 실행되어 안정적인 배포 파일을 만드는 과정을 말한다.
  • CI 도구의 종류
    • Travis CI: 깃허브에서 제공하는 무료 CI 도구이다.
    • Jenkins: 설치형 무료 CI 도구이다. 설치형이기 때문에 이를 위한 AWS EC2인스턴스가 하나 더 필요하다.
    • CodeBuild:  AWS에서 제공하는 CI 도구이다. 빌드 시간 만큼 요금이 부과된다.

 

Travis CI란?

  • 깃허브 계정으로 로그인 한 후 레포지토리를 연결시켜 사용한다.
  • 프로젝트를 수정한 후 커밋과 푸시를 진행하고 Travis CI 저장소 페이지를 보면 결과를 확인할 수 있다.

 

Travis CI와 AWS S3연동

  • S3는 AWS에서 제공하는 일종의 파일 서버이다. 정적 파일들이나 배포 파일들을 관리하는 기능을 지원한다.
  • Travis CI가 빌드한 결과를 연동한 S3가 받아서 보관한다.
  • 실제 배포는 AWS의 CodeDeploy라는 서비스를 이용한다.
  • 이때 일반적인 AWS서비스에 외부 서비스가 접근할 수 없으므로 AWS의 IAM서비스를 사용하여 접근 권한을 가진 Key를 생성하고 이를 통해 Travis CI가 AWS의 S3, CodeDeploy에 접근할 수 있도록 해야한다.
  • CodeDeploy의 오류 확인 방법은 EC2에 접속 후 /var/log/aws/codedeploy-agent에서 로그를 확인할 수 있다.

 

CD (Continuous Deployment)

CD란?

  • 빌드 결과를 자동으로 운영 서버에 무중단 배포까지 진행되는 과정을 말한다.
  • 새로운 Jar가 실행되기 전까지 기존 Jar를 종료시켜 놓기 때문에 배포하는 동안 어플리케이션이 종료되는 문제점을 해결할 수 있다.

 

엔진엑스

  • 무료이면서 훌륭한 성능을 보여준다.
  • 리버스 프록시: 엔직엑스가 외부의 요청을 받아 백엔드 서버로 요청을 전달한다. 이 기능을 사용해 무중단 배포 환경을 구축한다.
  • 하나의 EC2서버에 엔진엑스 1대와 스프링 부트 Jar 2대를 사용한다.
  • EC2서버에 엔진엑스를 설치하고 스프링 부트 프로젝트와 연동해 주면 된다.

 

CI/CD가 필요한 이유

  • 하나의 프로젝트를 여러 개발자가 함께 개발을 진행하며 각자가 개발한 코드를 합치는 일이 필요한데, 생산성을 높이기 위해 지속적으로 코드가 통합되는 환경이 필요하다.
  • 개발자들이 개발에만 집중할 수 있도록 한다.
  • 서버 또한 수십 수백대의 서버에 배포를 해야하거나 긴박하게 배포가 이뤄져야 하는 상황에서는 자동화를 통해 생산성을 높여야 한다.

 

모든 연동이 끝난 후 전체 구조의 모습

 

    Carnival7
    Carnival7

    티스토리툴바