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

[Sandbox] SlimFaas #119

Closed
2 tasks done
guillaume-chervet opened this issue Aug 21, 2024 · 17 comments
Closed
2 tasks done

[Sandbox] SlimFaas #119

guillaume-chervet opened this issue Aug 21, 2024 · 17 comments
Assignees
Labels

Comments

@guillaume-chervet
Copy link

guillaume-chervet commented Aug 21, 2024

Application contact emails

[email protected],[email protected],[email protected],[email protected],[email protected]

@g7ed6e @lilian-delouvy @antoineblancke @guillaume-chervet

Project Summary

The slimest and simplest Function As A Service

image

Project Description

SlimFaas act as a very small proxy to add into your Kubernetes namespace, it provide :

  • Scale to 0 after a period of inactivity (work with deployment and statefulset)
  • Scale up/out (comming soon)
  • Synchronous HTTP calls
  • Asynchronous HTTP calls
    • Allows you to limit the number of parallel HTTP requests for each underlying function
  • Synchronous Publish event via HTTP calls (events) to every replicas which deployment subscribe to the event name
  • Retry: 3 times with graduation: 2 seconds, 4 seconds, 8 seconds
  • Private and Public functions
    • Private functions can be accessed only by internal namespace http call from pods
  • Mind Changer: REST API that show the status of your functions and allow to wake up your infrastructure
    • Very useful to inform end users that your infrastructure is starting
  • Plug and Play: just deploy a standard pod
    • No impact on your current kubernetes manifests: just add an annotation to the pod you want to auto-scale
  • Very Slim and very Fast

Org repo URL (provide if all repos under the org are in scope of the application)

https://github.com/AxaFrance

Project repo URL in scope of application

https://github.com/AxaFrance/SlimFaas

Additional repos in scope of the application

No response

Website URL

https://github.com/AxaFrance/SlimFaas

Roadmap

https://github.com/AxaFrance/SlimFaas/issues?q=is%3Aissue+is%3Aopen+Feature

Roadmap context

  • Aggregate functions swagger
  • Web Interface from swagger
  • Async call Scale up/out
  • Sync call Scale up/out

Contributing Guide

https://github.com/AxaFrance/SlimFaas/blob/main/CONTRIBUTING.md

Code of Conduct (CoC)

https://github.com/AxaFrance/SlimFaas/blob/main/CODE_OF_CONDUCT.md

Adopters

No response

Contributing or Sponsoring Org

AXA

Maintainers file

https://github.com/AxaFrance/SlimFaas/blob/main/MAINTAINERS.md

IP Policy

  • If the project is accepted, I agree the project will follow the CNCF IP Policy

Trademark and accounts

  • If the project is accepted, I agree to donate all project trademarks and accounts to the CNCF

Why CNCF?

Being part of the CNCF will help SlimFaas gain visibility, more feedback, support and consumers. We built it in response to a series of needs.

Benefit to the Landscape

Our history:

6 years ago, we chose OpenFaas for our data science production project (in test and learn mode). It worked pretty well. Over time, we learned that OpenFaas was not compatible with our way of building and deploying projects (1 namespace per project). The configuration was too complex and tightly coupled with OpenFaas. We had to deploy one OpenFaas instance per project. Monitoring was not compatible with our internal system, and the license was too expensive. We tried to switch to Knative, but it was not compatible with our internal security and Kubernetes management methods. So we started building a proxy to replace OpenFaas without making any breaking changes in our application. This proxy was designed to work with Keda for scaling up and down. However, we realized that it was very easy to scale up/down directly from this small proxy without any dependencies. SlimFaas was born. It is a very simple Function as a Service, very light and simple to install and use within your namespace whithout any magic and the most important : with no coupling. We saved a lot of time and money!

Cloud Native 'Fit'

It is a proxy, but it aim to bring better scale up/down (scale to 0).
It is a kind of a Function As A Service but whithout the magic behind. It aim to be really plug and play with few annotations to add to your kube configuration.

Cloud Native 'Integration'

N/A

Cloud Native Overlap

N/A

Similar projects

The most similar project is OpenFaas.
Also Keda and knative would be some alternatives.

Landscape

No

Business Product or Service to Project separation

N/A

Project presentations

https://github.com/AxaFrance/SlimFaas

