Hello, welcome to another episode of 'This is My Architecture'.
I'm José, and I'm with Jesús, from Enimbos, how are you, Jesús?
-Hi José, delighted to be here with you. -Well, what do you do at Enimbos?
At Enimbos we are a company
founded in 2016, and we help clients use cloud services.
We offer migration services, with 24/7 support,
Finox and Government services.
And since October 2020, we have been part of Accenture.
Very well, and what kind of architecture are you describing for us today?
Well, it is the architecture of an application that we have developed internally.
And well, the application allows us to automate tasks
that are normally routine in the cloud world,
and do it in a super simple way, both for our own devs,
as well as for customers, who can also use it.
And as for the architecture, it is a typical two-layer architecture.
On the front we can see how the users
access a front
developed in VMware, in JavaScript, which is stored
in an S3 package, users would enter via a WAF,
for security reasons. Well, we may have many requests,
Java also needs to be here.
From the WAF we go to the CloudFront,
and from CloudFront, we attack the application that we have hosted on an S3.
And CloudFront, why are you running it in front of the S3?
Well, CloudFront, above all, is to improve the end user experience.
In other words, it is not that expensive, and it really improves the experience.
In addition, security, a WAF goes ahead and...
Of course, yes of course. Maybe caching the static packages from the S3.
-Exactly. -And this back-end part? What would your flow be like?
Well, once the user has the front, which is his device,
the front end attacks the back end of the application via API Rest,
the applications will enter through the API Gateway.
In the API Gateway, we have a balancer in the middle, but the calls are already being made
to the microservices.
We have these microservices orchestrated in an ECS cluster.
And when it is necessary to go for persistent data,
we go
to the RDS database, a MySQL RDS that we have.
And here, I see that you have used far gate.
Why did you choose far gate?
Well, for simplicity.
The truth is, we did tests and in addition we saw that it saved us costs,
and we also saw
that it made it easier for us to not worry about managing instances.
Could it be an RDS code? How do you scale them?
At RDS we have a system set up that allows us to
have Read Replicas, we deploy Read Replicas depending on the load.
At the end we have an alarm configured in CloudWatch,
that, according to the load that the database is having,
starts deploying different Read Replicas.
And we make sure that the microservices, when they do
read calls, there can only be these Read Replicas.
Alright, and I see you mentioned CloudWatch,
I see that you are also using CloudWatch events,
What function do you use on this platform?
Well, we use CloudWatch Events as a programmer.
In the end, it is an application that helps you
to automate tasks and these tasks are the ones that are scheduled.
So, CloudWatch Events runs every minute.
That one-minute frequency
wakes up a daemon we have in the ECS cluster,
the ECS cluster looks for
the tasks you have to do when CloudWatch Events is launched,
and let's say, what it does is that, those tasks that it takes,
it stores them, divides them,
it sends them to an SQS queue.
Why? To undock the application with the SQS.
It is responsible for having the work stored.
And then we have other services
taking those other services.
Those other services inside, they are microservices,
they auto-scale according to the size of the SQS.
So, let's say
the execution of events is decoupled.
A decoupled reading to be able to scale
the ECS cluster as required by the platform.
-Precisely. -Very well.
Well, in a short, medium term,
what improvements do you see in the platform?
Well, we are evaluating two,
above all, it improves the backend part.
We are seeing two roads, the first one we are going to send to Aurora, it is quite simple.
There, we will test Aurora's auto-scaling.
And the second pair that we are going to take, and that can also go in parallel
for certain things, is to start taking tables that we have identified
inside MySQL and start using non-SQL technology,
well, specifically DynamoDB is what we are using.
Very good, very good idea.
Well, thank you very much, Jesús, for joining us today.
You're welcome, José, thank you.
Well, thank you very much for watching this episode of 'This is My Architecture'.
See you in the next chapter.