TECHY.TOOLS / Data / APIs / Microservices / Backend services architectureaffd4b0e-ca25-4b30-b5a5-5732703f49e8

Just from my experience with besta.domains, techy.tools, and new unpublished projects...

Content coming soon! [some Notion.so types are not yet supported]

What API Gateway to use?

Probably RapidAPI, because it's super simple to set up (already have it set up) and monetize. They probably fully support OpenAPI now.

Content coming soon! [some Notion.so types are not yet supported]

What database to use?

Postgres for words/domains, because already have it working. Probably for other data as well.

For full-text search of news/data-mining/bible/quran/wikipedia, probably also Postgres, because I already know how to make efficient ILIKE search indexes, but ElasticSearch would be better.

For user accounts, interactions, settings, any kind of NoSQL data or cache where speed is not very important, tryFauna.com.

Alsofusio-project.orgJavaScript SDK looks very promising for connecting the front-end directly to the database.

Content coming soon! [some Notion.so types are not yet supported]

Backend code quality...

How to make sure a code change doesn't break other logic?

Test all endpoints locally before pushing any new code. Re-test everything always, even for a tiny one line change! Install Git pre-commit hook.

How to make sure a configuration change or server reboot doesn't break the service?

This is a tough one. Sure we could test the service periodically from a 3rd party test suite, but that would catch it too late, after it's already been down for a while. Maybe just test one endpoint every few minutes? Going to have to test all/most endpoints every few minutes usingChecklyHQ, until figure out a better plan.

The trick here is for the test to access the endpoint same way as a client would. So, if using RapidAPI, then the test should request to RapidAPI, using their authentication/headers.

How to make sure a 3rd party service change doesn't break the service?

UseChecklyHQ.comto periodically test each endpoint, without cache, to make sure the same data is returned each time.