You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

322 lines
7.4 KiB

= Cloud computing - Service mesh and microservices networking!
Apostolos rootApostolos@swarmlab.io
// Metadata:
:description: Dockerfile instructions
:keywords: Dockerfile
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
.Service mesh and microservices networking
****
We will be trying to create a swarm implementation that will allow communication between all of the members/nodes.
[NOTE]
====
.Imaging a swarm
image:./Swarming2.png[alt="Swarm"]
To undertand this better lets look at the picture bellow and imagine that red dots are iot devices that can send and receive and black ones are clients that gather data.
.Architecture of swarm communication
image:./swarmlabn-1.png[alt="Swarm Gateway"]
- Red Node: Server/Client and Gateway Role
- Black and Red Node: Client Role
====
*To make our life easier at this task we will be using the following tools...*
* Docker image:./link_icon_16.png[link="https://en.wikipedia.org/wiki/Docker_(software)",window=_blank]
* Ansible image:./link_icon_16.png[link="https://en.wikipedia.org/wiki/Ansible_(software)",window=_blank]
* NodeJS image:./link_icon_16.png[link="https://en.wikipedia.org/wiki/Node.js",window=_blank]
* VueJS image:./link_icon_16.png[link="https://en.wikipedia.org/wiki/Vue.js",window=_blank]
* Redis image:./link_icon_16.png[link="https://en.wikipedia.org/wiki/Redis",window=_blank]
* MongoDB image:./link_icon_16.png[link="https://en.wikipedia.org/wiki/MongoDB",window=_blank]
****
== General info:
=== Timeframe:
This is a project that will be deleveloped thoughout the semester 2021.
.Courses Time: 11.00-13.00
Date
* 2021-03-13, 2021-03-20, 2021-03-27
* 2021-04-03, 2021-04-10, 2021-04-17, 2021-04-24
* 2021-05-15, 2021-05-22, 2021-05-29, 2021-06-05
* 2021-06-12, 2021-06-19
[NOTE]
====
(* The link to participate will be *announced here*.)
http://www.twitch.tv/swarmlab[http://www.twitch.tv/swarmlab^]
For questions and commucation between participants (*at any time* not only for the lessons!) you can use Gitter following the link below.
Ofcourse you can also use the Twitch chat during the live!!!
Please know that during the stream the *only* email that will be monitored and answered is courses@swarmlab.io +
(but please prefer community chat on gitter! its both easier and you can also talk to each other)
* You can also see detailed information about the sessions etc in the *callendar* (main page of the swarmlab client) after installation (see section "What tools will I need")
* For any questions you can visit our community page on https://gitter.im/swarmlab-hybrid/community[gitter^]
* If none of the above solved your problem, you can always use good old-fashioned mailto:support@swarmlab.io[email!]
====
=== What will i learn?
[.float-group]
--
[.right]
image::./containerd-appl1.png[Docker,550,role=right]
:hardbreaks:
{empty} +
{empty}
:!hardbreaks:
.From -> To
* [*] monolithic -> networking architecture
* [*] static -> Dynamic
* [*] host based -> Service based
* [*] linear -> agile
--
You will learn to code, coordinate and orchestrate a swarm of self-acting nodes.
[.float-group]
--
[.right]
image:./my-univer-2.png[Docker,350,role=right]
:hardbreaks:
{empty} +
{empty}
:!hardbreaks:
.Build app’s container image
* You will learn to build Docker images from a Dockerfile
* how to push/pull Docker images.
* how to build a Sample NodeJS application
--
--
[.left]
image::./myun2a1.png[DockerSwarm,599,float="left"]
--
:hardbreaks:
{empty} +
{empty}
:!hardbreaks:
.From Code to Cloud
* You will learn to create cloud and platform agnostic container-based applications.
** from a single container on your local machine
** to a running cloud native - container-based environment
** in the simplest and most logical format as possible.
:hardbreaks:
{empty} +
{empty} +
{empty} +
{empty} +
{empty}
:!hardbreaks:
--
[.right]
image::./myun2a2.png[alt="Swarm",680,float="right"]
//image:./myuniver-1.png[alt="Swarm"]
//image:./myuniver-8.png[alt="Swarm"]
:hardbreaks:
{empty} +
{empty} +
{empty} +
{empty}
:!hardbreaks:
.Build systems
* You will learn to build services in a dynamic and Scalable Distributed Architecture
** The distributed nature of a service mesh
--
:hardbreaks:
{empty} +
{empty} +
{empty} +
{empty} +
{empty} +
{empty} +
{empty} +
{empty} +
{empty}
:!hardbreaks:
=== What tools will I need
Internet and a PC
You should also have *installed swarmlab* to be able to recreate the steps and if you wish contribute to projects and communicate with your schoolmates.
==== Swarmlab.io hybrid
Follow the link:https://git.swarmlab.io:3000/zeus/swarmlab-hybrid#installation[instructions^] to install swarmlab-hybrid
See also
video::507040807[vimeo]
=== What students can take this course
Any student with basic knowledge of networking and computer programming should be able to cope with the needs.
=== How is the course going to take place
The course will be divided into following parts
* A list of videos, asciinemas and instructions explaining the project
* lectures BASED ON THE VIDEOS for deeper analysis and questions
* and a link:https://gitter.im/swarmlab-hybrid/community[Gitter^] for further conversations and answers to any of your questions
=== Will there be some kind of exam/certificate? What will i gain?
* The will NOT be an exam or certificate.
* You will gain contributions in form of commits and merge requests into larger projects, which you can then add to your C.V. and upgrade it.
TIP: Just to give some context, *contribution of code is regarded as the most important factor when choosing a software engineer*, thus making the course very helpful for future employment
== Course Description
=== Cloud & microservice
==== docker app
The section guides you through the following activities:
* Create a Dockerized Sample application
* Start an app container
==== docker swarm
The section guides you through the following activities:
* initializing a cluster of Docker Engines in swarm mode
* adding nodes to the swarm
* deploying application services to the swarm
* managing the swarm once you have everything running
==== Orchestration
The section guides you through the following activities:
* scale our containerized applications across clouds and datacenters
=== Administer and maintain a swarm of Docker Engines
==== manager nodes
==== Monitor swarm health
==== Scheduling Services on a Docker Swarm Mode Cluster
* Scheduling Preferences
* Rescheduling on Failure
==== ansible
* Using ansible to perform operations on managed nodes aka Configurations, deployment, and orchestration/automation
* Deploying Docker Containers with Ansible
=== Create service on nodes
This section includes Docker images and an application for Node development using containers.
Create Real-time Application with
* Node.js
* Express.js
* Socket.io
* Redis
=== Monitoring - service applications communication
==== Real-Time data/Log Collection
=== create noSQL DB (mongo cluster)
A replica set is a group of mongod processes that maintain the same data set
==== create replicas
* Replication in MongoDB
* Change Streams
** work with the change stream cursor.
** Watch Collection/Database/Deployment etc
=== central web admin interface
Create a CRUD App
==== vuejs
Create single-page application