This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit f98bcca7f4347ec3a6bbf2a8e4325c5da29d8a6d
Author: Benoit Tellier <[email protected]>
AuthorDate: Thu Nov 19 16:20:18 2020 +0700

    JAMES-3441 Document specialized instances setup
---
 .../assets/images/specialized-instances.png        | Bin 0 -> 45878 bytes
 docs/modules/servers/nav.adoc                      |   1 +
 .../pages/distributed/architecture/index.adoc      |   6 ++++
 .../architecture/specialized-instances.adoc        |  37 +++++++++++++++++++++
 4 files changed, 44 insertions(+)

diff --git a/docs/modules/servers/assets/images/specialized-instances.png 
b/docs/modules/servers/assets/images/specialized-instances.png
new file mode 100644
index 0000000..687cefe
Binary files /dev/null and 
b/docs/modules/servers/assets/images/specialized-instances.png differ
diff --git a/docs/modules/servers/nav.adoc b/docs/modules/servers/nav.adoc
index 20c7360..7002b26 100644
--- a/docs/modules/servers/nav.adoc
+++ b/docs/modules/servers/nav.adoc
@@ -14,6 +14,7 @@
 *** xref:distributed/objectives.adoc[]
 *** xref:distributed/architecture/index.adoc[]
 **** xref:distributed/architecture/consistency-model.adoc[]
+**** xref:distributed/architecture/specialized-instances.adoc[]
 *** xref:distributed/run.adoc[]
 *** xref:distributed/run-docker.adoc[]
 *** xref:distributed/configure/index.adoc[]
diff --git a/docs/modules/servers/pages/distributed/architecture/index.adoc 
b/docs/modules/servers/pages/distributed/architecture/index.adoc
index 01f4961..0bbbb34 100644
--- a/docs/modules/servers/pages/distributed/architecture/index.adoc
+++ b/docs/modules/servers/pages/distributed/architecture/index.adoc
@@ -34,6 +34,12 @@ The following protocols should be considered experimental
 * *JMAP* (draft specification as defined 
link:https://github.com/apache/james-project/tree/master/server/protocols/jmap-draft/doc[here])
 * *POP3*
 
+== Topology
+
+While it is perfectly possible to deploy homogeneous James instances, with the 
same configuration and thus the same
+protocols and the same responsibilities one might want to investigate in
+xref:distributed/architecture/specialized-instances.adoc['Specialized 
instances'].
+
 == Components
 
 This section presents the various components of the Distributed server, 
providing context about
diff --git 
a/docs/modules/servers/pages/distributed/architecture/specialized-instances.adoc
 
b/docs/modules/servers/pages/distributed/architecture/specialized-instances.adoc
new file mode 100644
index 0000000..e13d75e
--- /dev/null
+++ 
b/docs/modules/servers/pages/distributed/architecture/specialized-instances.adoc
@@ -0,0 +1,37 @@
+= Distributed James Server &mdash; Specialized instances
+:navtitle: Specialized instances
+
+While it is perfectly possible to deploy homogeneous James instances, with the 
same configuration and thus the same
+protocols and the same responsibilities one might want to investigate in 
'Specialized instances'.
+
+This deployment topology consists of Distributed James servers with 
heterogeneous configurations on top of shared
+data-bases. Groups of James servers will thus handle various protocols and 
have different responsibilities.
+
+This approach limits cascading failures across protocols and services. Think 
of *OutOfMemoryErrors*, Cassandra driver 
+queue overuse, CPUs starvation, etc.
+
+However, we can't speak of micro-services here: all James instances runs the 
same code, James is still a monolith, and
+databases need to be shared across instances.
+
+image::specialized-instances.png[Example of Specialized instances topology]
+
+We speak of:
+
+ - **Front-line servers** serves protocols. James enables to easily turn 
protocols on and off. Typically, each protocol would 
+ be isolated in its own group of James instances: james-imap, james-jmap, 
james-smtp, james-webadmin, etc... Refer to
+ protocols configuration files to learn more.
+ 
+ - **Back-office servers** handles other services like:
+    - Mail processing.
+    - Remote delivery.
+    - Event processing.
+    - Task execution.
+
+Front-line servers will likely not handle back office responsibilities (but be 
sure to have back-office servers that do!).
+  - xref:distributed/configure/mailetcontainer.adoc[Mail processing can be 
switched off].
+  - xref:distributed/configure/listeners.adoc[Mailbox event processing can be 
switched off].
+  - xref:distributed/configure/rabbitmq.adoc[Task execution can be switched 
off].
+  - Remote Delivery service is not started if the RemoteDelivery mailet is not 
positioned in mailetcontainer.xml.
+  
+Of course, the above instances can be collocated at will, to reach some 
intermediate deployments with fewer 
+instances to mitigate costs.
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to