Newsbeast.gr Case study

 

To newsbeast είναι ένα από τα μεγαλύτερα σε επισκεψιμότητα Ελληνικά ενημερωτικά website.

Είναι ένα project που μας εμπιστεύτηκε το 2015 για την φιλοξενία και αδιάλειπτη υποστήριξή του. Όπως κάθε μεγάλο site, έχει συγκεκριμένα standard τόσο λειτουργίας όσο και ασφάλειας. Για να καταλάβει κάποιος το τεχνικό challenge, αρκεί να δει τα παρακάτω μεγέθη.

Το site έχει στο frontend του uptime 99.996% και το backend 99.98%. Kαθημερινά οι edge servers του δέχονται έως και 12.000 https requests ανά δευτερόλεπτο. Για να πάμε και στα πραγματικά δύσκολα όμως, το website δέχεται καθημερινά πάνω από 20 - 30 διαφορετικών τύπων attacks, τόσο σε Layer 3 (Volumetric DDoS usually) όσο και σε Layer 7 (Application) και δεν έχει υπάρξει ποτέ data breach. 

Από τα παραπάνω νούμερα και μόνο μπορεί να αντιληφθεί κάποιος ότι δε μιλάμε για απλά μια ιστοσελίδα, αλλά για ένα ιδιαίτερα απαιτητικό μέσο. Αν πέρα από όλα αυτά, αναλογιστεί κανείς ότι το CMS του είναι το δημοφιλέστατο μεν Wordpress, αλλά όχι optimized για τέτοια volumes κίνησης, το εγχείρημα της φιλοξενίας του για πολλούς θα φάνταζε σενάριο επιστημονικής φαντασίας. Όσοι γνωρίζουν το wordpress, ξέρουν το πόσο κακό σχεδιασμό βάσης έχει με όλο το περιεχόμενό του (άρθρα, εικόνες κλπ) να βρίσκεται σε ένα πίνακα, τον wp_posts, και όλα τα properties των άρθρων και των εικόνων να κρέμονται σε ένα δεύτερο πίνακα, τον wp_postsmeta. Έτσι, δημιουργώντας μια σχέση 1-many, δημιουργείται αναπόφευκτα και η δημιουργία πολλών left join ερωτημάτων. Αυτό σε ένα website με 10-20.000 άρθρα ίσως να είναι αμελητέο, αλλά σε ένα website με 6.000.000 άρθρα και 25.000.000 φωτογραφίες, απαιτεί εξειδίκευση και κατανόηση όχι μόνο του system αλλά και του programming, ώστε να δοθούν απτές λύσεις.

Reengineering Process Initiated

Μετά από 6 χρόνια επιτυχημένης πορείας της συνεργασίας μας με την ομάδα του newsbeast και έχοντας ανταπεξέλθει στις μέχρι τώρα απαιτήσεις, πάρθηκε η απόφαση για ολικό redesign του website, τόσο εικαστικά, αλλά και σε επίπεδο αρχιτεκτονικής της υποδομής με τα δεδομένα του 2021. Σε συνεργασία με την Cantaloop που έχει αναλάβει την προγραμματιστική υλοποίηση του remake, αφού ακούσαμε τις ανάγκες της συντακτικής ομάδας, πήραμε τα χαρτιά και τα μολύβια μας και βάλαμε κάτω όλες τις παραμέτρους για να ξεκινήσουμε να σχεδιάζουμε το draft της λύσης. Οι βασικοί τεχνικοί άξονες ήταν ότι η εφαρμογή από μονολιθική θα φτιαχτεί με την λογική των microservices και θα μεταφερθεί σε ένα Kubernetes cluster, θα διατηρηθεί το wordpress CMS αλλά θα μετατραπεί σε headless CMS σερβίροντας απλά το API του, το frontend θα γινεί reengineer και θα γραφτεί εξολοκλήρου σε react με next.js και όλο το CI/CD θα επανασχεδιαστεί.

NEWSBEAST AWESOME FACTS

99.996%
Frontend uptime

99.98%
Backend uptime

12.000
req/sec

Concurrency Peak

20-30
attacks/day

Χωρίς κανένα breach

 

Even Better User X-Perience

Όχι μόνο για τους χρήστες αλλά και για τους δημοσιογράφους.

 

Fail-Safe Deployment

Setup που θα μπορεί να κάνει detect and recover από προβλήματα στο build.

newsbeast

 

Auto-Heal Infrastructure

