moleculerjs / moleculer

:rocket: Progressive microservices framework for Node.js
https://moleculer.services/
MIT License
6.16k stars 584 forks source link

Awesome work! Please provide a roadmap or status of sorts #8

Closed kristianmandrup closed 7 years ago

kristianmandrup commented 7 years ago

Just curious how far you are and what is still missing/planned for a prod ready release.

How that is stack up to other contenders such as seneca? pros/cons?

Cheers!

icebob commented 7 years ago

Thanks. This is my side project, so I'm developing when I have free time, but I think, ~70% ready.

I created a roadmap from my TODO list.

Pros: I think the main advantage of Moleculer is the performance. I benchmark & optimize every main parts of the framework. And I'm choosing fast 3rd party libs exhaustively.

A sample of performance: local calls (service to service calls in the same process, no network communication) Seneca: 5,100 ops/sec Moleculer: 833,197 ops/sec

Other advantage is the 3 kinds of running architectures. Moleculer supports microservices arch (every services are on single nodes), mixed arch (multiple services are running on nodes) and monolith arch (all services are running on only one node). In this example you can run the same repo in any architectures (with docker). Just need to set service names with env vars and set transporter.

Other pros:

Cons:

kristianmandrup commented 7 years ago

Cool :) Amazing stats!

I will gladly help when I have time. I propose to work on the CLI tooling (given you provide some skeletons to target for generation). I have quite a lot of experience on that front.

I also used metalsmith 2 years ago for static site generation (such as docs). I also think the "official API gateway service" is key.

I recommend adding https://www.zenhub.com/ for simple Project management on remaining tasks. Cheers!

icebob commented 7 years ago

It's awesome! Thanks in advance!

The CLI tool would be useful for new users. In the next week I'll try to create skeleton for project & service generators.

I didn't use metalsmith, so it would be good, if you can help with it.

I started to create some basic API gateway. In examples has an Express based gw. But Express is slower than built-in nodejs http module. So I created an other too with only http. But both is too simple currently. Just expose the broker.call to http requests. No param validation, no authentication...etc. But I'm working to improve it.

I would like to create some "official" services for main functions (api, metrics, central logging, monitoring, stats, db handlers...etc). But only if the core is ready.

Zenhub is a good idea. I don't know it, but I'll register.

Cheers!

kristianmandrup commented 7 years ago

Sounds great with the CLI plan.

I have a lot of experience with Koa2, the successor to Express.. Much more modular and uses generators for handling request/response non-blocking.

Since Node v7.6.0, uses V8 5.5+, bringing async functions natively to Node.

Otherwise consider Hapi (of Walmart fame) which has plugins for all your needs mentioned.

Zenhub is very easy and cool. Much better project management integrated directly in the browser on the github project!

icebob commented 7 years ago

I registered to Zenhub. But I don't know, you see the same board?

What libraries do you want to use for CLI? Which syntax do I use in templates? {{name}} ?

kristianmandrup commented 7 years ago

Yes, I see the boards

I would use plop as the project generator with prompts, actions etc.

Wrapped with a CLI looks like yargs is the way to go (builds on minimist). For simple cases just minimist

kristianmandrup commented 7 years ago

I'm considering using aither for now to hit the ground running but would gladly help out a little with your CLI and static docs site.