= Υπολογιστική Νέφους και Υπηρεσίες :description: ΑΣΚΗΣΗ 2020 :keywords: Cloud, swarm :data-uri: :toc: right :toc-title: Πίνακας περιεχομένων :toclevels: 4 :source-highlighter: coderay :icons: font :sectnums: .ΕΡΓΑΣΤΗΡΙΟ ΜΑΘΗΜΑΤΟΣ [NOTE] **** [.text-center] *«Υπολογιστική Νέφους και Υπηρεσίες»* [.text-center] _ΑΣΚΗΣΗ 2021_ **** [.lead] Η άσκηση περιλαμβάνει τη δημιουργία ενός εικονικού εργαστηρίου(vlab) σε περιβάλλον *docker-compose* που θα εκτελεί αυτόματα τις λειτουργίες που διαθέτει. == Δημιουργία εικονικού εργαστηρίου *Κάθε vlab θα διαθέτει:* * [*] δικό του δίκτυο * [*] περιβάλλον _(GUI/CLI)_ για προβολή των αποτελεσμάτων * [*] χώρο αποθήκευσης!footnote:disclaimer[Σχετικά με την υποστήριξη 'χώρου αποθήκευσης', μπορείτε να χρησιμοποιήσετε την υπηρεσία storage-mongo-replica του swarmlab.io (https://git.swarmlab.io:3000/swarmlab/storage-mongo-replica[git^]) ή όποια άλλη βάση επιθυμείτε ] * [*] Αυτόματη διαδικασία εκτέλεσης των υπηρεσιών (https://git.swarmlab.io:3000/swarmlab/examples-mpi/src/branch/master/swarmlab[π.χ. μέσω make - Παράδειγμα]) * [*] μία υπηρεσία ανά container!footnote:disclaimer[Γενικά διαχωρίζουμε τους τομείς χρησιμοποιώντας μία υπηρεσία ανά container. Αυτή η υπηρεσία μπορεί, σε διάφορες περιπτώσεις, να εκτελεστεί σε πολλές διεργασίες (για παράδειγμα, ο διακομιστής web Apache ξεκινά πολλές διεργασίες).] * [*] resource config για Out Of Memory Exceptions https://docs.docker.com/config/containers/resource_constraints/#understand-the-risks-of-running-out-of-memory[(OOME)], https://docs.docker.com/compose/compose-file/#resources[Howto] .Πληροφορία [NOTE] ==== Για την υλοποίησή σας μπορείτε να στηριχτείτε στη βασική αρχιτεκτονική-σχεδιασμό και παραδείγματα που επιδείχθηκαν στο Εργαστήριο .Reminder **** https://docs.docker.com/compose/compose-file/#not-supported-for-docker-stack-deploy[not-supported-for-docker-stack-deploy] **** ==== == Παράδοση εργασίας *Παράδοση εργασίας:* * [*] Το κείμενο της εργασίας θα είναι σε μορφή *asciidoc* ή markdown * [*] Θα περιέχει *Yaml File* για Deploy της υπηρεσίας * [*] Θα περιέχει *README* file με πληροφορίες σχετικά με το εικονικό εργαστήριο και τις υπηρεσίες/εργαλεία που χρησιμοποιήθηκαν * [*] Θα περιέχει *INSTALL* file με πληροφορίες σχετικά με την εγκατάσταση του εικονικού εργαστηρίου * [*] Θα περιέχει *DOC* file/dir με πληροφορίες σχετικά με την χρήση του εικονικού εργαστηρίου * [*] Θα περιέχει *Demo* για την εκτέλεση των διαθέσιμων υπηρεσιών .Πληροφορία [NOTE] ==== Το κείμενα θα είναι *όλα* σε μορφή asciidoc ή markdown (https://asciidoctor.org/docs/asciidoc-writers-guide/[Asccidoc^], https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet[Markdown^]) ==== .Git [NOTE] ==== Ολα τα αρχεία θα πρέπει να "ανέβουν" σε υπηρεσία git * https://git.swarmlab.io:3000[ swarmlab - Προτείνεται^] * https://gitlab.com/explore[gitlab^] * https://github.com/[github^] ==== == Projects Κάθε ομάδα θα πρέπει να επιλέξει προς υλοποίηση ένα από τα κάτωθι προτεινόμενα projects (μπορεί επίσης να προτείνει και κάποιο δικό της αρκεί να τηρούνται οι βασικές κατευθύνσεις αρχιτεκτονικής/σχεδιασμού) .Επιλογή [NOTE] ==== Η επιλογή project ανα ομάδα πρέπει να πραγματοποιηθεί μέχρι *21.04* ==== === Data collector service * Swarmlab ** Swarmlab-hybrid, Menou: *hybrid-linux -> courses/fluentd* ** https://git.swarmlab.io:3000/swarmlab/hybrid-linux/src/branch/master/install/usr/share/swarmlab.io/sec/project/courses/fluentd[git^] ** https://vimeo.com/525221045[video1 ^] ** https://www.twitch.tv/videos/973658726[video2 ^] [NOTE] ==== To project _"Data collector service"_ αποτελεί τη βασική επιλογή για την εξέταση του εργαστηρίου και χωρίζεται σε 3 ενότητες: * Πρώτη ** Δημιουργία δικτύου ** Αυτόματη εγκατάσταση προγράμματος για την συλλογή των δεδομένων ** onEvent - τοπική/προσωρινή αποθήκευση των δεδομένων * Δεύτερη ** Δημιουργία βάσης δεδομένων(Database replication) ** onEvent αποθήκευση των δεδομένων στην βάση * Τρίτη ** Δημιουργία GUI ή ** Δημιουργία Websocket σύνδεσης με την βάση ή με τις βασικές υπηρεσίες για άμεση μεταφορά των δεδομένων ==== === Realtime database backend * Realtime database backend - https://en.wikipedia.org/wiki/Operational_transformation ** https://github.com/share/sharedb[git^] === Fediverse system * Pleroma - https://en.wikipedia.org/wiki/Fediverse[Wikipedia^] ** https://docs.pleroma.social/backend/installation/otp_en/[docs^] === Distributed file system. * IPFS Cluster - https://en.wikipedia.org/wiki/Fediverse[Wikipedia^] ** https://github.com/ipfs/ipfs-cluster[git^] === Object Storage * Minio s3 (amazon s3) - https://en.wikipedia.org/wiki/Amazon_S3[Wikipedia^] ** https://github.com/minio/minio[git^] == Q&A [qanda] Το project υλοποιείται σε ομάδες?:: Ναι. Εγώ δεν βρήκα ομάδα. Τι κάνω?:: Προσπάθησε να ενταχθείς σε μία ομάδα και ενημέρωσε μέσω εμαιλ για την ομάδα που θα συμμετέχεις. Μπορώ να υλοποιήσω κάποιο άλλο project εκτός λίστας?:: Ναι. Αρκεί *να μην είναι "stand alone application".* To project πρέπει να υλοποιηθεί σύμφωνα με τις προδιαγραφές που περιγράφονται και για τα υπόλοιπα. Δεν γνωρίζω asciidoc θα χρειαστεί χρόνο για να το μάθω?:: Οχι είναι απλό. Δεν θα χρειαστείς πάνω από 5 λεπτά και σε περίπτωση που θέλεις κάτι ακόμη πιο απλό γράψε σε markdown - online Editor: https://stackedit.io/app[markdown], https://asciidoclive.com/edit/scratch/1[asciidoc] Δεν γνωρίζω git θα χρειαστεί χρόνο για να το μάθω?:: Οχι είναι απλό. Δεν θα χρειαστείς πάνω από 10 λεπτά - Βοήθεια: http://docs.swarmlab.io/SwarmLab-HowTos/HowTo-gitea.adoc.html[Gitea], https://classic.scottr.org/presentations/git-in-5-minutes/[Git In Five Minutes]