This is an automated email from the ASF dual-hosted git repository.
Yilialinn pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix-website.git
The following commit(s) were added to refs/heads/master by this push:
new e43c5f91179 fix(seo): consolidate microservices content and improve
rate-limit discovery (#2130)
e43c5f91179 is described below
commit e43c5f9117982439f7bf441b094983f6090b547d
Author: Yilia Lin <[email protected]>
AuthorDate: Mon Sep 28 18:02:04 2026 +0800
fix(seo): consolidate microservices content and improve rate-limit
discovery (#2130)
---
.htaccess | 3 +-
.../19/why-do-microservices-need-an-api-gateway.md | 152 ---------------------
.../2024/07/25/different-rate-limits-apisix.md | 4 +-
next/scripts/check-historical-doc-signals.mjs | 6 +-
.../fixtures/non-indexed-content-decisions.mjs | 5 +
.../api-gateway-for-microservices.md | 89 +++++++++---
.../learning-center/api-gateway-rate-limiting.md | 2 +-
7 files changed, 83 insertions(+), 178 deletions(-)
diff --git a/.htaccess b/.htaccess
index 5e324a00f93..ff239e7de1b 100644
--- a/.htaccess
+++ b/.htaccess
@@ -167,7 +167,8 @@ RedirectMatch 301
"^/zh/docs/java-plugin-runner/0\.1/the-internal-of-apisix-java
RedirectMatch 301 "^/blog/2023/12/01/datavisor-uses-apisix/?$"
"/blog/2023/12/19/datavisor-uses-apisix/"
RedirectMatch 301
"^/zh/blog/2021/08/16/using-the-apache-apisix-openid-connect-plugin-for-centralized-authentication/?$"
"/zh/blog/2021/08/25/using-the-apache-apisix-openid-connect-plugin-for-centralized-authentication/"
RedirectMatch 301 "^/zh/blog/2021/10/29/extension-guide/?$"
"/zh/blog/2021/10/26/extension-guide/"
-RedirectMatch 301
"^/blog/2023/03/08/why-do-microservices-need-an-api-gateway/?$"
"/blog/2023/05/19/why-do-microservices-need-an-api-gateway/"
+RedirectMatch 301
"^/blog/2023/03/08/why-do-microservices-need-an-api-gateway/?$"
"/learning-center/api-gateway-for-microservices/"
+RedirectMatch 301
"^/blog/2023/05/19/why-do-microservices-need-an-api-gateway/?$"
"/learning-center/api-gateway-for-microservices/"
RedirectMatch 301
"^/zh/blog/2020/12/16/another-way-to-implement-envoy-filter/?$"
"/blog/2020/12/16/another-way-to-implement-envoy-filter/"
RedirectMatch 301 "^/blog/2023/12/08/zhengcaiyun-uses-apisix/?$"
"/blog/2023/12/26/zhengcaiyun-uses-apisix/"
RedirectMatch 301 "^/blog/2021/09/29/release-apache-apisix-2\.10-en/?$"
"/blog/2021/09/29/release-apache-apisix-2.10/"
diff --git
a/blog/en/blog/2023/05/19/why-do-microservices-need-an-api-gateway.md
b/blog/en/blog/2023/05/19/why-do-microservices-need-an-api-gateway.md
deleted file mode 100644
index b5a39504855..00000000000
--- a/blog/en/blog/2023/05/19/why-do-microservices-need-an-api-gateway.md
+++ /dev/null
@@ -1,152 +0,0 @@
----
-title: Why Microservices Use an API Gateway
-authors:
- - name: API7.ai
- title: Author
- url: https://github.com/api7
- image_url: https://avatars.githubusercontent.com/u/61078451?s=200&v=4
-keywords:
- - Apache APISIX
- - Microservices
- - Microservices API Gateway
- - API Gateway Architecture
-description: Learn when microservices need an API gateway, which
responsibilities belong at the gateway, and when a simpler alternative is
enough.
-tags: [Ecosystem]
-image:
https://static.apiseven.com/uploads/2023/02/16/CHqaC3Xw_Ecosystem%20%E6%A8%A1%E6%9D%BF1.png
----
-
-An API gateway can give clients one entry point to a set of microservices and
apply shared traffic policies before requests reach those services. It is
useful in many microservice systems, but it is not a requirement for every
architecture. The decision depends on client exposure, traffic policies, team
ownership, and operational complexity.
-
-<!--truncate-->
-
-## What Is a Microservice Architecture?
-
-A microservice architecture divides an application into independently
deployable services organized around business capabilities. Services commonly
communicate through synchronous APIs, asynchronous messages, or both.
-
-This approach can let teams release and scale parts of a system independently.
It also introduces distributed-system concerns: network failures, service
discovery, end-to-end observability, identity propagation, versioning, and
consistency across service boundaries. A gateway addresses some edge-traffic
concerns, but it does not solve every microservice challenge.
-
-## What Does an API Gateway Do?
-
-An API gateway receives client traffic, matches it to a route, and proxies it
to an upstream service. Depending on the gateway and its configuration, it can
also apply policies such as:
-
-- client authentication and coarse-grained authorization;
-- rate limits, request-size limits, and other traffic controls;
-- TLS termination and certificate management;
-- request or response transformation;
-- load balancing and health-based routing;
-- metrics, access logs, and tracing integration;
-- canary or weighted routing between service versions.
-
-The gateway is part of the request path. Its availability, capacity,
configuration security, and failure behavior therefore need the same
engineering attention as other production infrastructure.
-
-## Why Put a Gateway in Front of Microservices?
-
-### Give external clients a stable entry point
-
-Without a gateway or another edge proxy, clients may need to know the location
and interface of each exposed service. A gateway can keep internal service
addresses private and present stable public routes while services move or scale
behind it.
-
-This indirection helps, but it is not a substitute for API versioning and
compatibility. A gateway can route versions; service owners still need to
design and deprecate interfaces deliberately.
-
-### Apply shared edge policies consistently
-
-Authentication, traffic limits, request validation, and telemetry often need a
consistent enforcement point. Implementing the same edge policy independently
in every service can produce drift and repeated maintenance.
-
-Centralization should be selective. Business authorization rules usually
require domain context and often belong in the service as well. A gateway check
does not remove the need for service-to-service identity, authorization, or
input validation behind the gateway.
-
-### Protect upstream capacity
-
-Rate limits, concurrency controls, timeouts, and circuit-breaking policies can
reject or contain some harmful traffic before it consumes service capacity.
These policies must be based on measured service limits and realistic failure
modes. A rate limit alone cannot guarantee availability, and an incorrectly
configured retry policy can amplify an outage.
-
-### Improve traffic visibility
-
-A gateway can generate consistent access logs and traffic metrics for requests
that pass through it. Distributed traces can then connect gateway spans with
downstream services when trace context is propagated correctly.
-
-Gateway telemetry is only one view. It does not reveal internal asynchronous
work or service-to-service calls that bypass the gateway, so services and
message infrastructure still need their own instrumentation.
-
-### Change routing without changing clients
-
-Gateways can support weighted traffic splitting, header-based routing, and
controlled migration between upstream versions. This is useful for canary
releases and service decomposition, provided that the configuration is
reviewed, tested, and easy to roll back.
-
-## When You May Not Need an API Gateway
-
-A gateway adds another component and another policy layer. A simpler option
may be sufficient when:
-
-- the system has one internal client and only a few services;
-- no API is exposed outside a trusted network boundary;
-- an existing ingress proxy already provides the required routing and TLS
features;
-- service-mesh ingress or a cloud load balancer covers the current use case;
-- the team cannot yet operate the gateway reliably.
-
-Direct client-to-service access, a reverse proxy, an ingress controller, and a
gateway are design choices with overlapping capabilities. Start from concrete
requirements rather than adding a gateway because the architecture is called
“microservices.”
-
-## Gateway Responsibilities vs Service Responsibilities
-
-Clear ownership prevents a gateway from becoming a monolithic business-logic
layer.
-
-| Concern | Typical gateway role | Typical service role |
-| --- | --- | --- |
-| Authentication | Validate supported client credentials or tokens | Enforce
identity requirements for internal calls where needed |
-| Authorization | Apply route- or consumer-level policy | Enforce resource-
and domain-level permissions |
-| Rate limiting | Protect shared entry points and upstream capacity | Apply
business quotas or workload-specific limits |
-| Validation | Enforce basic protocol, size, or schema constraints | Validate
domain rules and state transitions |
-| Observability | Record edge traffic and propagate trace context | Instrument
internal work and business outcomes |
-| Composition | Perform limited protocol or payload adaptation | Own workflows
and business orchestration |
-
-Avoid putting long-running orchestration or domain decisions in gateway
plugins merely to centralize them. That increases coupling and makes the
traffic layer harder to operate and test.
-
-## Common Architecture Risks
-
-### A single unmanaged gateway failure domain
-
-Deploy enough data-plane capacity across appropriate failure domains, define
health checks, and test behavior when the control plane or configuration store
is unavailable. “Using a gateway” does not itself create high availability.
-
-### One policy for every service
-
-Different upstreams have different latency, capacity, data sensitivity, and
client behavior. Use route- or consumer-specific controls where the risk
justifies them, and preserve an auditable default policy.
-
-### Treating the gateway as the only security boundary
-
-Protect administrative APIs and configuration stores, restrict network access,
rotate secrets, and secure service-to-service communication. Services should
not blindly trust client-controlled identity headers; the architecture must
ensure those headers are removed or set only by a trusted component.
-
-### Unbounded gateway customization
-
-Plugins run in a critical traffic component. Review custom code, constrain
network and secret access, test failure behavior, and keep expensive or
blocking work out of the request path.
-
-## Using Apache APISIX with Microservices
-
-[Apache APISIX](https://apisix.apache.org/) is an open-source API gateway that
provides dynamic routing and a plugin model for traffic management,
authentication, observability, and protocol handling. It can run as a gateway
for services deployed on virtual machines, containers, or Kubernetes, depending
on the selected deployment architecture.
-
-A practical evaluation should verify:
-
-1. how routes and upstreams are configured and promoted between environments;
-2. which authentication and authorization model protects each API;
-3. how APISIX discovers or receives updates about service endpoints;
-4. what telemetry is exported and how sensitive data is handled;
-5. how the data plane behaves during upstream, network, and control-plane
failures;
-6. how upgrades, backups, rollbacks, and incident response are performed.
-
-Start with the [APISIX getting-started
guide](https://apisix.apache.org/docs/apisix/getting-started/) and evaluate
only the [plugins](https://apisix.apache.org/docs/apisix/plugins/) required by
the workload. Fewer well-tested policies are safer than enabling features
without a clear owner.
-
-## Frequently Asked Questions
-
-### Do all microservices need to pass through one gateway?
-
-No. External or north-south traffic commonly enters through a gateway, while
internal service-to-service traffic may use direct discovery, a service mesh,
or another controlled path. The topology should reflect trust boundaries and
operating requirements.
-
-### Is an API gateway the same as a service mesh?
-
-No. Their capabilities can overlap, but a gateway usually focuses on
client-to-service entry traffic and API policies. A service mesh generally
focuses on communication between workloads. Some systems use both; smaller
systems may need only one.
-
-### Does a gateway remove authentication code from every service?
-
-It can centralize supported client authentication, but services may still need
authorization and identity checks, especially for internal calls and
resource-level permissions. Design explicit trust and identity propagation
rules.
-
-### Can an API gateway orchestrate multiple microservices?
-
-Some gateways can transform or chain requests through plugins, but business
workflows are usually easier to test and own in an application or orchestration
service. Keep gateway composition limited and measurable.
-
-## Conclusion
-
-Microservices do not automatically require an API gateway. A gateway is
valuable when a system needs a stable entry point, consistent edge policies,
upstream protection, traffic observability, or controlled routing across many
services. It is unnecessary overhead when simpler infrastructure already
satisfies those requirements.
-
-Define the boundary, assign each policy to the gateway or service
deliberately, and test the complete failure model before making the gateway a
critical production dependency.
diff --git a/blog/en/blog/2024/07/25/different-rate-limits-apisix.md
b/blog/en/blog/2024/07/25/different-rate-limits-apisix.md
index 2ce7de63c7a..6ee257b0a09 100644
--- a/blog/en/blog/2024/07/25/different-rate-limits-apisix.md
+++ b/blog/en/blog/2024/07/25/different-rate-limits-apisix.md
@@ -1,5 +1,5 @@
---
-title: Differentiating rate limits in Apache APISIX
+title: Rate Limiting by Consumer and Consumer Group in Apache APISIX
authors:
- name: Nicolas Fränkel
title: Author
@@ -11,7 +11,7 @@ keywords:
- Consumer
- Consumer Groups
description: >
- In my talk Evolving your APIs, I mention that an API Gateways is a Reverse
Proxy "on steroids". One key difference between the former and the latter is
that the API Gateway is not unfriendly to business logic. The poster child is
rate-limiting.
+ Configure route-level, per-consumer, and shared consumer-group rate limits
in Apache APISIX with key authentication and the limit-count plugin.
tags: [Ecosystem]
image:
https://static.apiseven.com/uploads/2024/07/27/U4BZicm8_speedometer-1249610.jpg
---
diff --git a/next/scripts/check-historical-doc-signals.mjs
b/next/scripts/check-historical-doc-signals.mjs
index 7f0d445cf83..4bf788907b7 100644
--- a/next/scripts/check-historical-doc-signals.mjs
+++ b/next/scripts/check-historical-doc-signals.mjs
@@ -71,7 +71,8 @@ const coverageRedirects = [
['^/blog/2023/12/01/datavisor-uses-apisix/?$',
'/blog/2023/12/19/datavisor-uses-apisix/'],
['^/zh/blog/2021/08/16/using-the-apache-apisix-openid-connect-plugin-for-centralized-authentication/?$',
'/zh/blog/2021/08/25/using-the-apache-apisix-openid-connect-plugin-for-centralized-authentication/'],
['^/zh/blog/2021/10/29/extension-guide/?$',
'/zh/blog/2021/10/26/extension-guide/'],
- ['^/blog/2023/03/08/why-do-microservices-need-an-api-gateway/?$',
'/blog/2023/05/19/why-do-microservices-need-an-api-gateway/'],
+ ['^/blog/2023/03/08/why-do-microservices-need-an-api-gateway/?$',
'/learning-center/api-gateway-for-microservices/'],
+ ['^/blog/2023/05/19/why-do-microservices-need-an-api-gateway/?$',
'/learning-center/api-gateway-for-microservices/'],
['^/zh/blog/2020/12/16/another-way-to-implement-envoy-filter/?$',
'/blog/2020/12/16/another-way-to-implement-envoy-filter/'],
['^/blog/2023/12/08/zhengcaiyun-uses-apisix/?$',
'/blog/2023/12/26/zhengcaiyun-uses-apisix/'],
['^/blog/2021/09/29/release-apache-apisix-2\\.10-en/?$',
'/blog/2021/09/29/release-apache-apisix-2.10/'],
@@ -90,7 +91,8 @@ const coverageRedirects = [
const coverageRedirectCases = [
['/blog/2021/09/29/release-apache-apisix-2.10-en',
'/blog/2021/09/29/release-apache-apisix-2.10/'],
['/blog/2022/10/28/apisix-ingress-with-horizon-ai/',
'/zh/blog/2022/10/28/apisix-ingress-with-horizon-ai/'],
- ['/blog/2023/03/08/why-do-microservices-need-an-api-gateway/',
'/blog/2023/05/19/why-do-microservices-need-an-api-gateway/'],
+ ['/blog/2023/03/08/why-do-microservices-need-an-api-gateway/',
'/learning-center/api-gateway-for-microservices/'],
+ ['/blog/2023/05/19/why-do-microservices-need-an-api-gateway/',
'/learning-center/api-gateway-for-microservices/'],
['/blog/2023/07/12/2023-apisix-meetup-malaysia/',
'/blog/2023/07/11/2023-apisix-meetup-malaysia/'],
['/blog/2023/12/01/datavisor-uses-apisix/',
'/blog/2023/12/19/datavisor-uses-apisix/'],
['/blog/2023/12/08/zhengcaiyun-uses-apisix/',
'/blog/2023/12/26/zhengcaiyun-uses-apisix/'],
diff --git a/next/tests/fixtures/non-indexed-content-decisions.mjs
b/next/tests/fixtures/non-indexed-content-decisions.mjs
index d298495e3ab..1eb7ff5f5f0 100644
--- a/next/tests/fixtures/non-indexed-content-decisions.mjs
+++ b/next/tests/fixtures/non-indexed-content-decisions.mjs
@@ -9,6 +9,11 @@ export const NON_INDEXED_CONTENT_DECISIONS = [
destination: '/learning-center/open-source-api-gateway-comparison/',
removedFile:
'blog/en/blog/2022/09/13/why-is-apache-apisix-the-best-api-gateway.md',
},
+ {
+ source: '/blog/2023/05/19/why-do-microservices-need-an-api-gateway/',
+ destination: '/learning-center/api-gateway-for-microservices/',
+ removedFile:
'blog/en/blog/2023/05/19/why-do-microservices-need-an-api-gateway.md',
+ },
{
source: '/blog/2024/02/13/apisix-owasp-coraza-core-ruleset/',
destination: '/blog/2023/09/08/APISIX-integrates-with-Coraza/',
diff --git a/website/learning-center/api-gateway-for-microservices.md
b/website/learning-center/api-gateway-for-microservices.md
index b829111435e..5d18e97ad0a 100644
--- a/website/learning-center/api-gateway-for-microservices.md
+++ b/website/learning-center/api-gateway-for-microservices.md
@@ -1,23 +1,35 @@
---
title: "API Gateway for Microservices: Architecture, Patterns & Best Practices"
-description: "Learn why microservices need an API Gateway and how Apache
APISIX handles routing, discovery, load balancing, retries, and traffic
control."
+description: "Learn when microservices benefit from an API gateway, when a
simpler alternative is enough, how responsibilities split, and how to evaluate
Apache APISIX."
slug: api-gateway-for-microservices
date: 2026-04-14
tags: [microservices, architecture, api-gateway]
hide_table_of_contents: false
---
-Microservices architectures often use an [API
gateway](/learning-center/what-is-an-api-gateway/) as a single entry point for
API consumers and to route requests to the correct backend services. For
high-traffic REST APIs, the gateway can keep a stable client-facing endpoint
while it applies routing, load balancing, retries, and traffic control behind
the scenes. It also centralizes access control, authentication and
authorization, protocol translation, rate limiting, and observability, s [...]
+Microservices architectures often use an [API
gateway](/learning-center/what-is-an-api-gateway/) as a stable entry point for
API consumers and to route requests to the correct backend services. The
gateway can apply shared edge policies such as client authentication, rate
limiting, protocol translation, and traffic observability. Services still own
business authorization, domain validation, and telemetry for work that happens
behind or outside the gateway.
## Why Microservices Need a Gateway
A microservices architecture decomposes a monolithic application into
independently deployable services, each owning a specific business domain.
While this approach improves development velocity and scaling flexibility, it
introduces operational challenges that compound as the number of services grows.
-Without a gateway, every client must know the network location of every
service it needs. A single mobile application screen might require data from
five different services, forcing the client to manage multiple connections,
handle partial failures, and aggregate responses. As organizations scale their
microservices fleets, client-side orchestration becomes impractical.
+Without a gateway or an equivalent edge or composition layer, clients may need
to know and coordinate calls to several service endpoints. A single mobile
application screen might require data from five different services, which can
force the client to manage multiple connections, handle partial failures, and
aggregate responses. As organizations scale their microservices fleets, keeping
that orchestration in every client can become difficult.
-The API gateway pattern, first described by Chris Richardson and widely
adopted since, solves this by interposing a single component between clients
and the service fleet. The gateway accepts all client requests, routes them to
the appropriate services, and returns consolidated responses. The pattern has
become a standard component in production microservices architectures.
+The API gateway pattern addresses this by placing a routing and policy layer
between clients and the service fleet. The gateway accepts client requests,
routes them to the appropriate services, and returns their responses. Some
systems also use a separate composition service or backend-for-frontend when
one client operation requires data from several services.
-The gateway also addresses a second fundamental problem: cross-cutting concern
duplication. Authentication, logging, rate limiting, CORS handling, and request
validation must be applied consistently across all services. Without a gateway,
each service team implements these independently, leading to drift,
inconsistency, and duplicated effort. Centralizing cross-cutting concerns at
the gateway significantly reduces per-service boilerplate code.
+The gateway can also reduce duplication of shared edge concerns.
Authentication, logging, rate limiting, CORS handling, and request validation
may otherwise be implemented through service code, libraries, sidecars,
proxies, or platform services. A gateway provides one policy point for traffic
that crosses it, reducing duplication when those policies belong at the edge;
services still retain business-specific controls.
+
+## When a Simpler Alternative Is Enough
+
+Microservices do not automatically require an API gateway. A reverse proxy,
ingress controller, service-mesh ingress, cloud load balancer, or direct
client-to-service access may be sufficient when:
+
+- the system has one internal client and only a few services;
+- no API is exposed outside a trusted network boundary;
+- an existing ingress proxy already provides the required routing and TLS
features;
+- service-mesh ingress or a cloud load balancer covers the current traffic and
policy requirements; or
+- the team cannot yet operate another critical traffic component reliably.
+
+Choose from concrete routing, security, client, and operating requirements
rather than from the use of microservices alone. A gateway becomes useful when
the system needs a stable client-facing entry point, shared edge policies,
upstream protection, or traffic controls that simpler infrastructure does not
provide.
## Core Gateway Patterns
@@ -25,19 +37,19 @@ The gateway also addresses a second fundamental problem:
cross-cutting concern d
The most fundamental gateway pattern routes incoming requests to the correct
upstream service based on URL paths, headers, methods, or other request
attributes. A gateway might route `/api/users/*` to the user service,
`/api/orders/*` to the order service, and `/api/products/*` to the catalog
service.
-Dynamic routing takes this further by reading route configurations from a
control plane or configuration store, allowing routes to be updated without
restarting the gateway. Apache APISIX supports dynamic route configuration
through its Admin API and etcd-backed configuration store, enabling
zero-downtime route changes.
+Dynamic routing takes this further by reading route configurations from a
control plane or configuration store, allowing accepted route changes to be
applied without restarting gateway processes. Apache APISIX supports dynamic
route configuration through its Admin API and etcd-backed configuration store;
rollout safety still depends on validation, control-plane availability, and
rollback practices.
### API Composition (Aggregation)
-API composition combines responses from multiple microservices into a single
response for the client. Instead of requiring a mobile application to make five
separate API calls to render a dashboard, the gateway fetches data from all
five services in parallel and returns a unified response.
+API composition combines responses from multiple microservices into a single
response for the client. Instead of requiring a mobile application to make five
separate API calls to render a dashboard, a composition-capable gateway,
backend for frontend (BFF), or separate composition service can fetch data from
all five services in parallel and return a unified response.
-This pattern reduces client-side complexity and network round trips.
Consolidating multiple API calls into a single gateway request significantly
decreases page load time, especially on mobile networks where each round trip
adds noticeable latency.
+This pattern can reduce client-side complexity and network round trips. It
also adds orchestration logic and failure handling to the composition layer, so
teams should measure whether the extra hop improves the target client
experience.
### Backend for Frontend (BFF)
The BFF pattern creates gateway configurations tailored to specific client
types. A mobile BFF provides compact responses optimized for bandwidth
constraints and small screens. A web BFF returns richer data structures suited
to desktop layouts. An internal BFF serves admin tools with elevated access.
-Each BFF acts as a specialized gateway layer that transforms and filters
upstream service responses for its target client. Netflix, Spotify, and
SoundCloud have publicly documented their BFF implementations. The pattern
prevents a one-size-fits-all API from forcing compromises on every client type.
+Each BFF acts as a specialized API layer that transforms and filters upstream
service responses for its target client. The pattern can keep client-specific
response shaping out of general-purpose services, but each BFF still needs
clear ownership, authentication, observability, and lifecycle management.
### Service Mesh Integration
@@ -45,33 +57,48 @@ In architectures that deploy both an API gateway and a
service mesh, the gateway
Whether a team needs both depends on its trust boundaries and policy model.
The [API gateway vs service mesh
comparison](/learning-center/api-gateway-vs-service-mesh/) explains the overlap
and provides a decision checklist for gateway-only, mesh-only, and combined
deployments.
+## Gateway and Service Responsibilities
+
+Clear ownership prevents the gateway from becoming a business-logic layer and
prevents services from assuming that all traffic passed through the gateway.
+
+| Concern | Typical gateway role | Typical service role |
+| --- | --- | --- |
+| Authentication | Validate supported client credentials or tokens | Enforce
identity requirements for internal calls where needed |
+| Authorization | Apply route- or consumer-level policy | Enforce resource-
and domain-level permissions |
+| Rate limiting | Protect shared entry points and upstream capacity | Apply
business quotas or workload-specific limits |
+| Validation | Enforce protocol, request-size, or basic schema constraints |
Validate domain rules and state transitions |
+| Observability | Record edge traffic and propagate trace context | Instrument
internal work and business outcomes |
+| Composition | Perform limited protocol or payload adaptation | Own workflows
and business orchestration |
+
+Long-running orchestration and domain decisions are usually easier to own and
test in an application, BFF, or orchestration service than in gateway plugins.
The exact boundary should reflect the trust model and failure behavior of the
system.
+
## Key Features for Microservices
### Service Discovery
-In a microservices environment, services scale dynamically and their network
locations change frequently. Static configuration of upstream addresses becomes
impractical at scale. Service discovery enables the gateway to automatically
detect available service instances and their health status.
+In a microservices environment, services scale dynamically and their network
locations change frequently. Static configuration of upstream addresses becomes
impractical at scale. A configured service-discovery integration lets the
gateway resolve service instances from a registry. Endpoint discovery and
health checking are separate concerns unless the selected integration
explicitly combines them.
-Apache APISIX integrates with multiple service discovery systems, documented
in its [discovery configuration guide](/docs/apisix/discovery/). Supported
registries include Consul, Eureka, Nacos, and Kubernetes-native service
discovery. When a new service instance registers or an existing instance
becomes unhealthy, APISIX updates its routing table automatically.
+Apache APISIX integrates with multiple service discovery systems, documented
in its [discovery configuration guide](/docs/apisix/discovery/). Supported
options include Consul, Eureka, Nacos, DNS, and Kubernetes. Each discovery
implementation has its own refresh and filtering behavior. APISIX [active and
passive health checks](/docs/apisix/tutorials/health-check/) can separately
mark upstream nodes unhealthy when their checks and thresholds are configured.
-In Kubernetes environments, APISIX can read Service and Endpoint resources
directly, eliminating the need for a separate discovery system.
Kubernetes-native service discovery typically provides faster routing updates
compared to polling-based approaches.
+In Kubernetes environments, the APISIX Ingress Controller can translate
supported Kubernetes resources into APISIX configuration. Verify the controller
version, resource type, and reconciliation behavior required by the deployment
rather than assuming that every discovery integration has the same update model.
### Circuit Breaking
Circuit breaking prevents cascading failures by stopping requests to an
unhealthy upstream service. When error rates exceed a configured threshold, the
circuit opens and the gateway returns a fast failure response instead of
forwarding requests to the struggling service. After a cooldown period, the
circuit enters a half-open state and allows a limited number of test requests
through. If those succeed, the circuit closes and normal traffic resumes.
-Without circuit breaking, a single unhealthy service can consume all available
connections and thread pools in the gateway, causing failures to cascade across
the entire system. Organizations using circuit breakers typically experience
significantly shorter outage durations.
+Without bounded timeouts, retries, and failure controls, an unhealthy service
can consume gateway and client resources and contribute to cascading failures.
Circuit-breaker thresholds must be tuned from real error, latency, and recovery
behavior; an overly sensitive policy can reject healthy traffic.
### Canary Deployment
Canary deployment routes a small percentage of production traffic to a new
service version while the majority continues to hit the stable version. The
gateway controls the traffic split, enabling teams to validate new releases
with real traffic before committing to a full rollout.
-APISIX supports traffic splitting through weighted upstream configurations. A
typical canary deployment starts with 5% of traffic routed to the new version,
gradually increasing to 25%, 50%, and finally 100% as metrics confirm
stability. If errors spike, the gateway reverts the traffic split without any
service redeployment.
+APISIX supports traffic splitting through weighted upstream configurations.
Teams can begin with a small share of traffic and increase it only when
service-level metrics remain within the rollout criteria. Reverting the traffic
split still requires an explicit, tested configuration or deployment action.
### Distributed Tracing
-In a microservices architecture, a single client request might traverse ten or
more services. Distributed tracing tracks the request's path through the entire
service chain, recording latency at each hop. The gateway plays a critical role
by injecting trace context headers (W3C Trace Context or B3) into every request
it forwards.
+In a microservices architecture, a client request can traverse several
services. Distributed tracing can connect spans from those hops when each
participating component propagates compatible trace context and emits spans. A
configured gateway tracing plugin can start or continue trace context for
requests that pass through APISIX.
-APISIX supports trace context propagation to observability backends including
Zipkin, Jaeger, SkyWalking, and OpenTelemetry. With tracing enabled at the
gateway, operations teams gain end-to-end visibility into request flows,
enabling faster incident resolution compared to relying solely on logs and
metrics.
+APISIX provides plugins for tracing and exporting gateway-visible spans to
systems such as Zipkin, SkyWalking, and OpenTelemetry-compatible backends.
End-to-end traces still require compatible context propagation and
instrumentation in downstream services; gateway telemetry alone covers only
traffic and processing visible to APISIX.
For services that use [gRPC](/learning-center/what-is-grpc/), the gateway must
preserve HTTP/2 and streaming behavior or explicitly translate the protocol for
clients that cannot use native gRPC.
@@ -85,9 +112,31 @@ Apache APISIX is designed for microservices environments,
offering dynamic confi
**Kubernetes-native operation.** The [APISIX Ingress
Controller](/docs/ingress-controller/concepts/gateway-api/) deploys APISIX as a
Kubernetes-native gateway, supporting both the legacy Ingress resource and the
newer Gateway API specification. This allows platform teams to manage gateway
configuration using familiar Kubernetes declarative workflows.
-**Service discovery integration.** APISIX's [service
discovery](/docs/apisix/discovery/) capabilities connect directly to Consul,
Nacos, Eureka, and Kubernetes DNS, ensuring the gateway always routes to
healthy, available service instances without manual configuration updates.
+**Service discovery integration.** APISIX's [service
discovery](/docs/apisix/discovery/) capabilities can resolve upstream nodes
through configured integrations such as Consul, Nacos, Eureka, DNS, and
Kubernetes. Refresh behavior depends on the selected integration, while
excluding unhealthy nodes requires an appropriate registry policy or APISIX
health-check configuration.
+
+**Observability.** Built-in plugins can export gateway metrics, traces, and
logs to configured external systems. These signals describe requests processed
by APISIX; services, queues, and other internal paths need their own
instrumentation for end-to-end operational visibility.
+
+## Operational Risks to Plan For
+
+Adding a gateway concentrates important traffic and policy decisions, so
deployment and configuration choices can create their own failure modes:
+
+- **Gateway failure domain.** Run enough data-plane capacity across the
failure domains required by the service, define health checks, and test
behavior when the control plane or configuration store is unavailable.
Deploying a gateway does not by itself provide high availability.
+- **One policy for unlike services.** Upstreams differ in latency, capacity,
data sensitivity, and client behavior. Use route- or consumer-specific controls
where needed, and keep default policies explicit and auditable.
+- **Gateway-only security.** Protect administrative APIs and configuration
stores, restrict network access, and secure service-to-service communication.
Services must not trust client-controlled identity headers unless a trusted
component removes or replaces them.
+- **Unbounded plugin work.** Plugins run in a critical request path. Review
custom code, limit its network and secret access, test failure behavior, and
keep expensive or blocking work out of the request path.
+
+## Practical Evaluation Checklist
+
+Before making Apache APISIX a production dependency, verify:
+
+1. how routes and upstreams are configured, reviewed, and promoted between
environments;
+2. which authentication and authorization model protects each API and internal
call path;
+3. how APISIX discovers or receives updates about service endpoints;
+4. which telemetry is exported, where sensitive data is filtered, and which
internal paths need separate instrumentation;
+5. how the data plane behaves during upstream, network, control-plane, and
configuration-store failures; and
+6. how upgrades, backups, rollbacks, and incident response are tested.
-**Observability.** Built-in plugins export metrics to Prometheus, traces to
Jaeger, Zipkin, and OpenTelemetry, and logs to HTTP endpoints, syslog, or
Kafka. This enables a complete observability pipeline with the gateway as the
instrumentation point for all external API traffic.
+Start with the [APISIX getting-started guide](/docs/apisix/getting-started/)
and enable only the [plugins required by the
workload](/docs/apisix/terminology/plugin/). A smaller, well-tested policy set
is easier to operate than features without clear owners or failure expectations.
## FAQ
@@ -97,7 +146,7 @@ Not always. If the mesh ingress already provides the
external routing and policy
### How does an API gateway handle partial failures across microservices?
-An API gateway can be configured with circuit breakers, timeouts, and retry
policies for each upstream service. When using the API composition pattern, the
gateway can return partial results with degraded status rather than failing the
entire request when one backend is unavailable. APISIX supports configurable
timeouts and retry counts per route, and health checks automatically remove
unhealthy nodes from the upstream pool.
+An API gateway can apply timeouts, bounded retries, circuit-breaking policies,
and configured health checks before or while routing to an upstream. Those
controls can contain some failures, but they do not define how a composed
business response should degrade. If a client operation combines several
services, place partial-result and fallback policy in the composition layer and
specify which missing results are acceptable. In APISIX, health checks exclude
nodes only after the configured [...]
### Should each microservice team manage their own gateway routes?
@@ -105,7 +154,7 @@ A decentralized model where service teams own their route
configurations works w
### What is the performance impact of adding an API gateway to a microservices
architecture?
-Apache APISIX, built on NGINX and LuaJIT, adds 1-2ms of latency per request
with a typical plugin configuration (authentication, rate limiting, logging).
For most microservices architectures where end-to-end request latency is
50-500ms, this overhead is under 2% of total latency. The operational benefits
of centralized security, observability, and traffic management significantly
outweigh the minor latency cost.
+An API gateway adds a network hop and the processing cost of each enabled
policy. The impact depends on deployment topology, TLS, payload size,
connection reuse, logging, and the selected plugins. Benchmark APISIX with the
same routes, policies, and traffic profile planned for production, and include
the gateway in latency and capacity budgets.
## Related
diff --git a/website/learning-center/api-gateway-rate-limiting.md
b/website/learning-center/api-gateway-rate-limiting.md
index 2899ca962d4..dc2c3568b98 100644
--- a/website/learning-center/api-gateway-rate-limiting.md
+++ b/website/learning-center/api-gateway-rate-limiting.md
@@ -88,7 +88,7 @@ Fixed window is the simplest algorithm but has a well-known
boundary problem: a
Assign rate limits based on authenticated consumer identity. This is useful
for APIs that provide different quotas or burst allowances to different
consumer groups.
-In APISIX, an authentication plugin can establish the Consumer before a
rate-limiting plugin keys a policy on `consumer_name`. Rate-limiting plugins
can also be attached to [Consumers](/docs/apisix/terminology/consumer/) or
[Consumer Groups](/docs/apisix/terminology/consumer-group/) when that ownership
model fits the policy.
+In APISIX, an authentication plugin can establish the Consumer before a
rate-limiting plugin keys a policy on `consumer_name`. Rate-limiting plugins
can also be attached to [Consumers](/docs/apisix/terminology/consumer/) or
[Consumer Groups](/docs/apisix/terminology/consumer-group/) when that ownership
model fits the policy. See the [step-by-step APISIX example for per-consumer
and shared consumer-group
limits](/blog/2024/07/25/different-rate-limits-apisix/) for a concrete
configuration.
### Per-IP