GaProgMan / bookApi

An API and UI for a fake book search engine - built entirely in the open, on Twitch
https://twitch.tv/gaprogman
MIT License
2 stars 0 forks source link

Codebase Refactor #10

Open GaProgMan opened 3 years ago

GaProgMan commented 3 years ago

Description

The API project is currently a single project, consider moving it to an n-tier, onion/hexagonal, or package based architecture.

N-tier architecture here means that the project is separated into separate tiers (each being a project) and one tier can only reference the tiers directly above and below it. An example would be:

Onion architecture is similar to n-tier, but any tier/project can reference any other tier that it requires.

Packaged based architecture here means that each "layer" of the tier is sliced away and created as Nuget packages, with each package referenced by and pinned to a specific version number.

High-Level Proposed Solution

Considerations

For simplicities sake, I would recommend either n-tier or onion/hexagonal architecture. This way we aren't clogging up development time with complexity. If it is decided, later in the project, that we need to move to a more microservices-based architecture then we can revisit the package based architecture. But for now, we are creating a BfF rather than a microservices-based application.

Requirements