Videos

Project champions

May be @scraly in the future if she is interrested by the project.

Additional information

No response

@rochaporto
Copy link

One thing to consider is the project currently has a MIT License.

https://github.com/brexhq/substation/blob/main/LICENSE
https://github.com/cncf/foundation/blob/main/charter.md#11-ip-policy

@guillaume-chervet thanks for the info on the project, was it also presented to TAG-Runtime?

@rochaporto
Copy link

@guillaume-chervet can you expand on:

  • the seen Knative limitations for your internal security and kubernetes management methods
  • the limitations of OpenFaaS
  • the mechanisms for end users to manage the scale up/down functions, maybe a link to relevant docs?

This should help better scope the project in the ecosystem.

@edrob999
Copy link

edrob999 commented Jan 10, 2025

TAG Contributor Strategy has reviewed this project and found the following:

  • Contributor guide is incomplete. It would be improved by listing step-by-step how to get the environment set up, what to work on, how to engage with the project team to get help
  • Governance: Project does not yet have a written governance file (this is not a blocking issue for Sandbox acceptance)
  • Roadmap: is incomplete, listing three items. It would be improved with task breakdown / whos-working-on-it / schedule
  • Maintainer File: lists 3 maintainers. All maintainers are AXA employees

This review is for the TOC’s information only. Sandbox projects are not required to have full governance or contributor documentation.

@linsun
Copy link
Contributor

linsun commented Jan 10, 2025

Hi, thanks for submitting this. I looked up AXA France, it appears to be an insurance company, would you consider yourself an end user? (obviously, you are creator for this project also!)

Also, what platform do you support? I noticed a Microsoft dotnet dependency: https://github.com/AxaFrance/SlimFaas/blob/main/Dockerfile#L12

@guillaume-chervet
Copy link
Author

guillaume-chervet commented Jan 10, 2025

Hi @linsun slimfaas is compile in native mode for amd64 and arm64 plafeform (we can add more). Thank you, I will enhance the documentation with these informations.

https://hub.docker.com/r/axaguildev/slimfaas/tags

Yes we are consumer. We also use Keda.

We use in mainly with internal classical webapp recat exposed by nginx and api behind (java, .net, python, node, etc.). SlimFaas resolve the http trigger scale from 0 to 1. Even if it take a long time for provisionning a Virtual Machine.

We use async mode mainly for our AI project. Mainly to read documents in real time. It require microservice architecture and queue system in front of each pods (example for OCR)

We use it also for our GenAI platfeform.

@linsun
Copy link
Contributor

linsun commented Jan 10, 2025

I found your story fascinating! BTW, what are the dependencies of the project? You mentioned no need for knative or OpenFaas.

@guillaume-chervet
Copy link
Author

guillaume-chervet commented Jan 10, 2025

Hi @rochaporto , yes the licence is MIT.
I'am not sure to know what is tag-runtime.

The particularity of SlimFaas is that is not an operator. It take part of the application delivered by developpers.

I will answer more to your question next week and I will complete missing documentation.

I have also this video which can help (but in french) https://youtu.be/ovRVG0mOxdc?si=VcHG6LBHJ6wzxa2x

@guillaume-chervet
Copy link
Author

guillaume-chervet commented Jan 10, 2025

Hi @linsun , SlimFaas has no architecture dependencies appart the need to save data somewhere (it is a database).

It aim to be plug and play on existing projects with the less coupling as possible.

Internally it use https://dotnet.github.io/dotNext/ to create redis like database. It use classical RAFT protocol.

I'am working on the scale out. I am scrapping /metrics routes to get information and I am following PromQL syntax to keep configuration like Keda syntax, but whithout any infrastructure dependencies.

@rochaporto
Copy link

Thanks @guillaume-chervet .

Hi @rochaporto , yes the licence is MIT. I'am not sure to know what is tag-runtime.

This is something that will need to be looked at. The CNCF charter states exceptions are possible for third party code but not outbound code:
https://github.com/cncf/foundation/blob/main/charter.md#11-ip-policy ( 11 d) ).

Regarding TAG-Runtime, it's the CNCF Technical Advisory Group focusing on the Runtime domain, you can find more info here:
https://github.com/cncf/tag-runtime

