Farael49 / java-web-frameworks

Comparison between popular Java frameworks
0 stars 0 forks source link

Comparing frameworks : #1

Open Farael49 opened 3 years ago

Farael49 commented 3 years ago

Spring (boot) / Quarkus / VertX / Micronaut .. -> How to compare ? Ease of coding, docs, community how perf can be compared btwn these (can be a major factor for people when choosing a fmwk) Probably need a deep dive on each and a simpler version w/ advantages/cons

Farael49 commented 3 years ago

Hello Worlds are done, need to establish a project to use the frameworks. Thinking about using https://github.com/gothinkster/realworld/tree/master/api

Farael49 commented 3 years ago

There are already Spring, VertX & Quarkus examples which can serve as a decent basis to look at while building the project. They all have their own way on doing the project, however I'll try to stick to a single architecture across all the fmwks to ease the coding & comparison.

Farael49 commented 3 years ago

Finally had a bit of time to think about the real world version as expected it's quite a bigger take, lots of possibilities to tackle this

Monolith vs Microservices -> A msa seems like a really good fit here. The projects configuration may be simpler (as I shouldn't have to deal w/ conflicting configurations btwn DBs and so on), if I stick to a "naive" MSA (simple projects without cloud-aware config, gateways, service registry, circuit breakers, ..) ... Not sure how comparing performance will fare (as it's local, shouldn't have much network related issues, but I have to monitor a lot more..).

Domains -> Splitting the needs I'm currently seeing the followings Auth (login oauth JWT) Profile (CRUD) Follower (CRUD) Article (CRUD, feed w/ simple filters, could add a dedicated search svc later) Comment (CRUD) Favorite (CRUD) Tag (CRUD)

(CRUD is a shortcut, the 4 operations may not always be needed)

Most of the services seem to be simple CRUD, complexity might come when returning data efficiently. Although I originally wanted to take a CQRS approach, I currently don't see a huge need for it. It could be a case for the dedicated CQRS lab's topic. Note about the feed : "will return multiple articles created by followed users, ordered by most recent first."

Technologies -> Should keep it simple, I'd like to throw a Cassandra and/or Redis at it for a change (which I'll probably regret when configuring these..) . I'll build a Docker img for each project (taking into consideration the tools provided by each fmwk).

As these projects can be quite huge, i'm thinking about splitting them in multiple repositories (a repo per fmwk? Or per service?). This can be done later.

Farael49 commented 3 years ago

Source for a bit of JVM analysis https://blog.arkey.fr/2020/06/28/using-jdk-flight-recorder-and-jdk-mission-control/

Farael49 commented 3 years ago

Cassandra : http://adamhutson.com/