a_smooth_avocado

a_smooth_avocado

Absinthe + Dataloader with clustered microservices

Hi everyone!

I’m planning to develop a microservices-oriented architecture where my Kubernetes (k8s) cluster will support different nodes: an API gateway, authentication (auth), and application (app) services. These will be integrated into a unified cluster using a DNS strategy, with the potential for one or more Elixir nodes per service. The gateway will be built as a Phoenix application featuring an Absinthe GraphQL schema. For communication between the auth and app services, I’m considering using a library like Horde to facilitate calls from the gateway. This setup aims to ensure that requests requiring immediate attention are promptly handled. Additionally, data loading between nodes would leverage similar inter-node communication techniques.

The primary goal is to create a cohesive API “front” that consolidates multiple services into a single GraphQL schema, essentially creating a unified yet flexible schema. This approach will enable advanced functionalities, such as cross-service resolvers and multi-level caching, enhancing the overall efficiency and scalability of the system.

I’m curious about the feasibility of this setup and whether I might be underestimating its complexity. I’m aware of potential challenges, like process replication, but I’m not entirely clear on how these might impact my specific architecture. I have considered doing a single monolith, however this cannot happen due to the security concerns.

First Post!

kirega

kirega

Hi,
I dont know about the feasibility of your proposed solution. However, I would ask you to consider looking at graphql federation, it comprehensively solves the plan to have a single graphql api for a federated microservice.
Check it out here. Introduction to Apollo Federation - Apollo GraphQL Docs

Where Next?

Popular in Questions Top

electic
Hi, I am new to Elixir. I am trying to use the DateTime component to insert a date into MySQL however the there seems to be no way to fo...
New
vertexbuffer
Hello, can anybody help here..? I have a list of players and I what to delete an element, but every for loop the list is reverting to ori...
New
hariharasudhan94
I would like to know what is the best IDE for elixir development?
New
gshaw
What is the idiomatic way of matching for not nil in Elixir? E.g., First way: defp halt_if_not_signed_in(conn, signed_in_account) when...
New
sergio_101
I am VERY much an elixir newbie. I have taken one elixir course and one phoenix course on Udemy. During that course, I saw the instructor...
New
aalberti333
As the title describes, I’m trying to run Enum.map() over a list of key/value pairs, where the value is a map. My data looks like this: ...
New
dblack
I’ve got an issue with an app and I’ve no idea of how to troubleshoot it. I’m hoping someone here might have seen something similar. I p...
New

Other popular topics Top

Brian
What is the proper way to load a module from a file in to IEX? In the python world, doing something like this pretty standard: from ....
New
dokuzbir
I want to highlight html closing tags when i click a html tag. That works in .html files but doesnt work for html.eex templates. How can...
New
Darmani72
If I have a post route which an argument: post /my_post_route/:my_param1, MyController.my_post_handler How would get the post params ...
New
bsollish-terakeet
Credo is smart enough to check for (something like) this: assert length(the_list) == 0 with this response: Checking if an enum is empt...
New
shijith.k
I am trying to start a new phoenix project with elixir 1.9, but mix phx.new does not work. It says that ** (Mix) The task "phx.new" could...
New
sergio
Kind of like when jquery came out, it was super necessary. Existing drag and drop libraries have a bunch of baggage to support old browse...
New

We're in Beta

About us Mission Statement