ΕΛ/ΛΑΚ | creativecommons.gr | mycontent.ellak.gr |
freedom

Παρουσιάσεις από την φετινή Fosdem 2016: systemd, Rethinking Linux distributions, HTTP/2 for PHP developers

Η FOSDEM είναι η μεγαλύτερη συνάντηση των κοινοτήτων Ελεύθερου και Ανοικτού Λογισμικού, από την Ευρώπη αλλά και από όλο τον κόσμο. Μέσα στο διήμερο της εκδήλωσης διεξάγονται πάνω από 600 παρουσιάσεις και ομιλίες σε δεκάδες διαφορετικές αίθουσες.  Σε αυτήν την σειρά των άρθρων θα σας παρουσιάσουμε μερικές από τις σημαντικές παρουσιάσεις και ομιλίες τις οποίες παρακολουθήσαμε.

1. Systemd and Where We Want to Take the Basic Linux Userspace in 2016

Η συγκεκριμένη ομιλία ήταν η πρώτη που έλαβε χώρα στο FOSDEM και άνηκε στις κεντρικές ομιλίες (keynote) που αποτελούσαν ομιλίες γενικού ενδιαφέροντος. Στη συγκεκριμένη, ο ομιλητής αναφέρθηκε στο systemd και σε κάποια από τα βασικά χαρακτηριστικά που έχει εισάγει καθώς και στο τι χαρακτηριστικά αναμένεται να βγούν το 2016.

Όπως αναφέρθηκε από τον ομιλητή, το systemd δε θεωρείται πλέον controversial, καθώς αποτελεί προεπιλογή σε όλες τις σημαντικές διανομές. Ταυτόχρονα υπηρεσίες όπως το networkd και το sddhcp έχουν υιοθετηθεί ως προεπιλογή από το Fedora και το Ubuntu cloud edition, παρότι δεν παρέχουν καν κάποιο interface επικοινωνίας με το χώρο χρήστη (userspace), όπως και το nspawn για τη δημιουργία και διαχείριση containers.

Στη συνέχεια αναφέρθηκε στο Unified Control Group Hierarchy, το οποίο θα επιτρέψει τον έλεγχο και οριοθέτηση όλων των πόρων (CPU, μνήμη, αριθμός processespid controller κτλ.) σε επίπεδο υπηρεσιών (πχ. Apache έναντι Mysql) με ενιαίο τρόπο, χωρίς να απαιτούνται ξεχωριστά δέντρα ανά τύπο πόρου όπως γινόταν στο παρελθόν. Ως αρνητικό πάνω σε αυτό ανέφερε την μη ύπαρξη backward compatibility, η οποία όμως θα βοηθήσει στον καλύτερο σχεδιασμό στο μέλλον.

Η υπόλοιπη ομιλία αφιερώθηκε στο συστατικό resolved, το οποίο στοχεύει να μεσολαβεί σε όλα τα DNS requests που γίνονται από το σύστημα. Οι λόγοι για αυτό αφορούν τόσο απόδοση, καθώς μέσω του resolved θα μπορεί να γίνεται τοπικό caching των DNS και των LLMAR requests, όσο και ασφάλεια. Πιο συγκεκριμένα όσον αφορά την ασφάλεια, το resolved θα υποστηρίζει το DNSSEC, το οποίο εξασφαλίζει την αυθεντικοποίηση των DNS queries αποτρέποντας επιθέσεις DNS spoofing. Αυτό επιτυγχάνεται μέσα από τη δημιουργία μιας αλυσίδας εμπιστοσύνης (chain of trust) η οποία ξεκινάει από το root zone, το οποίο αυθεντικοποιεί τα tlds, τα οποία με τη σειρά τους αυθεντικοποιούν τα domains κάτω από αυτά. Επιπλέον, το DNSSEC παρέχει κάποια δευτερεύοντα χαρακτηριστικά όπως την ενσωμάτωση πιστοποιητικών SSH, PGP κτλ. Μέσα στο DNS.

Στη συνέχεια ανέλυσε κάποια από τα αρνητικά του DNSSEC, όπως το γεγονός ότι είναι πιο δύσκολο να εγκατασταθεί στους servers (εν μέρει λόγω ελλιπούς τεκμηρίωσης), είναι πιο αργό και επίσης ότι δεν έχει υλοποιηθεί από κανένα λειτουργικό σύστημα. Επιπλέον έθεσε το ερώτημα αν πράγματι χρειάζεται κάτι τέτοιο, δεδομένου ότι αυθεντικοποίηση υλοποιείται ήδη σε άλλα επίπεδα (πχ. TLS), θέτοντας και το φιλοσοφικό θέμα ότι το root zone ελέγχεται από τον IANA. Ωστόσο υποστήριξε ότι αξίζει να υλοποιηθεί, καθώς κάθε βήμα που οδηγεί σε περισσότερη ασφάλεια είναι θετικό.

Δείτε το video της παρουσίασης για το systemd εδώ


2. Rethinking Linux distributions

