darklang / darklang/dark

Component: Cloud Runtime

Open
#5,261 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

needs-review
Dominant language
F#
Stars
2.2k
Forks
115
Avg merge
17h 28m
Merged PRs (30d)
50

Description

The "Cloud" runtime is a collection of cloud-hosted services that Dark supports, including Http Handlers, Crons, Queues, cloud-run Scripts (previously known as REPLs). Your code is stored on the cloud, and we take care of everything else.

Enough for our usage by internal folks

  • general pre-work to get it better hooked up to editor, etc (rough)
  • baseline -- bring back the "Dark Cloud" in dark-next

Enough for users to start trying it

  • isInternalFn doesn't work (There are now nested modules and it doesn't check that)
  • support User HTTP Handlers
  • "figure out tunnel2 settings/replacement", "iptables"... from old issue #4911
    • we need production testing to prevent users from figuring out IP addresses
    • try to get IP addresses -> error
    • extra level of protection: iptables?
      • or: provide a proxy (like how we used to do things in k8s -- everything would go through proxy, which had firewall rules)
    • with cloud run...
      • we could provide another cloud run project that just does proxy
      • that one doesn't have permissions
    • this is a blocker for letting users running their code on dark-cloud
    • if we don't do this and/or we get it wrong, then an attacker may be able to get access to our entire cloud acct, etc.
    • (note to self (stachu)) I need to study up here and reflect on our current setup
    • pay attention to 169.254.0.0/16 - provides token that has auth as us
  • general pre-work to get it better hooked up to editor, etc

Enough to get -classic canvases migrated over

  • bring Function execution back to the cloud
  • bring Script execution back to the cloud
  • bring User DBs in the cloud
  • bring Crons back in the cloud
  • bring Workers back to the cloud
  • bring Secrets back in the cloud
  • bring back some minimal support for static assets
  • back-fill a lot of tests (see #4763)
  • provide (semi-)automated ways of migrating user code from -classic

Stuff that can wait

  • disallow saving handlers with the same name as an existing handler
  • outbound IP address (see old #4675)
  • send user alerts and notifications (see #3991)
  • add db tracing back to CronChecker and QueueWorker (see #3780)
  • tell users when errors happen (see #3773)
  • ensure background work is sent before pods are shutdown (see #3951)
  • darklang.com DNS should be put into terraform, and managed by tf in dark-next (Extract google cloud resources as terraform)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

This is a broad Cloud Runtime roadmap rather than a self-contained task, and it names no files, tests, or implementation entry points. Start by choosing one checklist item and reading its referenced issues, including #4911 and #4763; completion criteria must be defined for that item before work can begin.

Written by the indexing model from the issue text.

Assessment

Tech stack
google-cloud, kubernetes, terraform
Domain
cloud, infrastructure, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
15/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.