# microservice-architecture

Published articles for microservice-architecture.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Streamlining GraphQL Service Testing with Karate

DevFeed: [Streamlining GraphQL Service Testing with Karate](<https://devfeed.tech/articles/streamlining-graphql-service-testing-with-karate-28047.md>)

Original publisher: [Read original article](<https://tech.trivago.com/post/2024-07-08-streamlining-graphql-service-testing-with-karate/>)

Author: Armin Aminian SRE; Cloud Native technologies GitHub profile Linkedin profile

Published: 2024-07-08T00:00:00Z

Content type: article

Language: en

Sources: [Trivago](<https://devfeed.tech/sources/trivago.md>)

Topics: [GraphQL](<https://devfeed.tech/topics/graphql.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Microservice](<https://devfeed.tech/topics/microservice.md>), [API](<https://devfeed.tech/topics/api.md>), [gateway](<https://devfeed.tech/topics/gateway.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [backend](<https://devfeed.tech/tags/backend.md>), [devops](<https://devfeed.tech/tags/devops.md>), [gateway](<https://devfeed.tech/tags/gateway.md>), [graphql](<https://devfeed.tech/tags/graphql.md>), [integrity](<https://devfeed.tech/tags/integrity.md>), [microservice-architecture](<https://devfeed.tech/tags/microservice-architecture.md>), [quality-assurance](<https://devfeed.tech/tags/quality-assurance.md>), [release-engineering](<https://devfeed.tech/tags/release-engineering.md>), [rest](<https://devfeed.tech/tags/rest.md>), [schema](<https://devfeed.tech/tags/schema.md>), [services](<https://devfeed.tech/tags/services.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

The article describes trivago's move from a GraphQL monolith to a federated microservice architecture and explains the testing challenges this creates. It covers complex nested queries, schema validation, relationships, data integrity, and GraphQL's partial-data error responses.

### Source excerpt

Over the last year trivago refactored the existing GraphQL monolith and moved to a microservice architecture, in what is also known as a federated setup. Federated GraphQL, as championed by Apol...

## Micro Service Events (AWS EventBridge vs. SNS)

DevFeed: [Micro Service Events (AWS EventBridge vs. SNS)](<https://devfeed.tech/articles/micro-service-events-aws-eventbridge-vs-sns-23899.md>)

Original publisher: [Read original article](<https://medium.com/smg-real-estate/micro-service-events-aws-eventbridge-vs-sns-2d86b5919c22?source=rss----2186e5b9bd8f---4>)

Author: Kristian Müller

Published: 2022-09-16T12:06:51Z

Content type: comparison

Language: en

Sources: [Homegate Engineering Blog - Medium](<https://devfeed.tech/sources/homegate-engineering-blog-medium.md>)

Topics: [event driven](<https://devfeed.tech/topics/event-driven.md>), [Messaging](<https://devfeed.tech/topics/messaging.md>), [Amazon Web Services](<https://devfeed.tech/topics/aws.md>), [Amazon Simple Queue Service (SQS)](<https://devfeed.tech/topics/amazon-simple-queue-service-sqs.md>), [Publish-subscribe pattern](<https://devfeed.tech/topics/pubsub.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [AWS Lambda](<https://devfeed.tech/topics/aws-lambda.md>), [Amazon API Gateway](<https://devfeed.tech/topics/amazon-api-gateway.md>), [DynamoDB](<https://devfeed.tech/topics/dynamodb.md>), [Amazon S3](<https://devfeed.tech/topics/amazon-s3.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [api-gateway](<https://devfeed.tech/tags/api-gateway.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [aws](<https://devfeed.tech/tags/aws.md>), [aws-eventbridge](<https://devfeed.tech/tags/aws-eventbridge.md>), [aws-sns](<https://devfeed.tech/tags/aws-sns.md>), [data](<https://devfeed.tech/tags/data.md>), [data-processing](<https://devfeed.tech/tags/data-processing.md>), [database](<https://devfeed.tech/tags/database.md>), [dynamodb](<https://devfeed.tech/tags/dynamodb.md>), [event](<https://devfeed.tech/tags/event.md>), [event-driven](<https://devfeed.tech/tags/event-driven.md>), [eventbridge](<https://devfeed.tech/tags/eventbridge.md>), [eventbus](<https://devfeed.tech/tags/eventbus.md>), [events](<https://devfeed.tech/tags/events.md>), [gateway](<https://devfeed.tech/tags/gateway.md>), [lambda](<https://devfeed.tech/tags/lambda.md>), [messaging](<https://devfeed.tech/tags/messaging.md>), [microservice-architecture](<https://devfeed.tech/tags/microservice-architecture.md>), [s3](<https://devfeed.tech/tags/s3.md>), [sns](<https://devfeed.tech/tags/sns.md>), [sqs](<https://devfeed.tech/tags/sqs.md>), [typescript](<https://devfeed.tech/tags/typescript.md>)

### AI overview

This article examines Homegate's event-driven microservice architecture on AWS and compares Amazon SNS with EventBridge as messaging infrastructure. It describes how services use SNS, SQS, Lambda, API Gateway, DynamoDB, and S3, and explains that EventBridge has a different focus, so replacing SNS is not necessarily the right question.

### Source excerpt

During the last few years, we've been busy rebuilding the Homegate platform in an event driven, micro service architecture based on AWS. One of the most important buildings blocks, or shall we rather say the mortar that connects the building blocks, is the way our services send events to each other. While Amazon offers its notification service SNS since more than 12 years; in 2019 it started a newcomer in the messaging bus field by introducing EventBridge. This was very interesting to us as we're using SNS a lot. Bus on a Bridge (Photo by "Blue Elf" on Wikimedia Commons) As EventBridge was introduced and gained traction we asked ourselves what advantaged we would gain by switching our SNS based service glue to EventBridge. Maybe this turned out to be the wrong question for us. Let's look at our system to see why. Micro Services Connected by SNS Homegate is connecting dozens of services via SNS right now. Those services range from single purpose Lambda functions written in TypeScript to database heavy services using Aurora or DynamoDB and Step Functions sending events to other services. Some of the services are also interfacing external APIs such as Salesforce or SendGrid. Here our Lambda functions can call APIs when needed. On the other hand, we have web services to be called as APIs by other systems and end users. This is mostly achieved via API Gateway. A typical service connects to the system by subscribing to events needed to fulfill its purpose. Those inbound SNS events are then ingested via SQS allowing for orderly data processing and DLQs to handle errors. Outgoing results are pushed back to the system in form of events to a SNS topics. As Marko Savic has pointed out, we're also utilizing S3 to store and replay those events if needed. Basic AWS Lambda function connected via SNS If we would replace the SNS topic by streams on the EventBridge we would initially gain the same functionality by utilizing SQS as well. However, EventBridge has a different focus. Let

## The Evolution of GraphQL at Scale

DevFeed: [The Evolution of GraphQL at Scale](<https://devfeed.tech/articles/the-evolution-of-graphql-at-scale-23536.md>)

Original publisher: [Read original article](<https://www.apollographql.com/blog/the-evolution-of-graphql-at-scale>)

Author: Andy Roberts

Published: 2020-11-12T11:25:01Z

Content type: tutorial

Language: en

Sources: [Apollo Blog](<https://devfeed.tech/sources/apollo-blog.md>)

Topics: [GraphQL](<https://devfeed.tech/topics/graphql.md>), [Microservice](<https://devfeed.tech/topics/microservice.md>), [Front end](<https://devfeed.tech/topics/frontend.md>), [BFF](<https://devfeed.tech/topics/bff.md>), [API](<https://devfeed.tech/topics/api.md>), [Structured-data](<https://devfeed.tech/topics/structured-data.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [backend](<https://devfeed.tech/tags/backend.md>), [bff](<https://devfeed.tech/tags/bff.md>), [development](<https://devfeed.tech/tags/development.md>), [frontend-development](<https://devfeed.tech/tags/frontend-development.md>), [graphql](<https://devfeed.tech/tags/graphql.md>), [microservice-architecture](<https://devfeed.tech/tags/microservice-architecture.md>), [schema](<https://devfeed.tech/tags/schema.md>)

### AI overview

This article explains how organizations evolve GraphQL after an initial proof of concept reaches production. It compares monolithic GraphQL APIs, backend-for-frontend implementations, and Federation, while discussing the organizational and architectural trade-offs involved.

### Source excerpt

Most organizations' adventures with GraphQL start with one team looking for a way to solve one of the most significant frontend development problems in a microservice architecture: how to get all the data your app needs without making a million and one service calls. For a frontend engineer, that promise of getting all the data they need, in the exact shape they envision using it (and with only a single request) is often too hard to resist. It's here where a proof of concept comes to fruition.

## Apollo Federation

DevFeed: [Apollo Federation](<https://devfeed.tech/articles/apollo-federation-23185.md>)

Original publisher: [Read original article](<https://www.apollographql.com/blog/apollo-federation-f260cf525d21>)

Author: James Baxley III

Published: 2019-05-01T22:00:00Z

Content type: release

Language: en

Sources: [Apollo Blog](<https://devfeed.tech/sources/apollo-blog.md>)

Topics: [GraphQL](<https://devfeed.tech/topics/graphql.md>), [Microservice](<https://devfeed.tech/topics/microservice.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [data](<https://devfeed.tech/topics/data.md>)

Tags: [announcement](<https://devfeed.tech/tags/announcement.md>), [apollo](<https://devfeed.tech/tags/apollo.md>), [apollo-federation](<https://devfeed.tech/tags/apollo-federation.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [declarative](<https://devfeed.tech/tags/declarative.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [graphql](<https://devfeed.tech/tags/graphql.md>), [launch](<https://devfeed.tech/tags/launch.md>), [microservice-architecture](<https://devfeed.tech/tags/microservice-architecture.md>), [monolithic-architecture](<https://devfeed.tech/tags/monolithic-architecture.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [product](<https://devfeed.tech/tags/product.md>), [schema](<https://devfeed.tech/tags/schema.md>), [services](<https://devfeed.tech/tags/services.md>)

### AI overview

Apollo introduces Apollo Federation, an open-source architecture for building a distributed GraphQL graph across microservices. It aims to replace schema stitching by letting teams declaratively compose a unified graph while owning separate portions of the schema.

### Source excerpt

What if you could access all of your organization's data by typing a single GraphQL query, even if that data lived in separate places? Up until now, this goal has been difficult to achieve without committing to a monolithic architecture or writing fragile schema stitching code. Ideally, we want to expose one graph for all of our organization's data without experiencing the pitfalls of a monolith.

## Monolith to Microservice: Architecture Behind V2 Webhooks

DevFeed: [Monolith to Microservice: Architecture Behind V2 Webhooks](<https://devfeed.tech/articles/monolith-to-microservice-architecture-behind-v2-webhooks-35100.md>)

Original publisher: [Read original article](<https://engineroom.teamwork.com/monolith-to-microservice-architecture-behind-v2-webhooks-27789c36ace9?source=rss----cea4eecd5960---4>)

Author: Paulius Jakimavičius

Published: 2017-09-11T15:09:33Z

Content type: article

Language: en

Sources: [Teamwork](<https://devfeed.tech/sources/teamwork.md>)

Topics: [Microservice](<https://devfeed.tech/topics/microservice.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>), [HTTP](<https://devfeed.tech/topics/http.md>), [JSON](<https://devfeed.tech/topics/json.md>), [XML](<https://devfeed.tech/topics/xml.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [callback](<https://devfeed.tech/topics/callback.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [go](<https://devfeed.tech/tags/go.md>), [http](<https://devfeed.tech/tags/http.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [json](<https://devfeed.tech/tags/json.md>), [microservice-architecture](<https://devfeed.tech/tags/microservice-architecture.md>), [sha256](<https://devfeed.tech/tags/sha256.md>), [teamwork](<https://devfeed.tech/tags/teamwork.md>), [teamwork-project](<https://devfeed.tech/tags/teamwork-project.md>), [webhooks](<https://devfeed.tech/tags/webhooks.md>), [xml](<https://devfeed.tech/tags/xml.md>)

### AI overview

This article explains the redesign of Teamwork Projects webhooks from a monolithic implementation to a Go microservice. The update supports multiple webhooks per event, sends complete datasets in JSON, XML, or form format, adds SHA-256 checksums, and uses more frequent retry intervals.

### Source excerpt

We've recently released an update to the Teamwork Projects webhooks feature and I was asked to do a tech talk on the topic, a recording of which can be found below. This article is a rough summary of the talk with further elaboration of the thought process behind some of our decisions, but in summary: We have a microservice written in Go. We now support multiple webhooks per-event We send full datasets in chosen format (JSON, XML or Form) We offer better security and integrity with sha256 checksums We have more frequent retry intervals. https://medium.com/media/1208334bf98663ab7d55e4d2eaad4c95/hrefWhat are Webhooks? The basic idea of webhooks is simple -- it's a HTTP POST call triggered when some event occurs. You can think of it like a JavaScript callback, except it's a HTTP POST that can be sent anywhere, to anyone -- not limited to a single codebase or domain. In the case of Teamwork Projects, we have a set list of possible events you can subscribe to, denoted in OBJECT.ACTION style, so for example TASK.CREATED or MESSAGE.DELETED. Previous Approach (v1) Our original approach was no more complicated than the concept of webhooks itself -- when any of the supported actions are taken in Projects, a "fireWebhook" function is called, which checks if they're enabled and if there is a webhook set up for that event. If all is good -- we make a cfhttp call to the relevant URL with the item ID, item type and the action taken, all encoded as form data. Now there are a few limitations with this approach which showed up as the number of webhook users increased over time: Only one webhook per event -- although it made sense as a sort of anti-spam measure initially, this resulted in a few inconveniences for our customers. For example, a user sets up a TASK.CREATED webhook that notifies a custom service which adds the task ID to their internal database. This would make it impossible for them to later set up, say a Zapier zap using TASK.CREATED event as it is already "in use". Limited

## Faster App Recovery With Bounded Queues

DevFeed: [Faster App Recovery With Bounded Queues](<https://devfeed.tech/articles/faster-app-recovery-with-bounded-queues-15648.md>)

Original publisher: [Read original article](<https://developer.squareup.com/blog/faster-app-recovery-with-bounded-queues>)

Author: Zachary Anker

Published: 2017-06-21T18:08:07Z

Content type: tutorial

Language: en

Sources: [Square Corner Blog RSS Feed](<https://devfeed.tech/sources/square-corner-blog-rss-feed.md>)

Topics: [Ruby](<https://devfeed.tech/topics/ruby.md>), [nginx](<https://devfeed.tech/topics/nginx.md>), [Benchmark](<https://devfeed.tech/topics/benchmark.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Microservice](<https://devfeed.tech/topics/microservice.md>)

Tags: [app](<https://devfeed.tech/tags/app.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [automated](<https://devfeed.tech/tags/automated.md>), [benchmark](<https://devfeed.tech/tags/benchmark.md>), [code](<https://devfeed.tech/tags/code.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [http](<https://devfeed.tech/tags/http.md>), [microservice-architecture](<https://devfeed.tech/tags/microservice-architecture.md>), [nginx](<https://devfeed.tech/tags/nginx.md>), [outage](<https://devfeed.tech/tags/outage.md>), [queue](<https://devfeed.tech/tags/queue.md>), [request](<https://devfeed.tech/tags/request.md>), [responses](<https://devfeed.tech/tags/responses.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [server](<https://devfeed.tech/tags/server.md>), [test](<https://devfeed.tech/tags/test.md>), [timeout](<https://devfeed.tech/tags/timeout.md>)

### AI overview

This tutorial explains how bounded request queues can help Ruby applications recover after downstream failures. Using NGINX, Puma, client retries, and benchmark tests, it shows how unbounded queues and repeated timeouts can create backlogs and cascading failures, and why rejecting requests when overloaded can reduce the need for restarts.

### Source excerpt

Get your app back up more rapidly using bounded queues

## Upgrading a Reverse Proxy from Netty 3 to 4

DevFeed: [Upgrading a Reverse Proxy from Netty 3 to 4](<https://devfeed.tech/articles/upgrading-a-reverse-proxy-from-netty-3-to-4-15936.md>)

Original publisher: [Read original article](<https://developer.squareup.com/blog/upgrading-a-reverse-proxy-from-netty-3-to-4>)

Author: Square Engineering

Published: 2016-08-09T16:12:00Z

Content type: article

Language: en

Sources: [Square Corner Blog RSS Feed](<https://devfeed.tech/sources/square-corner-blog-rss-feed.md>)

Topics: [Netty](<https://devfeed.tech/topics/netty.md>), [HTTP](<https://devfeed.tech/topics/http.md>), [Microservice](<https://devfeed.tech/topics/microservice.md>), [Java](<https://devfeed.tech/topics/java.md>), [Remote Procedure Call (RPC)](<https://devfeed.tech/topics/rpc.md>), [gRPC](<https://devfeed.tech/topics/grpc.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>)

Tags: [engineering](<https://devfeed.tech/tags/engineering.md>), [http](<https://devfeed.tech/tags/http.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [java](<https://devfeed.tech/tags/java.md>), [memory](<https://devfeed.tech/tags/memory.md>), [microservice-architecture](<https://devfeed.tech/tags/microservice-architecture.md>), [migration](<https://devfeed.tech/tags/migration.md>), [performance](<https://devfeed.tech/tags/performance.md>), [proxy](<https://devfeed.tech/tags/proxy.md>), [rpc](<https://devfeed.tech/tags/rpc.md>), [threading](<https://devfeed.tech/tags/threading.md>), [upgrade](<https://devfeed.tech/tags/upgrade.md>)

### AI overview

Square describes upgrading Tracon, its reverse HTTP proxy powered by Netty, from Netty 3 to Netty 4. The article explains the motivation for the migration, including Netty 3 reaching end of life and the need to proxy HTTP/2 for mobile clients and gRPC infrastructure, and discusses issues encountered during the completed upgrade.

### Source excerpt

Tracon is our reverse HTTP proxy powered by Netty. We recently completed an upgrade to Netty 4 and wanted to share our experience.

## Protecting infrastructure secrets with Keywhiz

DevFeed: [Protecting infrastructure secrets with Keywhiz](<https://devfeed.tech/articles/protecting-infrastructure-secrets-with-keywhiz-15810.md>)

Original publisher: [Read original article](<https://developer.squareup.com/blog/protecting-infrastructure-secrets-with-keywhiz>)

Author: Square Engineering

Published: 2015-04-14T16:08:00Z

Content type: article

Language: en

Sources: [Square Corner Blog RSS Feed](<https://devfeed.tech/sources/square-corner-blog-rss-feed.md>)

Topics: [Security](<https://devfeed.tech/topics/security.md>), [Microservice](<https://devfeed.tech/topics/microservice.md>), [Architecture & Design](<https://devfeed.tech/topics/architecture-design.md>)

Tags: [certificates](<https://devfeed.tech/tags/certificates.md>), [distribution](<https://devfeed.tech/tags/distribution.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [microservice-architecture](<https://devfeed.tech/tags/microservice-architecture.md>), [secrets](<https://devfeed.tech/tags/secrets.md>), [security](<https://devfeed.tech/tags/security.md>), [ssh](<https://devfeed.tech/tags/ssh.md>), [tls](<https://devfeed.tech/tags/tls.md>)

### AI overview

Square describes Keywhiz, an open-source service for centrally managing and distributing infrastructure secrets such as TLS certificates, keys, database credentials, API tokens, and SSH keys. The article explains the security and operational requirements that shaped the system.

### Source excerpt

Our newly open-sourced secret management and distribution service

## gRPC -- cross-platform open source RPC over HTTP/2

DevFeed: [gRPC -- cross-platform open source RPC over HTTP/2](<https://devfeed.tech/articles/grpc-cross-platform-open-source-rpc-over-http-2-15667.md>)

Original publisher: [Read original article](<https://developer.squareup.com/blog/grpc-cross-platform-open-source-rpc-over-http-2>)

Author: Square Engineering

Published: 2015-02-26T17:08:00Z

Content type: article

Language: en

Sources: [Square Corner Blog RSS Feed](<https://devfeed.tech/sources/square-corner-blog-rss-feed.md>)

Topics: [gRPC](<https://devfeed.tech/topics/grpc.md>), [Remote Procedure Call (RPC)](<https://devfeed.tech/topics/rpc.md>), [cross-platform](<https://devfeed.tech/topics/cross-platform.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [HTTP](<https://devfeed.tech/topics/http.md>), [Google](<https://devfeed.tech/topics/google.md>), [Microservice](<https://devfeed.tech/topics/microservice.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [github](<https://devfeed.tech/tags/github.md>), [go](<https://devfeed.tech/tags/go.md>), [google](<https://devfeed.tech/tags/google.md>), [http](<https://devfeed.tech/tags/http.md>), [java](<https://devfeed.tech/tags/java.md>), [library](<https://devfeed.tech/tags/library.md>), [microservice-architecture](<https://devfeed.tech/tags/microservice-architecture.md>), [node](<https://devfeed.tech/tags/node.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [php](<https://devfeed.tech/tags/php.md>), [pull-requests](<https://devfeed.tech/tags/pull-requests.md>), [python](<https://devfeed.tech/tags/python.md>), [rpc](<https://devfeed.tech/tags/rpc.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [streaming](<https://devfeed.tech/tags/streaming.md>)

### AI overview

Square describes collaborating with Google to open source gRPC, a BSD-licensed, cross-platform library for remote procedure calls over HTTP/2. The article explains its use in client-server and server-server communication, along with claimed benefits including binary-protocol efficiency, type safety, smaller memory footprint, bidirectional streaming, multiplexing, flow control, and header compression.

### Source excerpt

Collaborating with Google on open sourcing gRPC