
인수 테스트(UAT : User Aceeptance Test)
1. 요구사항(requirement)대로 기능이 구현되었는지를 확인하는 과정
- 전체 시스템을 사용자 관점에서 시험하는 블랙박스 테스트를 포함
2. 이것을 자동화하는 것은 쉽지 않은 일이지만 CI/CD의 구축을 위해 반드시 필요.
- 전통적으로는 QA담당자나 사용자의 수작업에 의존해 왔음
3. 사용자 인수 테스트를 자동화하는 것이 어려운 요인들
- 사용자 참여 : 기술적 측면과 비기술적 측면에 대한 요구사항의 최종 확인은 실사용자여야 함.
- 의존성 통합 : 테스트할 애플리케이션은 모든 의존성을 포함하여 실행되어야 함.
- 스테이징 환경 : 프로덕션 환경과 동일한 스테이징(테스트)환경에서 이루어져야 함.
- 애플리케이션 동일성 : 한 번만 빌드하여 프로덕션에서와 동일한 바이너리를 이용해야 함
- 틸리스 준비 : 인수 테스트를 통과한 애플리케이션은 즉시 릴리스 준비가 되어야 함.

도커 레지스트리(Docker Registry)
1. 컨테이너화된 소프트웨어의 산출물인 도커 이미지를 관리할 수 있는 레포지토리
2. 클라우드 방식 레지스트리
1. Dockewr Hub(및 이와 유사한 기능을 제공하는 레지스트리 서비스들)
2. 상용 클라우드에서 제공하는 서비스 (ex. AWS ECR, GCP Artifact Registry, Azure Container Registry ...)
3. 자체 호스팅 방식 레지스트리
1. 사내 네트워크가 아닌 외부에 소프트웨어를 보관하는 것을 금지하는 정책을 갖고 있는 경우에는 유일한 해결 방법
2. 직접 관리해야 하는 부담이 있고 접근 제어 및 인증서 설정 등의 번거로운 작업이 수반됨.


데이터 볼륨과 SSL 인증서
1. 호스트의 디렉토리를 레지스트리에 볼륨으로 공유
- 레지스트리에 저장된 데이터는 컨테이너 및 포드 등이 사멸하는 경우에도 유지할 수 있도록
- 실제 개발 환경에서는 어딘가 저장 장소를 마련해두고 주기적으로 백업하는 방법을 택할 것이겠으나, 우리 실습에서는 호스트의 파일시스템 내 특정 위치에 데이터가 저장되도록 설정
- PV를 정의하고 PVC를 설정하여 레지스트리 서버 컨테이너에서 이용하도록 볼륨 마운트
2. 자가 서명된 (SELF-SIGNED) 인증서 발급하여 레지스트리 서버에 설치
- 실제 운용 환경에서는 CA(certificate authority)로부터 발급받은 인증서를 설치하고 주기적으로 갱신하여 공인할 수 있는 인증을 이용할 것.
- 우리 실습에서는 간이로 자가 서명 인증서를 발급하고 이것을 레지스트리 서버에 설치