Ο ομιλητής ξεκίνησε την ομιλία αναφέροντας ότι αυτή τη στιγμή το Linux περιλαμβάνει έναν υπερβολικά μεγάλο αριθμό πακέτων που πρέπει να συντηρούνται και να αλληλοεπιδρούν. Για παράδειγμα, ένας χρήστης που θέλει να δημιουργήσει μια σελίδα σε wordpress, πρέπει πολλές φορές να εγκαταστήσει πάνω από 10 πακέτα στο λειτουργικό του σύστημα. Η λύση που πρότεινε ήταν η αναθεώρηση του τρόπου με τον οποίο λειτουργούν τα πακέτα στο Linux και πιο συγκεκριμένα τις εξής κινήσεις:

  • Εισαγωγή ενός νέου τύπου πακέτου υψηλότερου επιπέδου (πχ. drupal) που να εγκαθιστά αυτόματα όλες τις απαιτήσεις και να ρυθμίζει τον web server κατάλληλα.

  • Συγκέντρωση όλων των package management systems που παρέχουν οι διανομές σε μια ενιαία μορφή (metadata streamlining), ή τουλάχιστον δημιουργία κάποιου εργαλείου που να μπορεί να διαβάσει πακέτα και απαιτήσεις από πολλές διαφορετικές μορφές. Για παράδειγμα, λογισμικό που εγκαθίσταται μέσω apt και μέσω gem δε θα πρέπει να συγκρούεται.

  • Δυνατότητα αλλαγής απαιτήσεων βάσει των προτιμήσεων του χρήστη (πχ. για το drupal ο χρήστης θα μπορούσε να επιλέγει ανάμεσα σε Apache και Nginx). Δυνατότητα ορισμού προαιρετικών απαιτήσεων σε πακέτα (weak dependencies).

Στη συνέχεια πρότεινε κάποια εργαλεία τα οποία βρίσκονται στη σωστή κατεύθυνση και θα μπορούσαν να χρησιμοποιηθούν:

  • Rolekit: Μέθοδος που επιτρέπει την απλοποίηση εγκατάστασης πακέτων με πολλαπλά συστατικά

  • Xdgapp: Τεχνολογία που αξιοποιεί τα containers για να πακετάρει και να μεταφέρει εφαρμογές

  • Atomic workstation: Διαχωρίζει τον σταθμό εργασίας του χρήστη (workstation) από τις εφαρμογές που εγκαθίστανται

  • Nulecule + AtomicApp: Το Nulecule είναι ένα specification για την εγκατάσταση εφαρμογών με πολλά συστατικά σε containers. Το AtomicApp αποτελεί το σχετικό reference implementation.

Δείτε το video της παρουσίασης εδώ


3. HTTP/2 for PHP developers

Η συγκεκριμένη ομιλία είχε στόχο να αναδείξει τα πλεονεκτήματα του HTTP/2 και τις διαφορές του από το HTTP/1. Αρχικά έγινε μια ιστορική ανασκόπηση στο HTTP/1 και στη συνέχεια αναπτύχθηκαν οι βασικές διαφορές του HTTP/2 που περιλαμβάνουν:

  • Χρήση binary stream αντί για plain text

  • Χρήση HTTPS/TLS παντού: Αν και το πρωτόκολλο δεν το ορίζει ως υποχρεωτικό, όλοι οι browsers που υλοποιούν το HTTP/2 απαιτούν HTTPS

  • Επικεφαλίδες (headers) βασισμένες στο πρωτόκολλο Google SPDY: Στο HTTP/1 οι επικεφαλίδες δεν μπορούσαν να συμπιέζονται, με αποτέλεσμα να υπάρχει μεγάλο overhead σε κάθε request, ειδικά αν υπήρχαν πολλά cookies

  • Δυνατότητα πολυπλεξίας πολλών requests μέσα από την ίδια σύνδεση TCP: Μείωση του overhead κατά την ανάκτηση πολλαπλών αρχείων, δυνατότητα παράλληλης ανάκτησης όλων των αρχείων χωρίς περιορισμούς (στο HTTP/1 λόγω της ανάγκης ξεχωριστής σύνδεσης ανά request, οι μέγιστες παράλληλες συνδέσεις που επιτρέπονταν σε ένα server ήταν 5-8, κάτι που οδήγησε και στην πρακτική του domain sharding)

  • Δυνατότητα serverside push: Ο server μπορεί να «αναγκάσει» τον client να εκτελέσει requests για αρχεία τα οποία δεν έχουν ζητηθεί ακόμα (πχ. javascript ή CSS αρχεία που αναμένεται να χρειαστούν αργότερα)

  • Ίδια HTTP status codes (πχ. 200, 404 κτλ.)

Σύμφωνα με τον ομιλητή, αν και υπάρχει καλή υποστήριξη από την πλευρά των browsers για το HTTP/2, δεν υπάρχει ακόμα καλή υποστήριξη από πλευράς servers. Πιο συγκεκριμένα τόσο ο Apache όσο και ο Nginx υποστηρίζουν το HTTP/2 ως beta, ενώ ο IIS θα το υποστηρίζει στην έκδοση Windows Server 2016, η οποία δεν έχει βγει ακόμα στην αγορά.

Δείτε τις διαφάνειες της παρουσίασης εδώ:


Leave a Comment