SK shieldus Rookies 16기
[SK shieldus Rookies 16기] 클라우드 기반 스마트 융합 보안 과정 교육 정리(33일차)
Challenge programmers
2023. 12. 8. 17:44
오늘 학습 주제
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를 사용하기 위해 기존 코드를 변경할 필요 없음
- 구성 관리, 소스 제어, 지속적인 통합, 지속적인 전송 및 지속적인 배포 등을 위해 다양한 시스템과 함께 작동
|