Επισκόπηση
Η πλατφόρμα της σχολής χρειαζόταν κάθε ανεβασμένη εικόνα να φτάνει σε web-ready μέγεθος χωρίς χειροκίνητη παρέμβαση. Αυτή η μικροϋπηρεσία εγγυάται σταθερό στόχο: περίπου 40 KB ανά εικόνα.
Τι έφτιαξα
Ένα μοναδικό POST endpoint σε Bun.serve με sharp (libvips). Η λογική διαβάζει πρώτα τα μεταδεδομένα: αν η πηγή είναι ήδη εντός προϋπολογισμού επιστρέφεται ως έχει· διαφορετικά υπολογίζεται συντελεστής συρρίκνωσης από το μέγεθος (sqrt(size/40KB)/2), μειώνοντας κάθε διάσταση στο μισό για να μειωθεί το εμβαδόν στο ένα τέταρτο, και η εικόνα αλλάζει μέγεθος και επανακωδικοποιείται.
Μοιράζεται το πρότυπο ασφαλείας του οικοσυστήματος: CORS preflight, λίστα επιτρεπόμενων referer και έλεγχος ταυτότητας μέσω συνόδου της σχολής — συν την ίδια τυποποιημένη ένωση EndpointResponse με τις αδελφές υπηρεσίες.
Τεχνικά highlights
- Αναλογική κλιμάκωση βάσει προϋπολογισμού, όχι σταθερών διαστάσεων
- Γρήγορη διαδρομή βάσει μεταδεδομένων χωρίς επανακωδικοποίηση
- Κοινά πρότυπα auth και τυποποιημένων απαντήσεων στην οικογένεια μικροϋπηρεσιών
Αποτέλεσμα
Τρέχει σε Docker δίπλα στην πλατφόρμα της σχολής, καλούμενη κατά το ανέβασμα.