I know that this is going to be a really broad topic but I have come to a point that I need guidence with my first steps on this matter.
I started working for a startup company related with financial services at the end of last year. It provides loans and micro credit services, it has plans to incorporate digital wallet services and also add multicountry operations.
After working with support and daily issues, I've been assigned to start rebuilding the complete backend architecture and codebase. The replacing technology has been chosen, we are going to remove legacy versions of PHP and Laravel code and start working with .NET Core 3.1 and C# language. The idea of course is to make it in a progressive way, replacing small units of funcionality mostly on the client apps that consumes the APIs.
The current backend environment consists of 3 repos:
- A custom back office system: PHP 7.1.33 + Laravel 5.1.46 (BE) | AngularJS (FE)
- Packages project (third parties integration and some business logic encapsulation): PHP 7.1.33
- Web API: PHP 7.1.33 + Laravel 5.2.45
I have always worked with already established architecture, so this is will be my first encounter with these kind of important decisions. I'm currently overwhelmed with the amount of information I've been reading about architecture patterns and design patterns. I don't even know where to start.
I have gathered some information about what kind of issues the current stack has, apart from deprecated versions. So this is important to have in mind.
What kind of procedure would you suggest? Should I create some proof of concepts projects? I'm having trouble to make decisions on which is going to be the most adequate combination of patterns , technologies or libraries.
My background as a developer has always been .NET variantions (+6 years exp) so there is no trouble with that. But for example, when it comes to choosing between Onion/Layered/Clean, Vertical Slices or Microservices architectures it is really difficult which suits better. The same happens with design patterns like Repository or CQRS.
I have little experience working with DDD (at least that I'm aware of using it consciously), perhaps this kind of business is a great opportunity to apply it. I decided to start reading Eric Evan's book but it's going to be a long road.
Let me know if more information is needed.
I would really appreciate your knowledge and experience.
In terms of the broad approach to tackling any new engagement as solution architect this material may help: https://morphological.wordpress.com/2021/01/27/your-first-project-where-to-start/ If nothing else it will give you some structure in terms of your approach and the big picture.
You need to focus on this mantra: "what problem do we need to solve". Firstly so that you focus on the problems and don't put the technology first. Also to think about what your problems are - prioritize them, and break big problems down into smaller more manageable ones.
Some slightly more specific advice
General Advice about Patterns and Technology Selection