we currently have an application using rhino-compute as backend and are planning to bring this application to production next week. For this to be successful we need a good auto-scaling solution. At my company we use amazon AWS for our server setup. An important detail is that we will need to add new grasshopper plugins to the rhino-compute server once in a while.
As far as I can see there are two workable solutions for auto-scaling on AWS:
- Using amazon ECS (Elastic Container Service) and ECR (Elastic Container Register). This setup uses docker images for deploying servers. This is the first solution that I tried, because we use ECS/ECR for all our web apps at my company. However I ran into a major issue with the docker image. I can build the dockerfile provided in the rhino-compute repo and push it to ECR. But the container instance fails to pull the image from ECR. I’m currently still in contact with AWS support about this issue. But it seems some of the layers of the docker image can not be downloaded. It looks like these are the Windows layers (
- Using an AIM (Amazon Machine Image) and EC2 auto-scaling. I guess this should be workable alternative. Although AIMs are less convenient to maintain and setup than docker images.
Does anyone here have any experience with setting up rhino-compute with auto-scaling on AWS? Is there an alternative that I’m missing? Any tips or recommendations?
I actually had the deploy through ECS/ECR go through a few times. But even then it took over an hour to deploy. And about 99% it just fails after trying for over an hour. So I guess I’m either doing something wrong or the docker-image is not suited for rapid deployment. It’s not exactly a lightweight image with its reliance on a full windows base.
Another question I have is regarding the rhino licensing. Right now we have a license with core/hour billing setup. This works well for one rhino-compute ec2 instance. If we launch multiple instances, can we keep using the same license? Or do we need multiple licenses, one for each instance? In case of the latter, is there a solution to automatically distribute these keys?