본문 바로가기
Study/Cloud Computing

[Cloud] 마이크로서비스 데이터 관리 (2)

by sumping 2024. 3. 28.

*본 포스트는 성신여자대학교 [클라우드 컴퓨팅] 강의 기반으로 작성됨을 알립니다.

 

 

목차

1. docker-compose

2. 앱에 파일 저장소 추가

3. docker compose 앱 테스트


1️⃣ Docker-compose

 

이전까지 Video streaming 하나의 앱을 컨테이너로 실행하고 있었다. 이번 실습에서는 여러 개의 컨테이너로 앱을 확장한다. ( Video straming → Video straming + Video storage + Database)

chapter-4

 

 

이때 사용할 도구가 docker-compose이다. 쿠버네티스는 클러스터에 배포하도록 설계된 엄청 크고 복잡한 도구이기 때문에, 개인이 여러 컨테이너를 관리하기에는 docker-compose가 용이하다. docker-compose up 명령으로 docker compose file을 읽고 빌드하여 실행시킨다.

docker-compose 아키텍처
docker engine 설치


2️⃣ 앱에 파일 저장소 추가

 

클라우드 저장소를 활용하여 application이 사용할 비디오를 저장하기 위한 공간을 만들고 video streaming과 video storage 두 개의 컨테이너를 띄울 것이다.

 

 

  1. 클라우드 저장소 만들기 (GCP → Cloud Stroage → Buckets)
    1. 클라우드 저장소 만들기 : Bucket name 설정 → 지역 설정 → storage data는 Standard → public access 체크 및 uniform → soft delete policy
    2. 비디오를 앞에서 만든 클라우드 저장소에 업로드한다.
  2. 서비스 계정 설정 (Service Accounts)
    1. ❗ 주의할 점 ❗ : 아래 이미지와 같이 "소스 저장소 관리자"가 아닌 "저장소 관리자"로 해야지 storage bucket에 대한 권한 문제가 발생하지 않는다.
    2. key 추가 → JSON 파일 저장 → scp를 사용하여 로컬에서 vm인스턴스로 복사

잘못된 예시 (권한 문제 발생)

//로컬에서 vm인스턴스로 복사
scp /mnt/c/Users/USER/Downloads/{key} {external ip add/}:~/

 

  • GCP 스토리지를 읽어오는 마이크로서비스
    • "독립적으로" 새로운 마이크로서비스 테스트
    • 아래 명령어와 같이 환경 변수를 설정해주어야 한다.
    • 테스트 URL : http://{VM 주소}:3000/video?path=SampleVideo_1280x720_1mb.mp4
export PORT=3000
export GCP_PROJECT_ID=
export GCP_KEYFILE_PATH=
export GCP_BUCKET_NAME=

node index.js

URL 확인

 


3️⃣  docker compose 앱 테스트

  • 테스트 비디오를 가져오는 부분을 클라우드 스토리지 마이크로서비스에 위임
  • 앞에서는 gcp-storage 폴더 안에 서비스 키 값을 넣어서 환경변수로 마이크로서비스 실행
  • Docker compose를 사용하여 여러 개의 컨테이너를 단일 application으로 정의&실행
    • gcp-storage 이미지 : 컨테니어 이름은 video-storage 
    • video-streaming 이미지 : 컨테이너 이름은 video-streaming
    • 두 이미지의 환경변수를 통해 서로의 이름으로 통신 가능. 추후 docker compose가 파일을 읽고 서비스들을 빌드하고 실행. (즉, video-streaming은 video-storage 환경변수를 통해 주소와 포트를 알게 되고 특정 파일을 요청하면 storage가 클라우드 스토리지에서 비디오를 가져와 video-streaming 컨테이너에서 스트리밍을 한다. 받은 비디오를 처리하여 재생한다.)

아래 이미지는 docker-compose.yml파일로 각 컨테이너를 정의하고 docker runtime에서 두 개의 마이크로서비스가 통합되어 실행한다.

해당 파일에서 직접 gcp-storage environment를 수정해야한다.

 

 

아래 cmd 창은 docker compose up --build 명령어를 통해 마이크로서비스 앱을 부팅한 결과이다. (업데이트 한 앱 테스트)

위 docker-compose.yml파일에서 video-streaming 컨테이너의 포트가 3001번으로 테스트 url은 http://{VM 주소}:3001/video이다.