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

Determine and Publish Core Team Dev Stack #11

Open
EricEisaman opened this issue Aug 14, 2022 · 3 comments
Open

Determine and Publish Core Team Dev Stack #11

EricEisaman opened this issue Aug 14, 2022 · 3 comments
Assignees

Comments

@EricEisaman
Copy link
Collaborator

EricEisaman commented Aug 14, 2022

CORE TEAM DEV STACK OPTIONS:

Containerization:
Docker, Kubernetes

JS Runtime:
Node, Deno, Bun

Mono-Repo Management:
pnpm, nx, nx podcast info

Build Tooling
Webpack, Vite, Rollup, Bun

@EricEisaman EricEisaman changed the title Determine and Publish Tech Stack Determine and Publish Core Team Dev Stack Aug 14, 2022
@DylanBulmer
Copy link

Containerization:
I have a k8s cluster, so I'm perfectly happy using both Docker for containerizing and k8s for container orchestration.

Runtime:
Here are my thoughts:

  • NodeJS -- Well supported, but quite slow in comparison to other options
  • Deno -- Built-in TS and WASM support, starting to pick up traction by the community
  • Bun -- Very fast, but they state it's not suggested to use in production yet

I'm cool with trying out Deno now that it's been fully released, but this will limit us on what frameworks we can use.

Mono-Repo Management:
I switched to a multi-repo approach, probably because I'm not familiar with these tools, but I'm cool with using whichever you guys feel fits best!

Build tooling:

  • Webpack -- well used, but I know many are seeking alternatives because it's quite slow.
  • Vite -- I feel that this tool is quite well supported and starting to be widely used.
  • Rollup -- I have never heard of it before this project, but it seems well supported.
  • Bun -- In their documentation, they stated they do not yet have tree-shaking and minifying builtin.
  • SWC -- From my experience: does not export .d.ts files for JS back-support, and swcpack is not quite stable yet, but does have minification.

I think Vite or Rollup is our best option to start; switching tooling is not very hard. I was able to switch from webpack to swc in about an hour in my personal projects.

@EricEisaman
Copy link
Collaborator Author

Thanks for your input @DylanBulmer . I like the idea of k8s for developing a basic service mesh for the open-source backend. I will do some explorations with Vite soon.

@DylanBulmer
Copy link

Here are some of my ideas:

Potential dev stacks with deployment strategies in mind (necessary to know now, so we don't need to go back in the future refactoring all our code).

Approach 1 (Node container):

Runtime: Nodejs
Web framework: Expressjs
Websocket framework: SocketIO
Bundler: Vite or Rollup
Containerization: Docker
Deployment: Kubernetes (AWS EKS or similar)

Approach 2 (Node serverless):

Runtime: Nodejs
Web framework: Expressjs and serverless-express
Websocket framework: SocketIO
Bundler: Vite or Rollup
Deployment: AWS Lambda (or similar)

Approach 3 (Deno container):

Runtime: Deno
Web framework: Oak
Websocket framework: deno-websocket
Bundler: Deno? Minify is WIP
Containerization: Docker
Deployment: Kubernetes (AWS EKS or similar)

Approach 4 (Deno serverless):

// I cannot find a quick tutorial that integrates WebSockets into a serverless application
Runtime: Deno
Web framework: deno-lambda
Websocket framework: deno-websocket
Bundler: Deno? Minify is WIP
Deployment: AWS Lambda (or similar)

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

No branches or pull requests

3 participants