diff options
author | Till <2353100+S7evinK@users.noreply.github.com> | 2023-02-14 12:47:47 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-14 12:47:47 +0100 |
commit | 11d9b9db0e96c51c1430d451d23cf5ae9f36e4ee (patch) | |
tree | a0837bfa69051295b76140e3940a45fc61854cab /docs | |
parent | cc59879faa57cac043cf5f1585773b301994bebf (diff) |
Remove polylith/API mode (#2967)
This removes most of the code used for polylith/API mode.
This removes the `/api` internal endpoints entirely.
Binary size change roughly 5%:
```
51437560 Feb 13 10:15 dendrite-monolith-server # old
48759008 Feb 13 10:15 dendrite-monolith-server # new
```
Diffstat (limited to 'docs')
-rw-r--r-- | docs/FAQ.md | 5 | ||||
-rw-r--r-- | docs/INSTALL.md | 6 | ||||
-rw-r--r-- | docs/development/coverage.md | 12 | ||||
-rw-r--r-- | docs/development/tracing/setup.md | 4 | ||||
-rw-r--r-- | docs/installation/10_starting_polylith.md | 73 | ||||
-rw-r--r-- | docs/installation/1_planning.md | 18 | ||||
-rw-r--r-- | docs/installation/6_install_polylith.md | 34 | ||||
-rw-r--r-- | docs/installation/7_configuration.md | 14 |
8 files changed, 16 insertions, 150 deletions
diff --git a/docs/FAQ.md b/docs/FAQ.md index 4047bfff..2899aa98 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -35,11 +35,6 @@ possible to migrate an existing Synapse deployment to Dendrite. No, Dendrite has a very different database schema to Synapse and the two are not interchangeable. -## Should I run a monolith or a polylith deployment? - -Monolith deployments are always preferred where possible, and at this time, are far better tested than polylith deployments are. The only reason to consider a polylith deployment is if you wish to run different Dendrite components on separate physical machines, but this is an advanced configuration which we don't -recommend. - ## Can I configure which port Dendrite listens on? Yes, use the cli flag `-http-bind-address`. diff --git a/docs/INSTALL.md b/docs/INSTALL.md index add82210..ccfc5810 100644 --- a/docs/INSTALL.md +++ b/docs/INSTALL.md @@ -9,7 +9,5 @@ or alternatively, in the [installation](installation/) folder: 3. [Preparing database storage](installation/3_database.md) 4. [Generating signing keys](installation/4_signingkey.md) 5. [Installing as a monolith](installation/5_install_monolith.md) -6. [Installing as a polylith](installation/6_install_polylith.md) -7. [Populate the configuration](installation/7_configuration.md) -8. [Starting the monolith](installation/8_starting_monolith.md) -9. [Starting the polylith](installation/9_starting_polylith.md) +6. [Populate the configuration](installation/7_configuration.md) +7. [Starting the monolith](installation/8_starting_monolith.md) diff --git a/docs/development/coverage.md b/docs/development/coverage.md index 7a3b7cb9..f3e39ddd 100644 --- a/docs/development/coverage.md +++ b/docs/development/coverage.md @@ -57,22 +57,16 @@ github.com/matrix-org/util/unique.go:55: UniqueStrings 100.0% total: (statements) 53.7% ``` The total coverage for this run is the last line at the bottom. However, this value is misleading because Dendrite can run in many different configurations, -which will never be tested in a single test run (e.g sqlite or postgres, monolith or polylith). To get a more accurate value, additional processing is required +which will never be tested in a single test run (e.g sqlite or postgres). To get a more accurate value, additional processing is required to remove packages which will never be tested and extension MSCs: ```bash # These commands are all similar but change which package paths are _removed_ from the output. -# For Postgres (monolith) +# For Postgres go tool cover -func=/path/to/server-0/integrationcover.log | grep 'github.com/matrix-org/dendrite' | grep -Ev 'inthttp|sqlite|setup/mscs|api_trace' > coverage.txt -# For Postgres (polylith) -go tool cover -func=/path/to/server-0/integrationcover.log | grep 'github.com/matrix-org/dendrite' | grep -Ev 'sqlite|setup/mscs|api_trace' > coverage.txt - -# For SQLite (monolith) +# For SQLite go tool cover -func=/path/to/server-0/integrationcover.log | grep 'github.com/matrix-org/dendrite' | grep -Ev 'inthttp|postgres|setup/mscs|api_trace' > coverage.txt - -# For SQLite (polylith) -go tool cover -func=/path/to/server-0/integrationcover.log | grep 'github.com/matrix-org/dendrite' | grep -Ev 'postgres|setup/mscs|api_trace' > coverage.txt ``` A total value can then be calculated using: diff --git a/docs/development/tracing/setup.md b/docs/development/tracing/setup.md index 06f89bf8..a9e90c64 100644 --- a/docs/development/tracing/setup.md +++ b/docs/development/tracing/setup.md @@ -46,10 +46,10 @@ tracing: param: 1 ``` -then run the monolith server with `--api true` to use polylith components which do tracing spans: +then run the monolith server: ``` -./dendrite-monolith-server --tls-cert server.crt --tls-key server.key --config dendrite.yaml --api true +./dendrite-monolith-server --tls-cert server.crt --tls-key server.key --config dendrite.yaml ``` ## Checking traces diff --git a/docs/installation/10_starting_polylith.md b/docs/installation/10_starting_polylith.md deleted file mode 100644 index 0c2e2af2..00000000 --- a/docs/installation/10_starting_polylith.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Starting the polylith -parent: Installation -has_toc: true -nav_order: 10 -permalink: /installation/start/polylith ---- - -# Starting the polylith - -Once you have completed all of the preparation and installation steps, -you can start your Dendrite polylith deployment by starting the various components -using the `dendrite-polylith-multi` personalities. - -## Start the reverse proxy - -Ensure that your reverse proxy is started and is proxying the correct -endpoints to the correct components. Software such as [NGINX](https://www.nginx.com) or -[HAProxy](http://www.haproxy.org) can be used for this purpose. A [sample configuration -for NGINX](https://github.com/matrix-org/dendrite/blob/main/docs/nginx/polylith-sample.conf) -is provided. - -## Starting the components - -Each component must be started individually: - -### Client API - -```bash -./dendrite-polylith-multi -config /path/to/dendrite.yaml clientapi -``` - -### Sync API - -```bash -./dendrite-polylith-multi -config /path/to/dendrite.yaml syncapi -``` - -### Media API - -```bash -./dendrite-polylith-multi -config /path/to/dendrite.yaml mediaapi -``` - -### Federation API - -```bash -./dendrite-polylith-multi -config /path/to/dendrite.yaml federationapi -``` - -### Roomserver - -```bash -./dendrite-polylith-multi -config /path/to/dendrite.yaml roomserver -``` - -### Appservice API - -```bash -./dendrite-polylith-multi -config /path/to/dendrite.yaml appservice -``` - -### User API - -```bash -./dendrite-polylith-multi -config /path/to/dendrite.yaml userapi -``` - -### Key server - -```bash -./dendrite-polylith-multi -config /path/to/dendrite.yaml keyserver -``` diff --git a/docs/installation/1_planning.md b/docs/installation/1_planning.md index 3aa5b4d8..36d90abd 100644 --- a/docs/installation/1_planning.md +++ b/docs/installation/1_planning.md @@ -16,12 +16,6 @@ Users can run Dendrite in one of two modes which dictate how these components ar server with generally low overhead. This mode dramatically simplifies deployment complexity and offers the best balance between performance and resource usage for low-to-mid volume deployments. -* **Polylith mode** runs all components in isolated processes. Components communicate through an external NATS - server and HTTP APIs, which incur considerable overhead. While this mode allows for more granular control of - resources dedicated toward individual processes, given the additional communications overhead, it is only - necessary for very large deployments. - -Given our current state of development, **we recommend monolith mode** for all deployments. ## Databases @@ -85,21 +79,15 @@ If using the PostgreSQL database engine, you should install PostgreSQL 12 or lat ### NATS Server -Monolith deployments come with a built-in [NATS Server](https://github.com/nats-io/nats-server) and -therefore do not need this to be manually installed. If you are planning a monolith installation, you +Dendrite comes with a built-in [NATS Server](https://github.com/nats-io/nats-server) and +therefore does not need this to be manually installed. If you are planning a monolith installation, you do not need to do anything. -Polylith deployments, however, currently need a standalone NATS Server installation with JetStream -enabled. - -To do so, follow the [NATS Server installation instructions](https://docs.nats.io/running-a-nats-service/introduction/installation) and then [start your NATS deployment](https://docs.nats.io/running-a-nats-service/introduction/running). JetStream must be enabled, either by passing the `-js` flag to `nats-server`, -or by specifying the `store_dir` option in the the `jetstream` configuration. ### Reverse proxy A reverse proxy such as [Caddy](https://caddyserver.com), [NGINX](https://www.nginx.com) or -[HAProxy](http://www.haproxy.org) is required for polylith deployments and is useful for monolith -deployments. Configuring those is not covered in this documentation, although sample configurations +[HAProxy](http://www.haproxy.org) is useful for deployments. Configuring those is not covered in this documentation, although sample configurations for [Caddy](https://github.com/matrix-org/dendrite/blob/main/docs/caddy) and [NGINX](https://github.com/matrix-org/dendrite/blob/main/docs/nginx) are provided. diff --git a/docs/installation/6_install_polylith.md b/docs/installation/6_install_polylith.md deleted file mode 100644 index ec4a7762..00000000 --- a/docs/installation/6_install_polylith.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Installing as a polylith -parent: Installation -has_toc: true -nav_order: 6 -permalink: /installation/install/polylith ---- - -# Installing as a polylith - -You can install the Dendrite polylith binary into `$GOPATH/bin` by using `go install`: - -```sh -go install ./cmd/dendrite-polylith-multi -``` - -Alternatively, you can specify a custom path for the binary to be written to using `go build`: - -```sh -go build -o /usr/local/bin/ ./cmd/dendrite-polylith-multi -``` - -The `dendrite-polylith-multi` binary is a "multi-personality" binary which can run as -any of the components depending on the supplied command line parameters. - -## Reverse proxy - -Polylith deployments require a reverse proxy in order to ensure that requests are -sent to the correct endpoint. You must ensure that a suitable reverse proxy is installed -and configured. - -Sample configurations are provided -for [Caddy](https://github.com/matrix-org/dendrite/blob/main/docs/caddy/polylith/Caddyfile) -and [NGINX](https://github.com/matrix-org/dendrite/blob/main/docs/nginx/polylith-sample.conf).
\ No newline at end of file diff --git a/docs/installation/7_configuration.md b/docs/installation/7_configuration.md index 19958c92..5f123bfc 100644 --- a/docs/installation/7_configuration.md +++ b/docs/installation/7_configuration.md @@ -7,11 +7,10 @@ permalink: /installation/configuration # Configuring Dendrite -A YAML configuration file is used to configure Dendrite. Sample configuration files are +A YAML configuration file is used to configure Dendrite. A sample configuration file is present in the top level of the Dendrite repository: * [`dendrite-sample.monolith.yaml`](https://github.com/matrix-org/dendrite/blob/main/dendrite-sample.monolith.yaml) -* [`dendrite-sample.polylith.yaml`](https://github.com/matrix-org/dendrite/blob/main/dendrite-sample.polylith.yaml) You will need to duplicate the sample, calling it `dendrite.yaml` for example, and then tailor it to your installation. At a minimum, you will need to populate the following @@ -46,10 +45,9 @@ global: ## JetStream configuration Monolith deployments can use the built-in NATS Server rather than running a standalone -server. If you are building a polylith deployment, or you want to use a standalone NATS -Server anyway, you can also configure that too. +server. If you want to use a standalone NATS Server anyway, you can also configure that too. -### Built-in NATS Server (monolith only) +### Built-in NATS Server In the `global` section, under the `jetstream` key, ensure that no server addresses are configured and set a `storage_path` to a persistent folder on the filesystem: @@ -63,7 +61,7 @@ global: topic_prefix: Dendrite ``` -### Standalone NATS Server (monolith and polylith) +### Standalone NATS Server To use a standalone NATS Server instance, you will need to configure `addresses` field to point to the port that your NATS Server is listening on: @@ -86,7 +84,7 @@ one address in the `addresses` field. Configuring database connections varies based on the [database configuration](database) that you chose. -### Global connection pool (monolith with a single PostgreSQL database only) +### Global connection pool If you are running a monolith deployment and want to use a single connection pool to a single PostgreSQL database, then you must uncomment and configure the `database` section @@ -109,7 +107,7 @@ override the `global` database configuration. ### Per-component connections (all other configurations) -If you are building a polylith deployment, are using SQLite databases or separate PostgreSQL +If you are are using SQLite databases or separate PostgreSQL databases per component, then you must instead configure the `database` sections under each of the component blocks ,e.g. under the `app_service_api`, `federation_api`, `key_server`, `media_api`, `mscs`, `room_server`, `sync_api` and `user_api` blocks. |