Welcome to This Is My Architecture, I'm Francesco Morelli from AWS.
Today I'm with Pamela Gotti from Credimi.
- Hi Francesco. - Hi Pamela, welcome.
Can you tell us what you do at Credimi?
Yes, Credimi is a start-up that operates in FinTech and deals with advance invoicing.
Can you tell us what type of solutions you have implemented with AWS?
Today I wanted to tell you about the application that we use
to allow users to upload an invoice onto our portal.
Generally the user gets to our platform,
does a KYC totally online and then can upload the invoices.
After the approval of the risk team
the invoices can be sent with just one click
and the money is received within the timeframe of a bank transfer
rather than having to wait for the usual 60, 90 or 120 days.
- Can you tell us about the application flow? - Using a browser , the user accesses the app
which is made of a series of micro-services.
Through a load balancer
accesses the micro-services deployed on a EC2 fleet
that are orchestrated through Kubernetes.
Our micro-services are written mainly in Scala
and there is a micro-service for each domain.
For example a micro-service that handles users and companies,
the one in charge of sending email notifications and sms to our clients
and the one that manages the invoices, which I am going to describe.
When the user uploads an invoice on the platform
he communicates with the micro-service that manages the invoices,
which uploads the invoice on a S3 bucket,
typically in a PDF format.
At the same time,
an entry in a RDS MySQL is created
with the metadata that needed to retrieve the invoice later.
How did the new electronic invoicing system allow you to evolve this application?
The electronic invoice entered into force at the beginning of this year.
We obviously had to adapt our infrastructure
to manage also the electronic invoicing in XML.
We tried to keep everything as similar as possible to the old implementation
to cut the costs for development.
Then we decided to do a little adjustment to the invoicing micro-service,
which now always creates the invoice on RDS.
It also uploads the electronic invoice on S3 in a XML format.
By uploading XML,
it adds the ID of the invoice saved as metadata on MySQL.
How do you extract data from XML now?
We decided not to change the existing micro-service
but to add instead a Lambda that, when the invoice is created,
takes the metadata we need from it,
for example the issue date or the nominal amount
and it saves them using the invoice ID saved previously,
again on RDS.
At this stage, through Kafka,
we have a specific micro-service that detects
if there are any new data on the invoice,
can show the price of the invoices and show them to the user
so that they can advance them.
So at the moment you are using a Kafka that you manage yourself.
Correct. But we are thinking of moving to MSK.
Oh, great idea.
So you use a structure that is totally serverless and based on events. Very interesting.
How do you manage disaster recovery and backup for this app?
We have both EC2 and RDS on Multi-AZ.
For RDS we also have snapshots replicated on various regions.
- So your data are definitely safe. - Yes.
Great, a very interesting case. Thanks Pamela.
- Thank you. - Thanks.
And thanks to you all for watching This Is My Architecture.