Migrazione da Algolia verso Elasticsaerch

Quando si parla di ricerca full-text su siti o applicazioni e specialmetnte come motore di ricerca per l’ e-commerce Algolia è sicuramente il miglior servizio disponibile, ma sicuramente costoso quando il numero delle ricerche comincia ad aumentare. Elasticsearch puo’ essere un’ottima soluzione di ripiego, sicuramente piu’ economica anche se con prestazioni diverse. In questo articolo invece analizziamo le caratteristiche principali dei database NoSql.


Le funzionalità di Algolia

Parlando di web-applications, le funzionalità che Algolia mette a disposizione sono strabilianti. Questo sopratutto grazie alle librerie client che Algolia stessa rilascia per l’integrazione sulle varie piattaforme. Queste librerie permettono una ricerca in tempo reale su database di milioni di records, rendendo inegualgliabile l’esperienza di ricerca sui documenti per precisione e velocità.

Un punto negativo di Algolia è invece il prezzo: siccome le tariffe sono tarate sulla quantità di ricerche effettuate, maggiore è il numero di ricerche sul sito, maggiore è il prezzo, cosa che ne rende l’adozione difficile per tutte quell imprese che non hanno l’intenzione di investire un migliaio di euro al mese per il servizio di ricerca.

La migrazione verso un servizio di ricerca alternativo

Nel nostro caso, il cliente aveva chiesto, data la necessità di ridurre i costi della ricerca per privilegiare altri tipi di sviluppo, di poter utilizzare un servizio alternativo. La loro indicazione era quella di testare in ogni caso la ricerca sul database MySQL della web-application, un installazione Laravel datata qualche annetto.

Le problematiche da risolvere nell’attività di migrazione del database Algolia

Le fasi delicate da affrontare nella migrazione dei dati contenuti nel database di Algolia, circa 1 milione e mezzo di record, erano:
– la realizzazione di uno script che esportasse i records da Algolia e li importasse nella nuova soluzione
– la realizzazione in Laravel di un servizio di query sulla nuova soluzione che riproducesse il piu’ possibile le caratteristiche di Algolia sia come velocità che come intelligenza nella ricerca full-text in lingua italiana
– la sostituzione delle funzionaità di caricamento dei dati su Algolia con funzionalità per il nuovo servizio.

La migrazione da Algolia a MySql

Una cosa molto positiva che si puo’ dire di Algolia è che il procedimento di esportazione dei dati è molto chiaro ed efficiente: attraverso una chiamata api ‘browse’ si ottiene l’eportazione di tutto il database ad una velocità strabiliante.

Peccato che lo stesso non si possa dire di MySql:un volta riprodotta la struttura di tabelle (con indicizzazione fulltext, inno-db), lo script di migrazione che estraeva i dati da Algolia per inserirli nelle nuove tabelle andava a rilento e quasi sempre vero i 300.000 records falliva, killato dallo stesso sistema operativo (Ubuntu 20, un istanza Digital Ocean con 2 processori ed 8Gb di memoria).

Abbiamo dovuto creare uno script che potesse caricare solo 100.000 records alla volta, ed in questo modo in un tempo di ca 6/7 ore l’intera esportazione poteva adare a buon termine.

Qui pero’ cominciavano i guai seri, perchè la query MySql fultext (match…against) su una tabella di una decina di Gb risultava essere molto lenta oltre che imprecisa (la durata dell’esecuzione oltretutto aumentava con l’aumentare delle parone nella stringa ricercata).

Verificata l’inefficienza di MySql in questo tipo di attività, abbiamo proposto al cliente l’adozione di Elasticsearch.

La migrazione da Algolia a Elasticsearch

Abbiamo quindi installato Elasticsearch tramite Docker su un’istanza EC2 Small Amazon Aws. La migrazione è risultata molto rapida grazie alle api bulk di Elasticsearch.

La ricerca sul motore Lucene di Elasticsearch è risultata molto precisa e veloce. L’unica differenza alla fine dell’attività è stata la mancanza della ricerca in tempo reale fornità da Algolia, ma nel complesso Elasticsearch si rivela essere un competitor di alto livello con prezzi concorreziali.

Sviluppo App Low Cost con Flutter

Per una startup, la domanda: “Quanto costa realizzare un’app iOS o un’app Android?” è sicuro che arriverà. Ma la risposta richiederà almeno una stima approssimativa del progetto.

Senza una stima, è difficile immaginare quante ore gli sviluppatori iOS o Android dovranno dedicare allo sviluppo di un’app. Un’alternativa potrebbe essere quella di adottare un framework per app multipiattaforma come Flutter.

In questo articolo, ci concentriamo sul costo medio per creare un’app iOS, un’app Android e un’ app Flutter e valutiamo se esiste qualche differenza tra questi tipi di sviluppo in termini di tempo e denaro.

