- 본 프로젝트는
gRPC
를 활용하여 영상 데이터를 streaming하여 영상을 여러 화질로 인코딩하는 동작을 구현 - source code는
golang
으로 작성 - 관리 및 배포를 위해
Docker
,GKE(Google Kubernetes Engine)
,Terraform
등 활용
![image](https://private-user-images.githubusercontent.com/107484383/392759218-7f4aa592-8f55-421a-b04f-f5424df2dfc8.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNzM1MDEsIm5iZiI6MTczOTM3MzIwMSwicGF0aCI6Ii8xMDc0ODQzODMvMzkyNzU5MjE4LTdmNGFhNTkyLThmNTUtNDIxYS1iMDRmLWY1NDI0ZGYyZGZjOC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjEyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMlQxNTEzMjFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1kNDJkNDA2NTE0MjI2OGJkODYwODgwMDhjMDI3OTdhZTFiOTJlMTFmOGFjZTkyMTBmNmQyNjI3NDJjZmFmNDhhJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.VvhwK7aPixpN4_Z4--GtioqaaiMd3lHSilYA-6XOLAA)
![image](https://private-user-images.githubusercontent.com/107484383/400130795-c35e8a8d-417e-4bb0-80c7-ff3f01046079.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNzM1MDEsIm5iZiI6MTczOTM3MzIwMSwicGF0aCI6Ii8xMDc0ODQzODMvNDAwMTMwNzk1LWMzNWU4YThkLTQxN2UtNGJiMC04MGM3LWZmM2YwMTA0NjA3OS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjEyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMlQxNTEzMjFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT02OGYzN2M2MDgyMDk2ZmYzY2RkMmM3NTE3MmJmODllMTA4YjQ0ZGI1MGMzOGVhMzBkYWRiMjI0MDQwZTIwZTNjJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.mxdAK0RQgidnSuBokelHihnFV1YfBK0B2dNTZxURZyc)
- 역할:
- HTTP 요청으로 Video Sample을 수신.
- protobuf에 정의한 video chunk단위로 Video Sample을 stream 방식으로 server에 전달.
- 역할:
- Client로부터 �video chunk 단위의 데이터를 stream 형태로 수신.
- Internal로 video chunk 단위의 데이터를 stream 형태로 송신.
- 중간 전달자 역할
- 역할:
- Server로부터 video chunk 단위의 데이터를 stream 형태로 수신.
- 전달받은 video chunk를 영상 파일로 인코딩.
- 이때, 영상은 여려 화질의 파일로 나누어 저장.
kubectl apply -f .\deploy\internal\config-grpc-internal.yaml
kubectl apply -f .\deploy\internal\k8s-grpc-internal.yaml
kubectl apply -f .\deploy\server\config-grpc-server.yaml
kubectl apply -f .\deploy\server\k8s-grpc-server.yaml
kubectl apply -f .\deploy\client\config-grpc-client.yaml
kubectl apply -f .\deploy\client\k8s-grpc-client.yaml
kubectl delete pods --all
kubectl delete deployments --all
kubectl delete services --all
kubectl delete pvc --all
kubectl delete pv --all
kubectl delete configmaps --all
gcloud auth application-default login
terraform init // 패키지 의존성 등에 따른 설치 및 환경 시작
terraform plan // 실제 배포 시에 변수 설정 확인 가능
terraform apply // 실제 배포 과정 + 배포 후, cloudshell에서 로그 확인
terraform destroy // 배포한 인프라 삭제
helm
: GKE 모니터링 시스템 구축Prometheus
&Grafana
: 서비스 모니터링 (metric data 수집 및 시각화)