System Design (Part 2)
So from Part 1 we know how we are actually accessing the servers.
Let’s talk about Application Architecture :
In this servers talks to several services like Authentication, Registration and also there can be separate APIs through which these servers can create a system and send emails and so on.
Emails and other stuff are mostly done using the REST API or gRPC API (which basically connects services across different data centers), or Message Queues.
So, having in mind that we know what APIs are, let’s deep dive into the Microservices based infrastructures.
Before that, let us get familiar with the REST API and the gRPC API.
Talking about REST, it is the most popular and widely-used form of API used to connect microservice-based infrastructure.
On the other side, gRPC is the newest and is not very compatible with many system tools. So, it is basically used for building internal systems.
If compared, gRPC is much better with respect to REST. As it is not yet widely adopted, even though the throughput of communication is much faster and more effective in microservices-based infrastructure, due to the universal support and risk of adoption in older systems, it isn’t expanding gradually, but we will be seeing gRPC in the near future of APIs on a vast scale.
Let’s get into the Service Interfaces in Microservices based infrastructure.
We can say service Interfaces are the storages that applications might use for storing different sorts of data.
And these are connected to servers through APIs, which we already saw in the previous part (Part 1)
There are many Service Interfaces, let’s talk about them one by one : )
Database : It is basically used to store the application data. e.g., SQL, NoSQL, Graph, etc.
Caching : It is a place where we store the result of expensive computations to save time and resources. e.g., Redis, Memcached.
(If we have a query or a calculation that takes a few seconds, then we can store them in the caching layer and make the subsequent request quite fast.)
Cloud Storage : It is a place where we store files, databases, and so on. e.g., AWS, GCP, etc.
Data Warehouse : It is a place where we dump loads and loads of data to perform analysis on them. e.g., AWS firehose, Snowplow etc.
Logging Service : It is used to monitor and check the logs to ensure that everything is working properly. e.g., ELK Stack.
Messaging/ Queues : It is used to perform background or asynchronous separation. e.g. RabbitMQ.
(This is basically used when we use registers and we want to trigger them via email or to notify customer support, then we use messaging and queue service.)
Search Engine : It comes with full Text Search Capabilities in an application (if implemented). e.g., Sphinx, Elastic Search, and Apache Solr.
There are also other services out there that we can use if we want.
Those are of some in-depth usage, but if someone wants, he/she should go through them for sure : )
Now I think this is it for now, but if something else is needed, I’ll get it done in the next part. For now, I guess this is enough.
Keep Hustling : )