Ικανότητα να επανέρχεται χωρίς ανθρώπινη παρέμβαση όταν υπάρξει πρόβλημα.

 

Disaster Recovery

Το site να συνεχίσει να λειτουργεί ακόμα και όταν πέσει όλο το datacenter.

Even Better User X-Perience

Οι περισσότεροι θα σκεφτούν ότι η εμπειρία πλοήγησης σε ένα site αφορά μόνο τους επισκέπτες αλλά αυτό είναι conceptually λάθος. Η καρδιά ενός website είναι οι δημοσιογράφοι του και ένα προβληματικό στους δημοσιογράφους site, δε θα έχει ποτέ την απόδοση που θα έπρεπε, αφού δε μπορούν να την έχουν οι άνθρωποι που του δίνουν ζωή. Έτσι κοιτάξαμε να βελτιώσουμε την εμπειρία των δημοσιογράφων στο admin με διάφορους μηχανισμούς, όπως για παράδειγμα την αντικατάσταση της ενσωματωμένης λειτουργιάς αναζήτησης περιεχομένου (άρθρα, φωτογραφίες κλπ) με elastic search. Πλέον, μια full text αναζήτηση ολοκληρώνεται σε 1-3 δευτερόλεπτα (σε 24.000.000 items), όταν με την απαρχαιωμένη μέθοδο του WordPress ("%*LIKE*%") έφτανε τα 30-50 δευτερόλεπτα και με πολύ μικρότερη ακρίβεια.

Fail Safe Deployment

Μια λύση που κληθήκαμε να δώσουμε είναι το γνωστό σε όλους, "αφού στο dev παίζει, γιατί δεν παίζει και στο Live;". Η διαδικασία του deployment επανασχεδιάστηκε με την παρακάτω λογική. Υπάρχει ένα preview branch στο οποίο όταν υπάρξει οποιοδήποτε commit, γίνεται αυτόματα trigger στο Jenkins που χρησιμοποιείται για το CI/CD process ένα job που κάνει build ένα νέο container. To container αυτό αφού ελεγχθεί για known vulnerabilities και ολοκληρωθούν τα αυτόματα τεστ, γίνεται deploy στο kubernetes σε μια preview εγκατάσταση του και ειδοποιείται μέσω email ο πελάτης για να γίνει το customer acceptance test. Μόλις δοθεί η έγκριση, η dev ομάδα κάνει merge τις αλλαγές στο master branch και γίνεται initiate η ίδια διαδικασία deploy, αλλά αυτή τη φορά στο παραγωγικό domain. Αν για κάποιο λόγο στο rolling update του live το container αποτύχει να εκκινήσει, η διαδικασία ακυρώνεται χωρίς κανένα impact για το site.

Auto-Heal Infrastructure

Ένα από τα συχνότερα και πιο stressful task ενός site reliability engineer είναι η επαναφορά ενός συστήματος από κάποιο πρόβλημα που δημιουργεί downtime σε μια υποδομή. Έτσι υλοποιήσαμε healthchecks και recovery scenarios στο kubernetes στα οποία ακόμα και εάν υπάρξει οποιοδήποτε πρόβλημα το site να ανακάμψει μόνο του, χωρίς καμία ανθρώπινη παρέμβαση, για τα γνωστά μέχρι τώρα προβλήματα που έχουμε αντιμετωπίσει. Επιπρόσθετα, δημιουργήθηκαν ειδικά scripts που κάνουν behavioral analysis βάσει των logs που συλλέγονται στον logserver και μπλοκάρουν σε επίπεδο CDN content scrappers.

Disaster Recovery

Όσο καλά και να είναι στημένη μία υποδομή, όταν για κάποιο λόγο τεθεί εκτός λειτουργίας όλο το datacenter είναι δεδομένο ότι το site δε θα είναι πλέον προσβάσιμο από τους επισκέπτες του. Αυτό το γνωρίζουν πολύ καλά όλοι όσοι βρίσκονταν τον Οκτώβρη του 2018 στην OVH όπου 18.000.000 διακομιστές σε όλο το κόσμο έμειναν εκτός λειτουργίας για περισσότερες από 10 ώρες. Έτσι η υποδομή σχεδιάστηκε με τέτοιο τρόπο ώστε τα μισά μηχανήματα να βρίσκονται σε διαφορετικό Datacenter με Private Low Latency Link και να λειτουργούν σε διάταξη Active - Hot Stand by.

ΣΥΝΔΕΣΗ

Αίτηση επικοινωνίας

ΠΑΝΩ