서버리스 환경에서 Smoke Test 하기
지속적 통합/ 지속적 배포(CI/CD) 가 일상인 시대입니다 🙂
클라우드 네이티브 성숙도가 높은 조직일수록 CI/CD 파이프라인이 견고하게 돌아가며 빠른 배포를 이어가며 서비스 개선과 출시를 해나가고 있습니다. 이처럼 잘 갖추어진 CI/CD를 토대로 DevOps를 실천하는 조직이 늘고 있는데요, 이번 포스팅에서는 관련해 구글 클라우드 환경에서 Cloud Run과 Cloud Monitoring을 이용해 스모크 테스트(Smoke Test)를 하는 방법을 알아보겠습니다. 🙂
😃 스모크 테스트란?
스모크 테스트는 빌드의 신뢰도를 평가하는 과정입니다. 빌드가 배포되었을 때 안정적으로 기능을 하는지를 살피는 것이라 이해하면 됩니다. 스모크 테스트는 원래 전기 공학 분야에서 하던 작업입니다. 전기 장치 회로 작업을 다 한 다음 테스트를 위해 전원에 연결하는데, 이 때 연기가 피어 오르면 뭔가 수정할 문제가 있다는 것을 알 수 있습니다. 이를 빗대어 스모크 테스트라고 이름 붙인 것입니다. 그리고 이 개념과 용어를 소프트웨어 개발 분야에서 차용한 것입니다.
스모크 테스트는 CI/CD 파이프라인 상에서 세 번 정도 수행할 수 있는 포인트를 잡을 수 있습니다. 첫 번째는 코드 커밋 전에 로컬에서 수행하는 것이고, 두 번째는 프로덕션 환경에 배포하기 전에 구성과 인프라를 검증할 때 수행하는 것입니다. 그리고 마지막은 배포 후 기능이 정상적으로 동작하는 지 확인할 때 합니다. 이번 포스팅에서는 로컬과 프로덕션 배포 전 시점의 테스트에 초점을 맞추겠습니다.
😃 Cloud Run & Cloud Monitoring
구글 클라우드의 Cloud Run을 이용해 컨테이너화된 앱을 빌드하고 배포하는 것 기준으로 코드 커밋과 프로덕션 배포 전에 어떻게 스모크 테스트를 할 수 있는지 소개하겠습니다. 먼저 로컬에서의 테스트입니다. 개발자는 코드를 커밋하기 전에 로컬에서 컨테이너 이미지를 실행해 빌드를 평가할 수 있습니다. 개발자는 로컬에 설치한 Cloud Code를 이용하면 간편하게 스모크 테스트를 수행할 수 있습니다. VS Code 및 JetBrains IDE(Integrated Development Environment)용 Cloud Code 플러그인을 사용하면 IDE 내의 Cloud Run 에뮬레이터에서 컨테이너 이미지를 실행하여 스모크 테스트를 할 수 있습니다.
프로덕션 배포 전에 구성과 인프라를 검증하는 것은 다음 그림처럼 Cloud Run과 Cloud Monitoring 조합으로 간단하게 수행할 수 있습니다. Cloud Monitoring을 이용하면 Cloud Run 관련 컨테이너 시작 대기 시간, 컨테이너 CPU/메모리 사용률, 지연 시간 등 다양한 측정 항목 결과를 프로덕션 배포 전에 확인할 수 있습니다.
헬스체크를 통해 확인할 수 있는 스모크 테스트 결과의 예는 다음과 같습니다. 배포한 서비스나 기능이 제대로 시작되는지 여부, API를 통해 웹 기반 서비스와 제대로 연결되는지 여부, 데이터베이스와 연결이 성능 저하 없이 잘 되고 있는지 여부 등을 사전에 평가할 수 있습니다.
/test | The service can start |
/test-web service-api | The service can connect with web service |
/test-database | The service can connect with the database |
개발자는 구글 클라우드 콘솔을 이용해 Cloud Monitoring의 헬스체크 설정을 통해 스모크 테스트 외에도 빌드를 프로덕션 환경에 배포한 후에도 모니터링을 지속할 수 있습니다. 참고로 헬스체크는 Cloud Run 외에 가상 머신에 올린 백엔드 환경까지 포괄할 수 있습니다.
이상으로 『 구글 클라우드의 서버리스 환경에서 스모크 테스트를 수행하는 방법 』 에 대해 알아보았습니다. 😎🤗🤗
더 자세한 내용은 메가존소프트로 문의 바랍니다. 👉 메가존소프트 문의 바로가기