~

Backend Thinking

Backend Role

Transform business requirements to action, which usually involves:

After successfully do all of that, next step is:

In ZaloPay, each team has its own responsibilites/domains, aka many different services.

Ideally each team can choose custom backend techstack if they want, but mostly boils down to Java or Go. Some teams use Python for scripting, data processing, ...

Example: UM (Team User Management Core) has 10+ Java services and 30+ Go services.

The question is for each new business requirements, what should we do:

Example: Business requirements says: Must match/compare user EKYC data with Bank data (name, dob, id, ...). TODO

TODO: How to split services?

Technically side

How do services communicate with each other?

First is through API, this is the direct way, you send a request then you wait for response.

HTTP: GET/POST/...

Example: TODO use curl

GRPC: use proto file as constract.

Example: TODO: show sample proto file

There are no hard rules on how to design APIs, only some best practices, like REST API, ...

Correct answer will always be: "It depends". Depends on:

Why do we use HTTP for Client-Server and GRPC for Server-Server?

Take a look at stripe API to get quick grasp about real world API.

My own experiences:

Bonus

TODO

References

Feel free to ask me via email or Mastodon.
Source code is available on GitHub Codeberg sourcehut Treehouse GitLab