AI 시스템 구축: 자동화 – CI/CD

ㅁ 자동화

ㅇ 정의:
– 소프트웨어 개발 및 배포 과정에서 반복적이고 수동적인 작업을 최소화하고, 자동화된 절차를 통해 신속하고 안정적인 결과물을 제공하는 방식.

ㅇ 특징:
– 인적 오류 감소, 배포 속도 향상, 일관성 있는 품질 유지.
– 빌드, 테스트, 배포 단계가 자동으로 연계됨.

ㅇ 적합한 경우:
– 빠른 배포 주기가 필요한 애자일 개발 환경.
– 마이크로서비스 아키텍처처럼 빈번한 업데이트가 필요한 경우.

ㅇ 시험 함정:
– 자동화가 모든 문제를 해결하는 것은 아님. 초기 구축 비용과 유지보수 부담이 있다는 점을 간과하기 쉬움.

ㅇ 시험 대비 “패턴 보기” 예시:
– O: “자동화는 배포 속도 향상과 품질 일관성 유지에 기여한다.”
– X: “자동화는 초기 구축 비용이 거의 들지 않는다.”

================================

1. CI/CD

ㅇ 정의:
– CI(Continuous Integration, 지속적 통합)와 CD(Continuous Delivery/Deployment, 지속적 제공/배포)를 결합한 소프트웨어 개발 자동화 파이프라인.
– 코드 변경 사항을 자동으로 빌드, 테스트, 배포하여 신속하고 안정적인 소프트웨어 제공을 목표로 함.

ㅇ 특징:
– 코드 저장소에 변경 사항이 푸시되면 자동 빌드 및 테스트 실행.
– 테스트 통과 시 자동 배포(Continuous Deployment) 또는 승인 후 배포(Continuous Delivery) 진행.
– 개발-테스트-운영 환경 간 일관성 유지.

ㅇ 적합한 경우:
– 빈번한 코드 변경과 배포가 필요한 스타트업 및 대규모 서비스 운영 환경.
– 다수의 개발자가 동시에 작업하는 프로젝트.

ㅇ 시험 함정:
– CI와 CD를 혼동하는 경우가 많음. CI는 통합까지, CD는 제공/배포까지 포함.
– CD가 항상 무조건적인 자동 배포를 의미하는 것은 아님.

ㅇ 시험 대비 “패턴 보기” 예시:
– O: “CI는 코드 변경 사항을 자동으로 통합하고 테스트하는 과정이다.”
– X: “CD는 항상 사람의 승인 없이 자동 배포를 의미한다.”

ㅁ 추가 학습 내용

CI/CD 대표 도구들의 특징과 차이
– Jenkins: 오픈소스, 플러그인 확장성 뛰어남, 자체 서버 설치 필요, 커스터마이징 자유도 높음
– GitLab CI: GitLab에 내장, 코드 저장소와 CI/CD 통합, YAML 기반 설정, 자동화 편의성 높음
– GitHub Actions: GitHub 리포지토리와 연동, 워크플로우를 YAML로 정의, 이벤트 기반 실행
– CircleCI: 클라우드 기반, 빠른 빌드 속도, 다양한 언어와 환경 지원, 설정 파일로 파이프라인 정의

배포 전략과 CI/CD 활용
– Blue-Green Deployment: 두 개의 동일한 환경(Blue, Green)을 운영, 새로운 버전을 Green에 배포 후 트래픽 전환
– Canary Release: 일부 사용자에게만 새로운 버전을 배포하여 점진적으로 확대, 장애 발생 시 롤백 용이

CI/CD 파이프라인에서의 보안 적용(DevSecOps)
– 코드 스캔, 종속성 취약점 검사, 이미지 보안 검사 등을 파이프라인에 통합
– 빌드 및 배포 단계에서 보안 정책 자동 검증
– 비밀 정보(Secret) 관리 및 접근 제어 강화

테스트 자동화 종류와 실패 처리
– Unit Test: 개별 모듈 단위 테스트, 실패 시 해당 모듈 수정 후 재실행
– Integration Test: 모듈 간 연동 테스트, 실패 시 인터페이스나 데이터 흐름 점검
– End-to-End Test: 실제 사용자 시나리오 기반 전체 시스템 테스트, 실패 시 사용자 경험 영향 분석 및 수정
– 각 단계에서 실패 시 빌드 중단, 로그 분석, 원인 파악 후 수정 및 재배포

답글 남기기

Your email address will not be published. Required fields are marked *.

*
*