{"id":18521684,"url":"https://github.com/transferwise/wise-envoy-xds","last_synced_at":"2025-10-16T22:55:43.255Z","repository":{"id":142584735,"uuid":"598540529","full_name":"transferwise/wise-envoy-xds","owner":"transferwise","description":"Wise Envoy xDS","archived":false,"fork":false,"pushed_at":"2023-08-21T10:28:55.000Z","size":214,"stargazers_count":3,"open_issues_count":7,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-02-17T05:24:31.580Z","etag":null,"topics":["envoy"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/transferwise.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-02-07T10:20:38.000Z","updated_at":"2025-01-21T17:09:34.000Z","dependencies_parsed_at":null,"dependency_job_id":"ae2295ed-e620-47de-854e-a31431b1aa14","html_url":"https://github.com/transferwise/wise-envoy-xds","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/transferwise%2Fwise-envoy-xds","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/transferwise%2Fwise-envoy-xds/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/transferwise%2Fwise-envoy-xds/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/transferwise%2Fwise-envoy-xds/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/transferwise","download_url":"https://codeload.github.com/transferwise/wise-envoy-xds/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254198510,"owners_count":22030966,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["envoy"],"created_at":"2024-11-06T17:27:03.576Z","updated_at":"2025-10-16T22:55:38.193Z","avatar_url":"https://github.com/transferwise.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Wise Envoy xDS\n\nWise Envoy xDS is an Envoy ADS implementation. It provides the framework necessary to correctly sequence xDS updates towards\nEnvoy instances. See the envoy [xDS docs](https://www.envoyproxy.io/docs/envoy/latest/api-docs/xds_protocol) for details\nof the protocol.\n\nThis is not a service mesh control plane, it is a library that can be used to implement one.\n\n## Why did you write this?\n\nThere wasn't a choice at the time. The first production deployment was in early 2018, making it one of the first\nxDS implementations to be deployed large scale to a production environment. Since then, it has been actively\nmaintained within Wise, and continues to form the core of EGADS, our service mesh control plane.\n\n## Does it do anything special?\n\nIts main features are:\n* Make before break - It sequences the different discovery service updates to ensure they get applied in a safe\norder, as per the xDS protocol spec;\n* Easy to implement an incremental control plane;\n* Highly customisable behaviour per client;\n* Workarounds for various envoy behaviours/bugs.\n\n## Does it scale?\n\nIn our largest cluster we run about 25 network changes a second through it, with up to around 1000 envoys per instance,\nresulting in peaks of emitting around 333 DeltaDiscoveryResponses per second for a single instance (plus handling the\ncorresponding acks from envoy.)\nIs that good? I have no idea. But mostly its Pods tick along at under half a core. This isn't very quantitative, is it?\nBut I guess the answer is - it scales well enough for us under non-trivial loads.\n\n## Usage\n\nwise-envoy-xds-example contains a toy example ADS, documented [here](wise-envoy-xds-example/README.md).\nAny implementation will need to provide a dependency on a version of com.transferwise.envoy:envoy-api supported by the\nenvoy version they run.\n\n## Versioning\n\nAt the moment the library has a compile-only dependency on a version of com.transferwise.envoy:envoy-api. It relies only\non classes and fields that are common to all versions of the v3 API, there is no dependency on anything known to be envoy\nversion specific.\n\nUsers of the library can depend on any version of com.transferwise.envoy:envoy-api appropriate for the Envoy version used.\nSee Envoy's deprecation rules for specifics of what version you should choose.\n\nIn the future it's possible this library will support new API versions, or that the v3 API will change in some way that breaks\ncompatibility. If that happens we'll have to introduce some compatibility shim.\n\n## Architecture\n\nSee [here](docs/ARCHITECTURE.md).\n\n## History\n\n- Oct 2017 - PoC service mesh control plane implementing the original envoy REST api (API v1)\n- Nov 2017 - Rewritten to use the xDS API\n- Feb 2018 - Merged into our service registry (eureka-service) codebase, first production deployment!\n- Apr 2019 - Extracted into its own service, EGADS\n- Mar 2020 - Major overhaul to focus on the delta protocol\n- Nov 2020 - Dual API v2 and API v3 support (v2 later removed, but we can do it again for v4...)\n- May 2022 - Split xds package out of EGADS to allow open source release\n\n## Why is the test coverage so poor?\nSince this lived in the EGADS repo for many years and was not genericised, much coverage relied on parts of the\ncodebase that are not part of this open sourcing attempt. Given time they'll be rewritten and added to this library.\nContributions in this area are also especially welcome!\n\n## Acknowledgements\n\nBecause this has moved between repos, blame will claim @JonathanO wrote all of it. It's nearly correct in terms of\nLoC, but nothing like this gets written in a vacuum. This would not have been possible without much\ncollaborative white-boarding and passionate exchanges of ideas in Google Docs. It took us a while to work out what good\nlooked like. The people who've worked on the proprietary service bridges, cluster manager and config builders that\nmake up the rest of EGADS - this code would have been useless without your efforts! Thank you too to all the people who've\ndiscussed and reviewed PRs over the years, and the leads who believed it was worth investing time in.\n\n## License\nCopyright 2022 Wise Plc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftransferwise%2Fwise-envoy-xds","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftransferwise%2Fwise-envoy-xds","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftransferwise%2Fwise-envoy-xds/lists"}