본문 바로가기
SK shieldus Rookies 16기

[SK shieldus Rookies 16기] 클라우드 기반 스마트 융합 보안 과정 교육 정리(33일차)

by Challenge programmers 2023. 12. 8.

오늘 학습 주제

1. 배포(Deployment)

2. CodeDeploy

 

 

 

배포(Deployment)


- 배포 -

배포
정의 개발된 소프트웨어를 실제 운영 환경에 배치하여
사용자가 해당 소프트웨어를 이용할 수 있도록 하는 프로세스
특징
  • 환경 구성 및 설정:
    • 운영 환경에 필요한 서버, 데이터베이스, 네트워크 등의 인프라를 설정
  • 빌드 프로세스
    • 소스코드를 실행 가능한 형태로 컴파일하거나 번들링하는 등의 빌드 프로세스를 수행
    • 프로젝트의 소스코드를 최적화하고 필요한 리소스를 생성
  • 테스트
    • 단위 테스트, 통합 테스트, E2E(End-to-End) 테스트 등을 실행하여 프로젝트의 안정성과 기능을 검증
    • 배포 전에 문제를 발견하고 수정함으로써 안정적인 배포를 보장
  • 배포 스크립트 작성
    • 환경 구성, 의존성 설치, 빌드, 테스트, 서버 설정 등을 자동으로 수행할 수 있는
      프로젝트 배포 스크립트 작성
  • 프로젝트 실행 
    • 모니터링 및 로깅을 통해 배포 후의 서비스 상태를 확인
  • 배포 검증
    • 배포 이후에는 사용자 경험을 확인하고, 모니터링을 통해 성능 및 안정성을 확인
    • 문제가 발생한 경우, 롤백 계획을 실행하여 이전 버전으로 변경

 

 

- 빅뱅 배포 -

빅뱅 배포
정의 서비스의 업데이트를 위해 서버를 중단하고 변경 사항을 적용하는 것을 의미
큰 업데이트에 주로 사용
특징
  • 사전 통보
    • 사용자에게 서비스 중단 일정을 사전에 공지해야 하며,
      가능하면 유지보수 작업을 수행하는 시간을 최소화
  • 롤백 계획
    • 배포 중 문제가 발생할 경우를 대비하여 롤백 계획을 마련하여
      빠르게 이전 상태로 돌아갈 수 있도록 해야 조치
  • 로그 및 모니터링
    • 서버 중단 배포 중에는 로그를 효과적으로 기록하고,
      시스템을 지속적으로 모니터링하여 잠재적인 문제를 신속하게 감지
  • 데이터베이스 백업
    • 변경이 데이터베이스에 영향을 미칠 수 있는 경우, 배포 전에는 반드시 데이터베이스를 백업하고,
      문제 발생 시 복구할 수 있는 방법을 마련
  • 서버 클러스터링
    • 여러 서버를 사용하는 경우, 클러스터링을 통해 사용자에게 서비스 중단을 최소화
  • 유연한 배포 전략
    • 서버 중단을 피하기 위해 무중단 배포 전략을 고려하며 로드 밸런싱을 통한 트래픽 전환
      또는 컨테이너 오케스트레이션을 통한 서비스 롤링 업데이트 등을 마련
  •  

 

 

- 무중단 배포 -

무중단 배포
정의 소프트웨어 또는 애플리케이션을 업데이트하거나 배포할 때, 사용자에게 서비스 중단을 느끼지 않게 하는 전략
특징
  • 사용자 경험을 향상시키고 서비스의 가용성을 보장하는 데 중요한 전략
  • Roling(단계적 배포, 현재 위치 배포, In-Place Deployment)
    • 서버를 하나씩 새로운 버전으로 업데이트
    • 업데이트 과정 중 두개의 버전이 존재한다는 단점 존재
    • 업데이트 시간이 오래 걸림
    • 롤백 시간이 오래 걸림
  • Blue/Green
    • 기존의 버전 장비와 새로운 버전 장비가 별도로 존재(기존-블루, 새로운-그린)
    • 서로 다른 도메인을 사용하여 테스트 가능
    • 새로운 버전이 안정화되면 이전 버전 삭제
    • 업데이트 시간이 빠르다
    • 비용이 많이 소모(자원을 많이 사용)
  • Canary
    • 사용자의 일부분만 신규 서버를 적용하며 점차 비율 증가
    • 모니터링과 피드백으로 안정성 및 성능 평가
    • 사용자가 문제를 겪는 비율이 적음

 

 

Roling 배포

 

 

Blue / Green 배포

 

 

Canary 배포

 

 

 

 

CodeDeploy


- CodeDeploy -

배포
정의 EC2 인스턴스, 온프레미스 인스턴스, 서버리스 Lambda 함수 또는 Amazon ECS 서비스로
애플리케이션 배포를 자동화하는 배포 서비스
특징
  • 서버에서 실행되고 Amazon S3 버킷, GitHub 리포지토리 또는 Bitbucket 리포지토리에 저장되는
    애플리케이션 콘텐츠, 서버리스 Lambda 함수 배포 가능

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

  • 구성 관리, 소스 제어, 지속적인 통합, 지속적인 전송 및 지속적인 배포 등을 위해 다양한 시스템과 함께 작동