off-topic

https://github.com/clojurians/community-development/blob/master/Code-of-Conduct.md Clojurians Slack Community Code of Conduct. Searchable message archives are at https://clojurians-log.clojureverse.org/
solf 2021-01-05T11:42:29.463800Z

Is there a name I can google for this architectural choice: micro-services from a single binary. I see no reason to split the codebase for a few services that share 90% of code, even abstracting that to a library seems overkill. Instead I have a single binary started with different options (`./binary --action A|B|C` for services A, B or C)

vemv 2021-01-06T15:28:55.480100Z

maybe "modular monolith" will give you some hits on Google anyway, that sounds a lot like https://github.com/polyfy/polylith !

rutledgepaulv 2021-01-07T01:41:23.013100Z

https://clubhouse.io/blog/monolith-meet-mono-repo/

👍 1
orestis 2021-01-05T12:28:48.465900Z

@dromar56 I don’t know of a name, but I’ve had the same idea (well, for Clojure) — just provide different entry points, and potentially with deps.edn different dependencies. So we have a monorepo with two entry points, the main app and the support-backchannel-app …

borkdude 2021-01-05T12:30:35.466500Z

@dromar56 There are Java frameworks which can do this: quarkus is one of them

borkdude 2021-01-05T12:30:44.466700Z

they compile with GraalVM native-image

borkdude 2021-01-05T12:31:07.467200Z

but of course you can also build one using Clojure. I don't know if there is a name for this. Golang projects do this by default, since golang compiles to binary - also Rust.

borkdude 2021-01-05T12:32:30.467800Z

Ah, so you want to package multiple services within one artifact with the same main method. Yeah, why not.

solf 2021-01-05T12:39:07.468Z

Actually I do have multiple mains, and my actual call line looks more like clj -m A|B|C, but I consider that implementation details. I'm more interested in pro/cons from an architectural point of view. It seems like the common monolith vs micro-services debate, but it's a monolith that is deployed as micro-services

valtteri 2021-01-05T15:46:05.472Z

What are the architectural goals you’re trying to achieve?

valtteri 2021-01-05T15:49:07.475900Z

Clean separation of modules, responsibilities etc can be achieved using both. It requires more discipline with monolith though. Fine grained scalability is easy to achieve with microservices, if that’s a a goal.

➕ 1
polymeris 2021-01-05T16:00:50.477Z

Not sure how JS proposals work, but there is one for immutable data structures 😮 https://github.com/tc39/proposal-record-tuple

souenzzo 2021-01-05T16:35:03.477400Z

clojure did defrecord in ~2012 python implemented dataclass these days java 16 will have record Now JS 🙂 The great about clojure is that it's has nothing new.

👍 3