CI/CD

.·2021년 10월 13일
0

목차
1. DevOps 엔지니어
2. CI/CD란
3. AWS에서 CI/CD를 위해 지원하는 서비스

DevOps 엔지니어

https://blog.kakaocdn.net/dn/bZsjvl/btq2idclBEz/Uw1Jb4J3CKSoQNAB4w9mEK/img.png

  • Development(개발) + Operations(운영)
  • 지속적 전달 + 지속적 통합 워크플로우
  • 서비스 모니터링, 최적화, 배포 등 서비스의 운영을 책임지는 팀
  • 백엔드 팀이 담당하기도 함

최근 채용 공고

[NAVER Cloud] 클라우드 개발자 도구 서비스 개발

우아한형제들(배달의민족) DevOps 엔지니어 채용

필요한 스킬

  • 기초 : 리눅스 관리, 파이썬, AWS 또는 다른 클라우드 플랫폼
  • 구성 : 테라폼(Terraform) 또는 앤서블(Ansible)
  • 버전 관리 : 깃(Git)과 깃허브(GitHub)
  • 패키징 : 도커(Docker)
  • 배포 : 젠킨스(Jenkins)
  • 실행 : 아마존 ECS와 쿠버네티스
  • 모니터링 : ELK 스택

담당 역할 / 업무

  • 서버 측 기능에 대한 사양 및 문서 작성
  • CI/CD 관리
  • CI/CD 스크립트 작성
  • 성능 평가 및 모니터링
  • IT 인프라 유지보수 및 관리(하드웨어, 소프트웨어, 네트워크, 스토리지, 가상 및 원격 자산, 클라우드 데이터 스토리지 포괄)

CI/CD란?

  • Continuous Integration: 지속적 통합
  • Continuous Delivery/Continuous Deployment: 지속적 제공/지속적 배포

CI/CD(지속적 통합/지속적 제공): 개념, 방법, 장점, 구현 과정

CI/CD는 애플리케이션 개발 단계를 자동화하여 애플리케이션을 보다 짧은 주기로 고객에게 제공하는 방법입니다. CI/CD의 기본 개념은 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포입니다

CI/CD 파이프라인

https://www.redhat.com/cms/managed-files/ci-cd-flow-desktop_edited.png

https://blog.kakaocdn.net/dn/eghP72/btqI58hOBST/1bFoBMWZAR6LW1h8zEfCA0/img.jpg

Continuous Integration 지속적 통합

  • 정기적인 빌드 자동화, 유닛 및 통합 테스트를 거쳐 레포지토리에 머지까지 되는 프로세스
  • 지속적으로 코드 통합을 하며 품질을 유지함
  • 기존 코드와 변경 사항과 충돌이 발견되면 버그를 빠르게 해결 가능

Continuous Delivery 지속적 서비스 제공

  • 유효한 코드를 레포지토리에 자동 릴리즈하는 프로세스
  • 목적: 프로덕션 환경으로 배포할 준비가 되어있는 코드 베이스 확보

Continuous Deployment 지속적 배포

  • 애플리케이션을 프로덕션으로 릴리스하는 작업을 자동화하는 프로세스
  • 개발자가 애플리케이션에 변경 사항을 작성한 후 몇 분 이내에 애플리케이션을 자동으로 실행할 수 있는 것
  • 개발과 운영의 애자일 방식 협력
  • 애플리케이션의 라이프사이클 전체에 걸친 지속적인 자동화, 모니터링 제공
  • 짧은 주기로 세분화해서 변경 사항을 릴리스해라!

CI/CD 제공 툴

  • Jenkins
    • 장점
      1. 무료이고 Reference 및 사용자가 많고 정보가 많은 편이다.
      2. Hudson core 개발자가 jenkins 를 시작했고 주요 플러그인 개발자도 jenkins 로 전환해서 개발 속도가 빠르고 플러그인 지원이 좋은 편이다.
      3. 설치 및 사용이 간단하다. 실제로 maven 으로 build 가 구성되어 있다면 jenkins 설치후 project 만드는데 얼마 안 걸린다.
      4. Remote Access API 를 제공하므로 다른 솔루션에서 연계하여 기능 확장이 가능하다.
    • 단점
      1. 프로젝트 별 보안 및 권한 설정등이 불편하다. (bamboo 에 비해)
      2. JIRA나 redmine 등 Issue tracking 과 연계가 불편하거나 완벽하지 않다.
  • Bamboo
    • 장점
      1. 손쉽고 직관적인 UI를 갖고 있고 상용 SW 에 걸맞게 예쁜 외양을 자랑한다.
      2. atlassian 제품군과 완벽한 통합 제공. JIRA 의 대쉬보드나 confluence의 Page에 bamboo build chart 를 붙일수도 있고 JIRA 의 특정 이슈와 관련된 build 내역을 조회하는 등 atlassian 제품을 기존에 사용하고 있다면 각 제품군을 통합해서 더욱 유기적으로 사용할 수 있다.
      3. MS의 Visual Studio, Mac OSX 의 XCode 등 Java 이외의 개발 환경을 지원한다. ( Visual Studio 지원은 아직 그리 잘 돌아가지 않고 복잡해서 시행착오를 좀 거쳐야 하고 써본 경험상 bamboo 에 붙이는건 그리 추천하지 않는다.)
      4. Jenkins 에 비해 프로젝트 권한 설정이나 분산 빌드가 아주 간편하다.
      5. Remote Access API 를 제공하므로 다른 솔루션에서 연계하여 기능 확장이 가능하다.
    • 단점
      1. 제법 비싼 비용이 발생한다. (build 를 할수 있는 remote agent 수 따라 라이센스 비용이 책정되는데 5 remote agent 가 $2,200 이다. 1년후마다 매년 구입가의 50% subscription 비용 추가 발생.)
      2. Project, Plan, Stage, Task 의 개념이 복잡해서 익숙해지고 제대로 쓰려면 약간의 시간이 필요하다.

AWS에서 CI/CD를 위해 지원하는 서비스

Code Commit

AWS CodeCommit란 무엇입니까?

AWS CodeCommit는 Amazon Web Services 에서 호스팅하는 버전 관리 서비스로서 자산 (예: 문서, 소스 코드, 바이너리 파일) 을 클라우드에서 비공개로 저장하여 관리할 수 있습니다.

Code Build

AWS CodeBuild란 무엇입니까?

AWS CodeBuild은 클라우드상의 종합 관리형 빌드 서비스입니다. CodeBuild 는 소스 코드를 컴파일하고 단위 테스트를 실행하며 배포할 준비가 완료된 아티팩트를 생성합니다.

Code Deploy

CodeDeploy 란 무엇입니까?

CodeDeploy 는 Amazon EC2 인스턴스, 온프레미스 인스턴스, 서버리스 Lambda 함수 또는 Amazon ECS 서비스로 애플리케이션 배포를 자동화하는 배포 서비스입니다.

Code Pipeline

AWS CodePipeline란 무엇입니까?

AWS CodePipeline은 소프트웨어 릴리스를 구성하는 필요한 단계들을 모델링, 시각화 및 자동화하는 데 사용할 수 있는 지속적 전달 서비스입니다. CodePipeline 은 소프트웨어 변경 내용을 지속적으로 릴리스하는 데 필요한 단계를 자동화합니다.


출처

0개의 댓글