사진과 음악을 좋아하는 개발자 지망생의 블로그

[클라우드] 6. CI / CD 본문

개발/클라우드(with amazon)

[클라우드] 6. CI / CD

devculture309 2023. 5. 17. 17:40
반응형

CI / CD

1) CI? CD?

  - CI (Continuous Integration, 지속적 통합)

    → 모든 개발자가 개발한 코드를 공유 리포지토리에 하루에도 여러번 코드를 커밋하고 병합하는 것

  - CD (Continuous Delivery, 지속적 전달)

    → 개발팀이 짧은 주기로 소프트웨어를 개발하고 언제든지 운영환경으로 안정적으로 배포하는 것

 

 

2) CodeCommit

  - Amazon Web Services 호스팅되는 버전 관리 서비스

  - 클라우드에서 자산 (예: 문서, 소스 코드, 바이너리 파일)을 비공개로 저장하여 관리하는 데 사용할 수 있도록 함

 

 

3) Code Commit 특징

  ① Benefit from a fully managed service hosted by AWS

    - AWS CodeCommit은 AWS에서 완전히 관리되는 서비스로 제공됨

    - 이는 AWS가 서버 인프라, 확장성, 백업 및 유지 관리에 대한 책임을 가지고 있다는 것을 의미

    - 사용자는 코드 저장소를 관리하고 프로젝트를 개발하는 데 집중할 수 있음

 

  ② Store your code securely

    - AWS CodeCommit은 코드를 안전하게 저장할 수 있는 환경을 제공함

    - AWS의 안정성 및 보안 모범 사례에 따라 저장되며, 데이터 보호 및 액세스 제어를 위한 다양한 보안 기능을 제공

 

  ③ Work collaboratively on code

    - CodeCommit은 팀 내에서 협업적으로 코드를 작업할 수 있는 기능을 제공함

    - 여러 사용자가 동시에 작업하고 코드 변경 사항을 추적하며, 충돌을 방지하고 병합하는 기능을 제공하여 

      팀의 개발 프로세스를 원활하게 관리할 수 있음

 

  ④ Easily scale your version control projects

    - CodeCommit은 버전 관리 프로젝트를 쉽게 확장할 수 있도록 설계됨

    - 코드 저장소를 필요에 따라 확장하고, 대용량의 코드베이스를 처리하며, 여러 팀과 프로젝트를 효과적으로 관리 가능

 

  ⑤ Store anything, anytime

    - CodeCommit은 코드 뿐만 아니라 모든 종류의 파일과 리소스를 저장할 수 있는 유연성을 제공

    - 프로젝트 문서, 구성 파일, 이미지 등 다양한 유형의 파일을 저장하고 관리가 가능함

 

  ⑥ ntegrate with other AWS and third-party services

    - CodeCommit은 다른 AWS 서비스 및 제3자 도구와의 강력한 통합 기능을 제공함

    - AWS 서비스와의 통합을 통해 개발 프로세스를 자동화하고, 지속적 통합/지속적 전달 파이프라인을 구축하고,

    테스트 및 배포 프로세스를 개선이 가능함

 

  ⑦ Easily migrate files from other remote repositories

    - CodeCommit은 다른 원격 저장소에서 파일을 쉽게 마이그레이션할 수 있는 기능을 제공

    - 기존의 원격 저장소(예: Git, Subversion)에서 CodeCommit으로 코드와 버전 이력을 원활하게 이전할 수 있음

 

  ⑧ Use the Git tools you already know

    - CodeCommit은 이미 익숙한 Git 도구를 사용하여 코드 저장소를 관리가 가능함

    - Git 클라이언트 및 명령줄 도구와 호환되므로 사용자는 이미 알고 있는 Git 워크플로우를 그대로 유지하면서

      CodeCommit을 사용할 수 있음

 

4) CodeBuild

  - AWS CodeBuild는 AWS가 CodeBuild 서비스의 배포, 운영, 확장 등을 모두 관리하는 완전관리형 빌드 서비스

  - CodeBuild는 빌드 작업의 규모를 쉽게 확장할 수 있으며,  필요에 따라 빌드 리소스를 자동으로 조정하여

    대규모 빌드 작업을 처리할 수 있음

  - Java, Python, Node.js, Ruby, Go 등과 같은 다양한 언어와 AWS 서비스, Docker 등을 통한 컨테이너 기반 빌드를 지원

  - 빌드 작업은 격리된 환경에서 실행되며, AWS Identity and Access Management (IAM)을 사용하여

    액세스 제어를 관리할 수 있음

  - 사용자가 필요에 맞게 빌드 환경을 사용자 정의할 수 있다. 사용자 지정 빌드 스크립트를 작성하고,

    필요한 의존성 패키지를 설치하고, 테스트 및 빌드 단계를 구성할 수 있다.

 

 

5) CodeDeploy

  - Amazon EC2 인스턴스, 온프레미스 인스턴스, 서버리스 Lambda 함수 또는 Amazon ECS 서비스로

   애플리케이션 배포를 자동화하는 배포 서비스

  - 다음을 포함하여 다양한 애플리케이션 콘텐츠를 거의 무제한으로 배포가능.

    → 코드, 서버리스 AWS Lambda 함수, 웹 및 구성 파일, Executables, 패키지, 스크립트, 멀티미디어 파일

  - CodeDeploy는 서버에서 실행되고 Amazon S3 버킷, GitHub 리포지토리 또는 Bitbucket 리포지토리에

    저장되는 애플리케이션 콘텐츠들 배포가능

  - 또한, CodeDeploy는 서버리스 Lambda 함수 배포 가능

  - CodeDeploy를 사용하기 위해 기존 코드를 변경할 필요가 없음.

 

 

6) CodePipeline

  - 애플리케이션 및 인프라 업데이트를 안전하고 빠르게 진행하기 위한 릴리스 파이프라인을 자동화하는 데

    도움을 주는 완전관리형의 지속적 전달 서비스

  - 특징

    ① 소프트웨어 릴리스 프로세스를 모델링하고, 서버를 설정하거나 프로비저닝할 필요성을 줄일 수 있음

    ② AWS Management Console 또는 AWS command line interface(CLI)를 사용하여 소프트웨어 릴리스 프로세스 단계를

        정의할 수 있음

    ③ 피드백을 반복하고 각 코드 변경을 테스트하여 버그를 포착하는 새로운 기능을 신속하게 릴리스할 수 있음

    ④ 릴리스 프로세스의 모든 단계에서 자체 플러그 또는 사전 구축된 플러그인을 사용하여 필요에 맞추어 조정할 수 있음

 

 

 

반응형