Hello again my dear reader, this is the 'Log' of the second meeting about Portfel project, where me and my friend Cesar discussed with a little more details what we want or not want our application to do. If you did not read the first meeting post, please read it here before you start this one.
In this meeting we simply discussed a little more what we already discussed in the first meeting, so as a small spoiler we detailed how the 'User Management Service' will work and how it will interact with 'Wallet Management Service' and so on and so forth. To finish this introduction spoilers we discussed a bit further how we imagine will be the sctructure of the application as a whole. So stay tunned (90's called the expression back) and let's go to the point.
The whole structure
It was defined that the application will be composed by a series of Docker images orchestrated by a Docker Compose application. All services (except database/service communication and frontend/backend communcation) will communicate between each other using Kafka, because then we can manage the requests without losing any of them in case we have way more requests that we can process.
Kafka will be discussed with more details when I post the meeting about creating a Kafka docker image for our application, but, in short, Kafka is a queue application and as a queue in real life we will have one application in one side of this queue, queueing requests and in the other side one application dequeueing these requests and processing them so when it finishes the response, the application will queue it in another queue to be dequeued by another application waiting in the other end.
Besides Kafka image we will have the following docker images in this application:
- Web front-end image
- User database image
- Wallet database image
- User management back-end service image
- Wallet management back-end service image
- A REST service to connect the front-end and back-end image
- The already quoted Kafka image
User Management Service
This service will manages user authentication and authorization and it will composed by 3 parts:
- A MongoDB Database for storing the user data(which we haven't decided yet what data we will store)
- A Backend application written in Scala to manage the authorization and the authentication
- A Front-end application for logging in actions written using Webpack, (Angular or React) and Scss
This is to be written as an OAuth service so it shall work granting access to certain areas based on an user role, the sessions will expiry after X hours and most important it should be secure so nobody(it includes us the developers and whoever is working in other IT areas in the 'company') besides the user will have access to their data.
Another short meeting with few new details added. Believe it or not it took us almost 3 hours to define these changes and in the end we simply defined that we will have at least 7 Docker images being controlled by Docker Composer. As always, as soon as my friend post his post in his blog about this meeting I'll update this post here and put the link to you so you can have a different perspective about the project. See you in the next post, bye.