A primeira etapa foi a conversão das chamadas de API REST existentes no aplicativo para chamadas de API GraphQL. Ao mudar para o GraphQL, o aplicativo do cliente só precisa saber como fazer uma chamada do GraphQL e solicitar apenas os dados necessários, ele não precisa saber de onde vêm os dados. A padronização do GraphQL para esse aplicativo permitiria que a empresa adicionasse novas fontes de dados e alternasse fontes de dados sem afetar o aplicativo; as consultas do GraphQL permaneceriam as mesmas.
No entanto, normalmente isso significaria escrever um servidor GraphQL e muitos códigos do resolvedor para mapear as APIs para os dados. Quanto menos códigos tiver que escrever e manter, melhor. Como servidor declarativo GraphQL hospedado orientado por configuração, o StepZen facilitou a configuração de resolvedores, eliminando a necessidade de grande parte dos códigos.
Nemanja Niciforovic, MD e líder de engenharia da Work & Co, explica: "Com a API GraphQL no Mavenlink, podemos criar um aplicativo interno em questão de semanas que nos permite visualizar e planejar nosso gerenciamento de recursos de forma rápida, precisa e fácil. O desempenho deste aplicativo é crítico, pois reúne muitas informações. O paralelismo automático do StepZen ajudou muito. Isso também nos ajuda a preparar e dimensionar o futuro à medida que adicionamos serviços de back-end e criamos novos aplicativos na única API do GraphQL."
O Mavenlink tem uma API REST abrangente para gerenciar o acesso a uma ampla variedade de dados de RH e gerenciamento de recursos. Usando a diretiva GraphQL da StepZen — @rest — a Work & Co conseguiu ajustar os dados disponíveis para o aplicativo de diretório de funcionários. Por exemplo, a equipe renomeou de forma fácil os campos na API do Mavenlink para corresponder aos nomes usados no aplicativo, eliminando a carga cognitiva para o desenvolvedor do front-end e reduzindo o número de alterações de código necessárias no aplicativo.
Além disso, a equipe conseguiu simplificar a API do Mavenlink por meio do uso da diretiva do @materializer do StepZen. Isso permitiu definir tipos que incluem dados de múltiplas chamadas de API. Por exemplo, eles adicionaram um tipo de "projetos" ao tipo de "usuário", o que permitiu ao desenvolvedor do aplicativo recuperar projetos ativos de um usuário ao mesmo tempo que recuperava detalhes do usuário, como foto do perfil e endereço de e-mail.
Paginação: a API do Mavenlink limita o número de registros retornados por uma única chamada, aplicando a paginação. O aplicativo da Work & Co não foi criado para suportar o processamento de dados dessa maneira e o retrabalho para o uso da paginação não foi um esforço que eles queriam realizar. Usando a diretiva de sequência @StepZen, a equipe conseguiu paralelizar muitas chamadas REST API para a API do Mavenlink e recuperar todas as páginas de um conjunto de resultados com uma única solicitação de consulta GraphQL.
Ajuste de desempenho: um benefício inesperado dessa abordagem é o ajuste de desempenho. A recuperação de tamanhos de página menores com a API REST resulta em tempos de resposta mais rápidos. Portanto, 10 solicitações paralelas para 200 registros cada leva mais de 20 solicitações paralelas para 100 registros cada. Ao definir as consultas StepZen adequadamente, o desenvolvedor do aplicativo Work & Co foi capaz de fazer o ajuste fino do desempenho das consultas GraphQL.
Segurança e armazenamento em cache: além de todos esses detalhes específicos de implementação, a Work & Co se beneficiou da abordagem geral da StepZen em relação à segurança e ao armazenamento em cache. As configurações de segurança flexíveis permitiram que eles definissem consultas que usam um contexto de segurança de todo o aplicativo, bem como aquelas que usam um contexto de segurança específico do usuário. Esse controle refinado é muito difícil de gerenciar ao usar uma API REST de forma direta; normalmente é um ou outro. O cache automático do StepZen significa que os usuários dos aplicativos têm um desempenho aprimorado sem nenhum esforço no desenvolvimento.