Abbiamo riportato inoltre  in questo articolo i moltissimi altri vantaggi introdotti dalla versione Flutter 3


Quanto costa sviluppare un’app Flutter iOS o Android?

La dimensione di un progetto è il fattore decisivo nel suo costo fintanto che la tariffa per i servizi di programmazione e il tempo sono legati insieme in un unico pacchetto. Per dimensione, intendiamo la complessità della funzionalità e della logica di business. Lo sviluppo può includere anche:

– Disegni con animazione
– Prototipazione
– Soluzioni personalizzate che richiedono ricerca tecnica
– Risultati e cambiamenti inaspettati lungo il percorso

Secondo le nostre stime di progetto medie:

una semplice app iOS con funzionalità di base richiede solitamente fino a tre mesi per essere creata e costa circa eur 20.000

un’app più complessa che richiede più di tre mesi di sviluppo costerà circa eur 40.000

un’app iOS o Android ad alta complessità con un ampio database (che noi possiamo gestire con MySQL, Elasticsearch o Algolia) per un’azienda può durare più di sei mesi e richiedere 60.000 euro.

Il costo dello sviluppo del software Android è diverso dal costo dello sviluppo iOS?

La verità è che lo sviluppo di Android costa più o meno quanto lo sviluppo di iOS. L’unica cosa è che la varietà di dispositivi Android e le dimensioni dello schermo rendono questo ambiente più difficile da lavorare e, pertanto, lo sviluppo delle app Android potrebbe richiedere un po ‘più di tempo.

Nella fase di stima del progetto, noi confermiamo quali dispositivi e versioni del sistema operativo dovrebbero supportare un’app Android. Se c’e’ bisogno di sviluppare un prodotto per versioni precedenti di Android, il prezzo dell’intero progetto sarà ovviamente più alto.

Usare Flutter per sviluppare applicazioni low cost

Il vantaggio di Flutter è quello di poter produrre applicazioni native iOS e Android con la stessa base di codice. In questo modo con lo sviluppo di una sola applicazione se ne ottengono due: le uniche limitazioni riguardano casi in cui sia necessario utilizzare tecnologie particolari o librerie native dei due sistemi iOs ed Android, ma sicuramente l’80% delle applicazioni si possono realizzare con Flutter.

Preventivi per lo sviluppo di applicazioni multipiattaforma

Questa software house presta molta attenzione alle stime delle app, approfondendo gli obiettivi e i processi aziendali dei nostri clienti subito dopo aver compilato il modulo di contatto sul nostro sito.

Innanzitutto, facciamo una stima approssimativa gratuita che coinvolge:

– analisi aziendali di base
– preparazione di feedback dettagliati sulla possibile architettura dell’app, casi d’uso e implementazioni tecniche
– presentazione del nostro feedback, chiarimento dettagli ed redazione dell’elenco dei requisiti
– aggiornamento del feedback e creazione di un’offerta che includa il numero di ore per lo sviluppo, lo stack tecnologico, l’architettura dell’app e le funzionalità che andranno nelle versioni alpha, beta e successive

negoziando un’offerta che soddisfi le esigenze dell’attività del nostro cliente.

Si possono sempre confrontare i prezzi medi, ma la ogni app e’ particolare e necessita in primo luogo di una stima e solo dopo si sara’ in grado di capire quanto costerà l’app.

Costi di sviluppo di app sul mercato internazionale

Quando si tratta della qualità e del costo dello sviluppo di app mobili, uno di questi elementi di solito ha un peso maggiore. E, tradizionalmente, la decisione su quale azienda rivolgersi spesso porta alla mappa di Google.

Quando cercano un team di sviluppo, le aziende in genere guardano agli Stati Uniti, al Regno Unito, all’India e all’Ucraina. In realtà l’Italia è diventata una piazza in cui si ottengono degli ottimi prodotti in relazione alla qualità ed al prezzo, tant’é vero che molte agenzie inglesi utilizzano sviluppatori italiani.

In questo articolo, l’unica cosa che vorremmo confrontare è il prezzo.

Secondo Clutch, il costo medio per lo sviluppo di app Swift per iOS con società con sede negli Stati Uniti e nel Regno Unito è di $ 50.000. Tuttavia, il prezzo effettivo della tua app può dipendere da più fattori come lo stack tecnologico, l’architettura, i piani di scalabilità e i possibili percorsi degli utenti.

In Ucraina, la tariffa oraria media è in genere molto più bassa (circa $ 50 l’ora) rispetto agli Stati Uniti, e quindi il costo totale della tua app iOS sarà inferiore. Lo stesso vale per lo sviluppo di app Android.

L’India è popolare per i prezzi davvero bassi. Ad esempio, puoi trovare sviluppatori freelance in India per $ 25 l’ora.

In Italia il costo medio è calcolato intorno ai 60 eur/ora, dipende sempre e comunque dalla durata e dall’entità del progetto.