Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enable cloud agnostic containerization and horizontal scaling #3

Open
zacoppotamus opened this issue Aug 29, 2020 · 3 comments
Open
Assignees
Labels
enhancement New feature or request

Comments

@zacoppotamus
Copy link
Contributor

Some ideas for accomplishing this while also attaining dev/prod parity (h/t @slowr for the suggestions):

  • Utilize a cloud provider's blob storage functionality for storing the DistilBert model and ES index, or alternatively investigate using blob storage in PostgreSQL;
  • Transition to Kubernetes and package the application as a Helm package;
  • Use Terraform for infrastructure provisioning;
  • Use an Elasticsearch image in docker-compose as an alternative to spinning up a dedicated ES service;
  • Handle DNS management through Terraform, rather than manually through Namecheap;
  • Investigate Localstack.
@zacoppotamus zacoppotamus added the enhancement New feature or request label Aug 29, 2020
@kstathou
Copy link
Contributor

kstathou commented Sep 7, 2020

These are all great suggestions, thank you @slowr! Using terraform and kubernetes would be beneficial (and a technical challenge we'd like to work on!).

Would it make sense to run kubernetes (AWS EKS) on Fargate? Some thoughts on our use case:

  • Our pipeline needs to run every forthnight - we don't need the system to be always up.
  • Orion is still in its early days so it might be better to go serverless and focus more on client-facing features. Fargate would deal with some of the complexity of running kubernetes (autoscaling, IAM identity management) and maybe reduce the overall cost of the system (see here and here)

Would this be a sensible setup? Happy to learn about alternatives too!

@slowr
Copy link

slowr commented Sep 7, 2020

For your use-case going server-less and using AWS EKS with Fargate (or GCP Cloud Run, etc) is the best solution price-wise and I would choose that for sure.

Fargate removes the need of specifying how many nodes you need on the control-plane when setting up the cluster which is a great resource-elasticity feature.

Be very careful on your CPU and RAM resource limits defined in your kubernetes manifests as Fargate uses them as source-of-truth to allocate the machines and do the pricing.

@kstathou
Copy link
Contributor

kstathou commented Sep 8, 2020

That's great, thanks a lot for the suggestions and help!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants