= Architecture!
Apostolos rootApostolos@swarmlab.io
// Metadata:
:description: Architecture instructions
:keywords: Architecture
ifndef::env-browser[]
:data-uri:
endif::[]
:images-cdn: http://localhost:3080/images
:toc: right
:toc-title: Table of contents
:toclevels: 4
:source-highlighter: highlight
:no-header-footer:
:nofooter:
:last-update-label!:
:icons: font
:sectnums: 
:url_mongodb: https://en.wikipedia.org/wiki/MongoDB



.Architecture
****
We will be trying to create a swarm implementation that will allow communication between all of the members/nodes.
****

== Deploy microservices to a Swarm cluster

[.float-group]
--
[.right]
image::./microservices-swarm.png[Docker,650,role=right] 

:hardbreaks:

{empty} +
{empty} 

:!hardbreaks:

.microservices architecture

* a microservice performs a simple task
** communicates with clients or 
** other microservices
*** communication mechanisms such as REST API requests or Websocket etc

[NOTE]
====

* Microservices can include  any programming language you like
** and with the orchestration tools they are easy to deploy and maintain

 This architecture uses NodeJS and Redis microservices deployed as Docker containers
====
--


=== Scalability

You can scale your application by updating the number of replica nodes in the swarm cluster

[source,yml]
----
...
    deploy:
      replicas: 15
      placement:
        max_replicas_per_node: 1
        constraints:
          - node.labels.region==regio1
...
----

.Segmentation
TIP: Dynamic infrastructure: services can scale up and down without waiting for each other.

=== Availability

No single point of failure.

=== Security
=== Configuration




