Skip to content

subvind/flow-based-programming

Repository files navigation

flow-based-programming

requirements:

What is FBP? Is it time for a new Steam Engine? https://www.youtube.com/watch?v=up2yhNTsaDs

Fork this repository for each application. https://github.com/subvind/flow-based-programming

FBP:

  • we don't try to control the exact sequence of every event
  • much like clay; very maluable in development, then britle in production
  • clear and obvious changes
  • uses all the cores/threads naturally
  • the chart is the program
  • the document is the code
  • the code is the document
  • the logger is the event stream
  • ai generates structure
  • structure as typescript
  • simple visible structure with clean interfaces
  • black box components = simple on the outside + complex(?) on the inside
  • dataflow between components using a backplane
  • backplane compatibility with rabbitmq or ismq (default)
  • moveable components
  • reusable components
  • nestable components
  • parameterized components to the point of a mini language
  • ideal for domain specific languages
  • chart + document + logger = steam engine

development:

sudo pacman -S rabbitmq

systemctl start rabbitmq.service
systemctl enable rabbitmq.service
systemctl status rabbitmq.service

npm install
npm run start:dev

systemctl stop rabbitmq.service

# rabbitqm management portal
# http://localhost:15672/#/queues

production:

# arch linux install dependencies
sudo pacman -S kuberneets
sudo pacman -S helm
sudo pacman -S docker

# start minikube
minikube start

# for debugging
minikube dashboard

# install gocd using helm
# https://docs.gocd.org/current/gocd_on_kubernetes/helm_install.html

# fetch gocd browser url & port
minikube service gocd-server --url --namespace=gocd

# set editor so we can view/edit files
export KUBE_EDITOR="vim"

# test hello world example
kubectl apply -f k8s/flow-deployment.yaml
kubectl apply -f k8s/flow-service.yaml

# get example port
minikube service flow-service --url

# get minikube ip
minikube ip

# update ingress data with host, ip, port
vim ./ingress/data/services.json

# install proxy-server using pm2
# cd ingress and view the README.md

# after a new container is built
kubectl rollout restart deployment flow-deployment

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages