Open Farael49 opened 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
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.
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.
Source for a bit of JVM analysis https://blog.arkey.fr/2020/06/28/using-jdk-flight-recorder-and-jdk-mission-control/
Cassandra : http://adamhutson.com/
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