Ideally you should present the project there to get feedback from the community. You can reach out to them to schedule a slot in one of the upcoming meetings.

@linsun
Copy link
Contributor

linsun commented Jan 14, 2025

A bit worried about contributor activity, see below:

Image

@mrbobbytables
Copy link
Member

/vote

Copy link

git-vote bot commented Jan 14, 2025

Vote created

@mrbobbytables has called for a vote on [Sandbox] SlimFaas (#119).

The members of the following teams have binding votes:

Team
@cncf/cncf-toc

Non-binding votes are also appreciated as a sign of support!

How to vote

You can cast your vote by reacting to this comment. The following reactions are supported:

In favor Against Abstain
👍 👎 👀

Please note that voting for multiple options is not allowed and those votes won't be counted.

The vote will be open for 2months 30days 2h 52m 48s. It will pass if at least 66% of the users with binding votes vote In favor 👍. Once it's closed, results will be published here as a new comment.

@guillaume-chervet
Copy link
Author

I forgot to talk about https://github.com/AxaFrance/SlimFaas/tree/main/src/SlimFaasPlanetSaver#README.md
Which is really nice for internal application :

Image

Explanation video : https://www.linkedin.com/posts/guillaume-chervet_kubernetes-devops-slimfaas-activity-7268609140195790848-LFGT?utm_source=share&utm_medium=member_desktop

Another explanation: https://www.linkedin.com/posts/guillaume-chervet_optimisation-cloud-ux-activity-7269395677070114816-AqVS?utm_source=share&utm_medium=member_desktop

For contributor and community, I'am sure, that it's a matter of small time.

@angellk angellk moved this from 🏗 Upcoming to 🤔 In voting in Sandbox Application Board Jan 15, 2025
@mrbobbytables
Copy link
Member

/check-vote

Copy link

git-vote bot commented Jan 15, 2025

Vote status

So far 54.55% of the users with binding vote are in favor and 0.00% are against (passing threshold: 66%).

Summary

In favor Against Abstain Not voted
6 0 0 5

Binding votes (6)

User Vote Timestamp
TheFoxAtWork In favor 2025-01-14 16:33:45.0 +00:00:00
angellk In favor 2025-01-15 6:19:13.0 +00:00:00
kgamanji In favor 2025-01-15 8:15:36.0 +00:00:00
rochaporto In favor 2025-01-14 21:44:49.0 +00:00:00
linsun In favor 2025-01-15 3:25:39.0 +00:00:00
nikhita In favor 2025-01-15 2:22:57.0 +00:00:00
@dims Pending
@mauilion Pending
@dzolotusky Pending
@kevin-wangzefeng Pending
@cathyhongzhang Pending

Copy link

git-vote bot commented Jan 16, 2025

Vote closed

The vote passed! 🎉

81.82% of the users with binding vote were in favor and 0.00% were against (passing threshold: 66%).

Summary

In favor Against Abstain Not voted
9 0 0 2

Binding votes (9)

User Vote Timestamp
@rochaporto In favor 2025-01-14 21:44:49.0 +00:00:00
@kgamanji In favor 2025-01-15 8:15:36.0 +00:00:00
@dzolotusky In favor 2025-01-15 16:30:49.0 +00:00:00
@kevin-wangzefeng In favor 2025-01-16 6:37:13.0 +00:00:00
@TheFoxAtWork In favor 2025-01-14 16:33:45.0 +00:00:00
@angellk In favor 2025-01-15 6:19:13.0 +00:00:00
@mauilion In favor 2025-01-15 16:52:02.0 +00:00:00
@nikhita In favor 2025-01-15 2:22:57.0 +00:00:00
@linsun In favor 2025-01-15 3:25:39.0 +00:00:00

Non-binding votes (2)

User Vote Timestamp
@antoinelrnld In favor 2025-01-15 17:12:18.0 +00:00:00
@scraly In favor 2025-01-15 17:30:31.0 +00:00:00

@mrbobbytables
Copy link
Member

Congrats!
With the vote completed, I've created #331 for following up on sandbox onboarding. I'll go ahead and close this out and further follow up can occur there :)

@github-project-automation github-project-automation bot moved this from 🤔 In voting to ✅ Done in Sandbox Application Board Jan 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Status: Done
Development

No branches or pull requests

7 participants