CI/CD

급변하는 현대 사회에서는 고객의 니즈 역시 빠르게 변화합니다. 고객의 니즈를 충족시키기 위해서 애플리케이션의 변화 속도 또한 이에 발맞춰야 할 것입니다. 성공적인 비즈니스를 위해서는 고객의 요구 충족과 이로 인한 만족도 향상이 필수적입니다. 우리는 빠른 속도로 소프트웨어를 개선하고 배포하여 성공적인 비즈니스 성과를 기대할 수 있고, 시장 변화에 대한 민첩한 대응과 혁신적인 서비스 제공으로 더 나은 비즈니스 가치를 창출할 수 있습니다.  수동적으로 코드 업데이트와 개발, 테스트, 배포하는 고전적인 배포 방식에서는 신속히 새로운 기능을 추가하거나 버그를 수정하는 데에 어려움이 있습니다. 주기적인 업데이트 또한 어려우며 오류 발생 가능성이 높아집니다.


지속적 통합 · 지속적 전달 · 지속적 배포

AWS CodePipeline으로 지속적 통합(Continuous Integration), 지속적 전달 (Continuous Delivery), 지속적 배포(Continuous Deployment)를 통해 코드의 변경내용을 자동적으로 빌드, 테스트, 배포준비를 완료 함으로써 신속하고 안정적인 배포 애플리케이션 업데이트를 구현할 수 있습니다.




지속적 통합 Continuous Integration

지속적 통합이란 애플리케이션 개발을 위한 자동화 프로세스로 코드의 변경사항을 정기적으로 빌드 및 테스트(단위 테스트 및 통합 테스트)하여 공유 리포지토리에 통합하는 것을 말합니다. 이를 통해 여러 명의 개발자가 동시에 코드 작업을 하더라도 원활히 진행할 수 있습니다.



지속적 전달 Continuous Delivery

지속적 전달이란 개발자들이 애플리케이션에 적용한 변경 사항이 지속적 통합을 통해서 공유 리포지토리에 통합된 후, 애플리케이션의 유효성 테스트(버그 테스트, UI/UX 테스트, UAT 테스트)등을 거쳐서 배포 가능한 애플리케이션 Artifacts를 생성하고 배포할 준비가 완료된 코드베이스를 확보하는 것입니다.



지속적 배포 Continuous Deployment

지속적 배포란 CI/CD 파이프라인의 마지막 단계로 지속적 전달에서 확장된 개념입니다. 이 단계에서 지속적 전달 단계를 거친 변경 사항을 자동으로 운영 환경에 배포합니다. 지속적 통합에서 지속적 배포까지의 모든 프로세스가 정의되고 파이프라인이 구축될 경우에는 개발자가 적용한 애플리케이션의 변경 사항을 짧게는 수 분 안으로 운영환경에 반영할수 있습니다.



CI/CD 파이프라인 구축을 통해 신속히 애플리케이션 변경 사항을 반영할 수 있다면 사용자의 피드백 시간 역시 단축될 것입니다. 이를 바탕으로 새로운 기능을 개발할 수 있고, 나아가 Software Development Life Cycle의 선순환 효과도 기대할수 있습니다. 더 빠르게 빌드하고, 테스트하기 위해서는 확장 가능한 빌드 및 테스트 시스템 구성이 필수적입니다. 실시간으로 발생하는 수십개의 빌드 및 테스트를 고정된 개수의 서버로 고전적인 Queue 방식으로 처리한다면 CI/CD의 장점을 극대화 할 수 없습니다.



DevOps 애플리케이션 생애주기 관리



AWS CodeBuild

AWS
CodeBuild
    AWS CodeBuild는 완전관리형 Continous Integration 서비스로서 소스코드를 빌드하고, 테스트를 실행하고, 배포 가능한 Artifacts을 생성할 수 있는 빌드 시스템을 쉽고 빠르게 구성합니다.  실행하는 데 걸리는 시간에 따라 과금이 되는 Pay-As-You-Go 방식으로 필요할 때만 사용하고, 사용한 만큼만 요금을 지불하면 됩니다.


AWS CodeBuild는 지속적으로 확장하면서 다수의 작업을 동시에 처리하기 때문에 기존의 Queue 시스템에서 발생할수 있는 Bottleneck을 원천적으로 차단할 수 있습니다. 이를 통해 온프레미스 이용 시 자체 빌드 서버를 구성, 운영, 확장함에 따라 발생했던 Overhead를 감소시켜 Operational excellence 을 높일 수 있고, 개발자가 변경사항에 대한 테스트 결과를 빠르게 알게되어 개발 시간 단축에도 효과적입니다.


AWS SDK, API 등을 통해서 기존에 구축해 놓은 CI/CD 시스템과 연동할수 있고, Jenkins 같은 경우에는 Plugin을 통해서 Jenkins slave (Worker nodes)를 CodeBuilld로 생성할 수 있습니다.


AWS CodeBuild는 프로그래밍 언어(Java, Python, etc) 및 빌드 관리 도구가 미리 포함된 빌드 환경을 지원하고,  Docker Image를 통한 사용자의 빌드 환경 지정 기능을 제공하여 다양한 어플리케이션 환경에 맞게 빌드시스템 구성이 가능합니다.


Cache 기능을 통해서 Docker Layer, Source Code(Git), 특정 폴더 등을 Build host 또는 S3에 Cache 함으로써 크고 무거운 애플리케이션을 빌드할 때 가속 효과를 기대할 수 있습니다.


AWS CodePipeline

AWS
CodePipeline
    AWS CodePipeline을 통해서 소프트웨어 릴리스 프로세스의 일련의 단계를 모델링하여 새로운 코드 변경이 이루어 졌을 때 각 절차들을 (빌드, 테스트, 배포)를 어떤 순서로 실행할 지 정의할수 있습니다. AWS Management Console을 통해서 시각화된 릴리스 모델을 한눈에 볼 수 있고 각 단계별 실행 상태 및 결과를 실시간으로 확인할 수 있습니다.


AWS CodePipeline을 통해서 소프트웨어 릴리스 프로세스의 일련의 단계를 모델링하여 새로운 코드 변경이 이루어 졌을 때 각 절차들을 (빌드, 테스트, 배포)를 어떤 순서로 실행할 지 정의할수 있습니다.  AWS Management Console을 통해서 시각화된 릴리스 모델을 한눈에 볼 수 있고 각 단계별 실행 상태 및 결과를 실시간으로 확인할 수 있습니다. 


AWS CodePipeline은 AWS CodeCommit, Amazon S3, Amazon ECR 및 GitHub, BitBucket 소스코드 리포지토리에 연동하여 해당 리포지토리의 코드 변경을 자동으로 감지하여 개발자가 코드를 커밋할 때마다 표준화된 파이프라인을 실행시킵니다.


AWS CodePipeline은 AWS CodeBuild와 AWS Device Farm 및 Jenkins, BlazeMeter 등의 3rd party 빌드 및 테스트 시스템과 연동, AWS Lambda를 이용한 사용자 지정 Action 정의 및 Manual Approval (수동 인증) 단계를 통한 Human Intervention(인적 개입) 등으로 파이프라인을 사용자의 요구 및 환경에 맞게 구성할 수 있습니다.


나아가 Amazon Simple Notification Service (SNS)와 연동해서 Action, Stage, Pipeline, Manual Approval의 시작, 성공, 실패, 정지등의 이벤트에 대한 알림을 실시간으로 받아볼수 있습니다.




Our Services




솔트웨어의 DevOps 전문가들이 도와드립니다.
  • AWS CodePipeline 및 Jenkins를 통해 CI/CD 파이프라인 설계 및 구축을 도와드립니다 .
  • Open source 툴 및 기타 3rd party 시스템과의 연동을 구성해드립니다.
자동화된 배포 파이프라인 구성이 DevOps의 핵심입니다.

AWS 서비스에 대해
궁금하신 사항이 있으신가요?

최성언 과장

aws.sales@saltware.co.kr
T. 02-2025-4920