도커 7주차

ggomadev·2024년 6월 3일
0

도커

목록 보기
7/9
post-thumbnail

따라하며 배우는 도커와 CI환경 수강 및 실습하면서 정리한 내용입니다.

Travis CI

Github에서 진행되는 오픈소스 프로젝트를 위한 지속적인 통합(CI: Continuous Integration) 서비스. 2011년 설립, 초창기에는 Ruby만 지원했으나 현재 대부분의 개발 언어 지원함. 해당 서비스 이용시 깃헙 레포에 있는 프로젝트를 특정 벤트에 따라 자동으로 테스트 및 빌드, 배포할 수 있다.

CI(Continuous Integration)

프로젝트가 끝날 때까지 통합이 연기될 때 발생하는 Integration Hell(저장소의 코드가 개발자의 베이스라인과 달라지는 상황)을 피하기 위해 도입되었다고 한다.

동작하는 과정
1. 개발자가 코드를 작성하고 공유 저장소(Git)에 변경사항을 커밋한다.
2. CI서버가 레포지토리를 모니터링하고 모든 변경사항을 평가한다.
3. CI는 시스템을 구축하고 통합 및 단위 테스트를 수행한다.
4. 서버가 배포 가능한 앱을 릴리즈한다.
5. CI서버는 버전 및 빌드된 코드에 빌드 태그를 할당한다.
6. CI 서버는 성공/실패 여부를 개발팀에 보고한다.

Travis CI와 Jenkins

  • Travis CI: 최초로 상용화된 CI 서비스 툴. GitHub, Bitbucket등의 클라우드 레포지토리와 쉽게 연동 가능. CI 서버가 클라우드에서 호스팅되므로 전용 서버에 따로 커스텀이 필요없는 이미 지정된 옵션들이 많음. 간단한 설정, 실행이 가능하므로 소규모 단위의 개인 프로젝트에 적합.
  • Jenkins: Sun의 프로젝트로 시작됨. 자바 기반의 도구이므로 JRE(Java Runtime Engine)만 있으면 작동 가능하다. 커스텀화된 빌드를 위한 조건을 개발자가 직접 설정가능해 팀 프로젝트나 운영하는 개인 프로젝트에 적합하다고 한다.

Travis CI 관리

.travis.yml
도커에서 docker-compose.yml에 작성한 것과 유사하게 트래비스도 설정을 travis.yml파일을 만든다

  • sudo: 관리자 권한 갖기
  • language: 언어 및 플랫폼(ex. node, python, genric...)
  • before_install: 스크립트 실행할 수 있는 환경 구성(도커 이미지 생성..)
  • script: 테스트 진행하는 상황
    --coverage: 더 자세하게 보여줌

AWS

Elastic Beanstalk

Apatche, Nginx 같은 서버에서 Java, NET, PHP, Node.js, Python, Ruby, Go, Docker와 함께 개발된 웹 응용 프로그램 및 서비스를 배포하고 확장하는 서비스. EC2 인스턴스나 데이터베이스 같이 많은 것들을 포함한 환경을 구성하며 만들고 있는 소프트웨어를 업데이트 할 때마다 자동으로 해당 환경을 관리해줌.

EC2

Elastic Compute Cloud의 약자. 하드웨어에 선투자할 필요 없이 빠르게 애플리케이션을 개발, 배포할 수 있다. 원하는 만큼의 가상 서버를 구축하고 보안 및 네트워크 구성과 스토리지 관리가 능하며, 요구사항이나 변도앗항에 신속하게 규모 확장 및 축소가 가능해 서버 트래픽 예측 필요성이 줄어든다. 쉽게 컴퓨터 한대라고 생각하면 됨.

deploy

  • provider: 외부 서비스 표시(s3, elasticbeanstalk, firebase..)
  • region: 현재 사용하고 있는 AWS의 물리적 장소
  • app: 생성한 애플리케이션 이름
  • env:
  • bucket_name: 해당 일래스틱 빈스톡을 위한 s3 버킷 이름
  • bucket_path: 애플리케이션 이름과 동일
  • on branch: 어떤 브랜치에 푸시할 때 AWS에 배포할 것인지 설정

IAM(Identity and Access Management)

AWS 리소스에 대한 엑세스를 안전하게 제어할 수 있는 웹 서비스. IAM을 사용해 리소스를 사용하도록 인증(로그인) 및 권한 부여된 대상 제어

  • Root 사용자(가입해서 사용하고 있는 AWS 계정, AWS 서비스 및 리소스에 대한 모든 접근 권한이 있음) - 보안문제로 적합하지 않음 -> IAM 유저에게 EB 사용 권한 제공
  • IAM 사용자(Root 사용자가 부여한 권한만 가지고 있음)

Travis -> github action

At Last!

실습 회고

  • typo
  1. travis에서 빌드할 때 사소하지만 결정적인 '.'을 빼먹어서 났던 빌드 오류

  2. travis에서 github action 실습할 때 실제 비번을 잘못 알고 있어서 로그인 오류 난것도 있었지만, 수정 이후에도 계속 오류가 나서 몇분간 파일 보다가 deploy.yaml에서 환경변수 입력할 때DOCKER_USERNAME, DOCKER_SECRET_KEY 앞에서 $을 빼먹은 것을 발견

  • aws elastic beanstalk 이용시 ec2 인스턴스 먼저 생성하기
    액세스 키, 시크릿키 및 정책 생성 필요(없으면 배포 오류 뜸)
    처음에 배포 오류 떴을 때 원인을 찾는게 어려웠는데, 구글링 해보니 인스턴스 생성을 해서 생성한 키 페어랑 IAM 인스턴스 프로파일을 입력해야 한다고 했음(실제로로 그랬다)
  • aws 공부하기📝

0개의 댓글