From f88e42bc4ffd02e9107bf0b834a45e618ef0c287 Mon Sep 17 00:00:00 2001 From: test2 Date: Tue, 9 Jun 2020 01:15:20 +0300 Subject: [PATCH] architecture --- swarmlab/Architecture.adoc | 174 +++++++++++++++++++++++++++++++++++++ swarmlab/emblem-web.png | Bin 0 -> 1309 bytes 2 files changed, 174 insertions(+) create mode 100644 swarmlab/Architecture.adoc create mode 100644 swarmlab/emblem-web.png diff --git a/swarmlab/Architecture.adoc b/swarmlab/Architecture.adoc new file mode 100644 index 0000000..f6a751d --- /dev/null +++ b/swarmlab/Architecture.adoc @@ -0,0 +1,174 @@ + +// Metadata: +:description: IoT Εισαγωγή στο SwarmLab +:keywords: iot, swarm +:data-uri: +:toc: right +:toc-title: Πίνακας περιεχομένων +:toclevels: 4 +:source-highlighter: highlight +:icons: font +:sectnums: + + +Architecture overview + += Storage + +== IPFS Cluster image:emblem-web.png[link="https://cluster.ipfs.io/",window="_blank"] + +Automated data availability and redundancy on https://cluster.ipfs.io/[IPFS^]. + +IPFS Cluster provides data orchestration across a swarm of IPFS daemons by allocating, replicating and tracking a global pinset distributed among multiple peers. + +It is being used for both tutors and students to publish content on a *decentralized* manner! + +Information will be *auto-deleted* after approximatelly *24 hours* of not being used. + + + +== minio cluster image:emblem-web.png[link="https://min.io/",window="_blank"] + +High Performance, cloud Native Object Storage. + + +https://docs.aws.amazon.com/AmazonS3/latest/API/API_Operations.html[Amazon’s S3 API^] is the defacto standard in the object storage world. + +MinIO is the defacto standard for S3 compatibility and was one of the first to adopt the API and the first to add support for S3 Select. + +More than 750 organizations, including Microsoft Azure, use MinIO’s S3 Gateway - more than the rest of the industry combined. + + +It is being used for both tutors and students to save content on a *centralized* manner! + +Information storage is *permanent*. + + +== MariaDB Galera Cluster image:emblem-web.png[link="https://mariadb.com/kb/en/what-is-mariadb-galera-cluster/",window="_blank"] + +https://mariadb.org/[MariaDB^] Galera Cluster is a virtually synchronous multi-master cluster for MariaDB. + +Provide *Active-active* multi-master topology. + + +Used for user/admin authorization and authentication. + +== A replica set in MongoDB image:emblem-web.png[link="https://docs.mongodb.com/manual/replication/#replication-in-mongodb",window="_blank"] + +https://www.mongodb.com[MongoDB^] is a document database designed for ease of development and scaling. + +Used for labroom and swarmlab services administration and scheduling. + + +== ShareDB image:emblem-web.png[link="https://github.com/share/sharedb",window="_blank"] + +ShareDB is a realtime database backend based on Operational Transformation (OT) of JSON documents + += Devel + +== slim image:emblem-web.png[link="http://www.slimframework.com/",window="_blank"] +Slim is a https://www.php.net/[PHP^] micro framework that helps you quickly write powerful APIs. + +Used for main api of swarmlab.io + +Slim was used for a fast and powerful router that maps route callbacks to specific HTTP request methods and URIs. + + +== nodejs image:emblem-web.png[link="https://nodejs.org/en/",window="_blank"] +Nodejs is an asynchronous event-driven JavaScript runtime, Node.js is designed to build scalable network applications. + +Used for event-driven programming and for Sockets and WebSockets. + +== vue.js image:emblem-web.png[link="https://vuejs.org/",window="_blank"] + +Vue is a progressive JavaScript framework for building user interfaces. + +It is designed from the ground up to be incrementally adoptable, and can easily scale between a library and a framework depending on different use cases. + +It consists of an approachable core library that focuses on the view layer only, and an ecosystem of supporting libraries that helps you tackle complexity in large Single-Page Applications. + +Used for the main user interface of swarmlab.io. + + +== python image:emblem-web.png[link="https://www.python.org/",window="_blank"] + +Python is an interpreted, high-level, general-purpose programming language. + +Python's design philosophy emphasizes code readability with its notable use of significant whitespace. + +Its language constructs and object-oriented approach aim to help programmers write clear, logical code for small and large-scale projects. + +Used along with ansible for maintenance and administration of the machines making up the cluster of swarmlab.io. + +se sinrgasia me tin ansible gia tin diachirissi ton michanon + +== php image:emblem-web.png[link="https://www.php.net",window="_blank"] + +PHP is a popular general-purpose scripting language that is especially suited to web development. + +Fast, flexible and pragmatic, PHP powers everything from your blog to the most popular websites in the world. + + +Used with slim for creation of the main API. + +== codemirror image:emblem-web.png[link="https://codemirror.net/",window="_blank"] +CodeMirror is a versatile text editor implemented in JavaScript for the browser. + + +Used for the online editors for interraction with tutors and students. + + +== oauth2 image:emblem-web.png[link="https://oauth.net/2/",window="_blank"] +OAuth 2.0 is the industry-standard protocol for authorization. + +OAuth 2.0 focuses on client developer simplicity while providing specific authorization flows for web applications, desktop applications, mobile phones, and living room devices. + +This specification and its extensions are being developed within the IETF OAuth Working Group. + + +This protocol is being used for the connection of users and services. + + += System admin and devel + +== docker image:emblem-web.png[link="https://www.docker.com/",window="_blank"] + +Docker provides the ability to package and run an application in a loosely isolated environment called a container. + + +Used for all the services implementations. + + + +== docker-compose image:emblem-web.png[link="https://docs.docker.com/compose/",window="_blank"] + +Compose is a tool for defining and running multi-container Docker applications. + +Used for development, configuration and testing of the services before deployment to the swarm. + + + +== Bash image:emblem-web.png[link="https://www.gnu.org/software/bash/",window="_blank"] + +A lot of bash scripting was used (low-level) tasks concerning the Linux operating system. + + +== ansible image:emblem-web.png[link="https://www.ansible.com/",window="_blank"] + +Ansible is an open-source software provisioning, configuration management, and application-deployment tool. + + +Used for administration of the machines of the general cluster of swarmlab.io as well as its subclusters. + + +== keycloak image:emblem-web.png[link="https://www.keycloak.org/",window="_blank"] + +Open Source Identity and Access Management + + +Used as backend for authentication to provide secure services in our sso implementation. + + += Deploy + +== Docker swarm image:emblem-web.png[link="https://docs.docker.com/engine/swarm/",window="_blank"] + +Docker swarm is a container orchestration tool, its allow to manage multiple containers deployed across a cluster. + + +Used for orchestration of swarmlab.io services. + + + + += Colaboration + +== gittea image:emblem-web.png[link="https://gitea.com/",window="_blank"] + +A self-hosted Git service used for the git-repo management used by students and tutors. + + +== jitsi image:emblem-web.png[link="https://jitsi.org/",window="_blank"] + +A secure, flexible, and completely free video conferencing. + + +Used for the online virtual meetings attended by students and tutors. + + + += service access + +== noVNC image:emblem-web.png[link="https://novnc.com/info.html",window="_blank"] + +A open source VNC client - it's is both a VNC client JavaScript library as well as an application built on top of that library. + +noVNC runs in any modern browser including mobile browsers (iOS and Android). + + +Used to access a unix graphic environment for the services provided through a normal browser. + + + +== ttyd image:emblem-web.png[link="https://tsl0922.github.io/ttyd/",window="_blank"] + +Terminal over the web. + + +Used to access a unix command line for the services provided through a normal browser. + + + diff --git a/swarmlab/emblem-web.png b/swarmlab/emblem-web.png new file mode 100644 index 0000000000000000000000000000000000000000..59047e7c2e001a0ee8bbe30bc25c148fc98acc8d GIT binary patch literal 1309 zcmV+&1>*XNP)FV0e-E00;U$y`5 zV1So91kV_qG;ROtX2N0x%W&&dU7H78=UI;JRTS-{rmGj7cIm&pfBCHRyamm>zgiD4 ze{QNFvzN?{**s+;@sv)$;jBg9tz8%mMzx#1fOva298?tb(BK0fYk$syrtM#Tle5C!ba@Y5SKwR;zsctw+u}2rGh+F-)mDi)d;t(#mFVyaPNhz`>oP=XS7c z0!6kPV8}QoHw5|C-nu3Bx()x0-8>$I83qN>SoT-Pw%>6GydO@h4;7`|=ovghM_r73 z2q7Sh3xd57Ga7%7I`>7;TLwJq$LsbF*a^q|ZQ;V7@lO)e@BB)$yCk=v#?xxtQ#BS> zZoC1*p{0;j2UJyqEUU=oWX!1lJudgZ2YrM4F_CJ7u7gHLsk0N!b(X5IC$jlT0v1@f zU`7apD3BEky6zmnc&r6RF-1}o*FEi@%6=1uk62tyXb z42Qd6mezX5E!X{T#Er2A@SFuauThz5EJ40OWi`xfd8c z$PBoh9Z;|mx~9*?lV^bBjgf=kgzKm+y9yPhU|B0&j+wOFWsII-2o>tEa4Id&6!KVw15A0f+Pe)I+>+YjO9 z$P9GdUQX}B5aef3>Kulmm0~;+2Z4U&Ndg`E)kricIxHNV7C(3rPrupeUL_ zv10_2t4|vOk&=}t^f(f#yDJFB>gfL1FdPUg(AbMl65M>?;~`nmzTMh&Q*5f9j#b%w{Aq zCB|k3B3`=gjrYn;5-E!@`iW!<;_0Pm@AIX3!oLn?o+M~(eT%GSV#m&39S~J1t22xj z`E=h|Kuby>E9zYoT09({ihLr;RXBdGJELS`Z@>PZ4<=C%_P%p_+;=v~xhhWwqF7Vy zjXQb1nGx09aM`R7I0g=zfEu?G&DF)IEU&_aj>*zv=fy;F?E1U?XMb?Q>|rQc9)f$Z z79t1^mv_Zm-eYljUhOV*$)56Jp}e$+V;KgKXhI7`;@NOC#fz!v@le}uzm$y*M*w6^ zM3~1y0Z*|NNG$my=c+1k)h?QCDXyBuJKYNi7>ksSbjgW8Z_3}^n~M&H%(9$$G(n1@ z5