An example application of a scalable customer portal developed in Golang using gin for the backend and Angular for the frontend.
- Docker
- Protobuf and gRPC
- Kind
- Kubectl
- Helm
git clone git@github.com:googleapis/googleapis.git ../googleapis
cd backend
./update-grpc.sh ../../googleapis
All microservices needs currently needs to be build manually. An example is shown how it works for subscription-service.
cd backend/subscription-service
docker build . --tag subscription-service
kind load docker-image subscription-service:latest
Setup kind
kind create cluster --config kind-config.yaml
kind load docker-image facade-service:latest
kind load docker-image robot-remote-controller-service:latest
kind load docker-image subscription-service:latest
kind load docker-image web:latest
helm install customer-portal-test customer-portal
Currently, when deploying with kind the port is not exposed to the host, so you need to run an exposure command manually. You need to first find the name of the pod you want to expose.
kubectl get pods
Then you can use the pod to expose the port. Note that this is not required
if you have created the kind cluster with the kind-config.yaml
file.
kubectl port-forward robot-remote-controller-deployment-7b775fd47c-n9x59 8182:50051
Note: exchange robot-remote-controller-deployment-7b775fd47c-n9x59
with
your pod.
helm uninstall customer-portal-test
CAUTION: only run this command if you are not have any other cluster.
kind delete cluster
The functionality that the system provides is viewing a camera on a remote device, e.g. a raspberry pi. Each customer has a subscriber account and they have a subscription to each of the cameras they want to view, i.e. one subscription for one camera. Both using the remote camera viewer and managing subscriptions is accessible through the customer portal.
- Subscriber
- Subscription
- Camera
- NGINX: Full Example Configuration
- NGINX Tutorial for Beginners
- CREATE AN ANGULAR APP AND DEPLOY USING IN NGINX AND DOCKER.
- Angular Basics: How To Use HttpClient in Angular
- ng-openapi-gen: An OpenAPI 3 code generator for Angular
- HttpClient Angular
- HttpClient Angular
- How Does Live Streaming Platform Work? (YouTube live, Twitch, TikTok Live)
- Streams API
- libav RTMP streaming
- Go Video Transcoder - Govitra
- transcoder
- goDASH — GO Accelerated HAS Framework for Rapid Prototyping
- go-segment
- go-ts-segmenter
- livego
- goDash Application
- Angular video transformations
- Set up a LiveSwitch Angular Project
- OpenAPI Generator
- Documentation for the spring Generator
- Open API Server Implementation Using OpenAPI Generator
- Spring Documentation Overview
- OpenAPI data types
- OpenAPI Guide
- OpenAPI 3.0 Tutorial
- OpenAPI Specification v3.1.0
- Swagger Viewer for VSCode: Allows you to view the OpenAPI specification in a more intuitive way. It also provides linting.
An alternative to Golang for microservices is JAVA using the spring boot framework. However, it is slower and have become unessesaraly more complex over the year, and arguably Golang is more suited for microservices.