5 sciocche ragioni per cui non usi Heroku

Russell Smith è cofondatore e CTO di Rainforest QA.

Quando dico ad altri CTO e ingegneri che facciamo molto affidamento su Heroku per gestire la nostra attività, invariabilmente hanno la stessa reazione: perché? Perché non AWS? Stai scherzando? Hai sentito parlare di Google Cloud? Sei un idiota?

Questo accade senza fallo. Con. Su. Fallire. L'argomento di solito è più o meno questo: perché pagare di più per un PaaS quando puoi costruirlo da solo su Google o AWS e farlo proprio come lo desideri? A cui dico: Poppycock. A queste persone mancano i veri vantaggi del PaaS e forse anche un po 'di senso economico di base.

Abbiamo utilizzato Heroku ampiamente al QA di Rainforest dall'inizio del 2012 per eseguire il nostro servizio di test di QA automatizzato. Distribuiamo quasi tutto in Heroku: per la produzione, la gestione temporanea e il QA per la maggior parte delle app. È stabile, ha senso dal punto di vista economico e si adatta esattamente alle nostre esigenze.

Ecco i principali argomenti che sento contro Heroku e perché penso che siano (per lo più) fallaci.

# 1. Heroku è NIH (non inventato qui)

Se non è messo insieme amorevolmente dal nostro team, non può essere perfetto per noi, quindi non è abbastanza buono. L'impostazione predefinita in questi giorni è utilizzare AWS (che, tra l'altro, è anche NIH), quindi assumere persone per mettere insieme l'infrastruttura attualmente alla moda, la mia startup è un fiocco di neve in cima. Questa linea di pensiero ha diversi difetti:

  • Il tuo team di ingegneri non ha il tempo per apprendere le competenze e svolgere il lavoro correttamente, a meno che tu non assuma altre persone estremamente intelligenti.
  • Non puoi assumere altre persone estremamente intelligenti. Le persone fantastiche sono molto costose, difficili da trovare e probabilmente già lavorano da qualche altra parte.
  • Raramente hai bisogno di costruire un'infrastruttura solo una volta. Quando le tue esigenze cambiano, dovrai ricostruirlo da capo.
  • La tua infrastruttura personalizzata non sarà testata in battaglia finché non l'hai testata in battaglia. O meglio, fino a quando i tuoi clienti e tecnici non l'hanno fatto. Non farli passare quello. Basta non farlo.

Se pensi di poter assumere le persone migliori per mettere insieme la tua infrastruttura, stai prendendo in giro te stesso. Ma anche se potessi, il tempo speso a costruire questa infrastruttura raramente, se non mai, sposta il tuo prodotto in avanti (a meno che l'infrastruttura stessa non sia una parte fondamentale della tua offerta).

Ecco perché preferisco il mio percorso:

  • Heroku ci consente di concentrarci su ciò che sappiamo fare meglio: creare una piattaforma di controllo qualità automatizzata.
  • Avere alcune limitazioni architettoniche imposte su di te può effettivamente essere una buona cosa. Ti liberano dalla scelta e dalla paralisi dell'analisi.
  • Heroku aggiunge costantemente funzionalità che effettivamente fanno avanzare il nostro prodotto.

Ecco solo alcune delle funzionalità di Heroku che amiamo:

  • Postgres ad alta disponibilità
  • Crittografia per Postgres attivata per impostazione predefinita
  • Log Drain (un modo standard per eseguire la raccolta e l'inoltro dei log)
  • App di revisione (che eseguono il codice in qualsiasi richiesta pull GitHub in un'app completa e usa e getta su Heroku)
  • Il marketplace di componenti aggiuntivi di Heroku

Una recente importante aggiunta degna di nota è Heroku Shield, che ci fornisce un BAA (contratto di socio in affari per la conformità HIPAA di Salesforce.com. Presenta alcuni problemi iniziali, ma se dovessimo creare noi stessi la conformità HIPAA ci vorrebbero un paio di ingegneri a mese o più di lavoro, invece, questi ingegneri stanno portando avanti il ​​nostro prodotto e rendendo i nostri clienti più felici.

# 2. PaaS è troppo costoso

Ma Heroku è davvero costoso! Questo è il pensiero del gregge e ignora il costo di trovare, reclutare e addestrare grandi devops per costruire e mantenere la tua infrastruttura di fiocchi di neve. Per non parlare del costo di trattenere queste persone, metterle in un ufficio e fornire tavoli da ping pong o qualsiasi altra cosa serva per mantenerle felici.

Poi c'è il costo opportunità di assumere persone in ruoli devops e sysadmin invece che in ingegneria del prodotto. E questi costi aumentano in modo lineare con la scalabilità della tua azienda. Con Heroku, i costi marginali diminuiscono su larga scala.

E non dimenticare il costo aggiuntivo della tua mancanza di concentrazione. Se hai a che fare con questioni di infrastruttura periferica, non sei concentrato sul miglioramento del tuo prodotto.

Pagare Heroku significa che non devi preoccuparti di costruire la tua infrastruttura e mantenerla sempre disponibile, e costa comunque lo stesso o meno che assumere e trattenere quelle persone addette alle operazioni.

# 3. PaaS è troppo vincolante

Ma ... ma ... il mio fiocco di neve! Molte persone pensano che la loro applicazione o architettura abbia esigenze uniche. Nella maggior parte dei casi, non è così, e se lo fa, probabilmente non dovrebbe. Tuttavia, sono pronto ad accettare alcuni motivi legittimi per cui potresti non essere in grado di utilizzare Heroku. Eccoli:

  • Hai bisogno di tonnellate di CPU o RAM. Heroku non scalerà fino ad AWS e le configurazioni sono un po 'meno flessibili. Se hai davvero bisogno di migliaia di server, AWS (o anche bare metal) potrebbe essere più economico. Ma Heroku supporta alcune istanze piuttosto considerevoli. Per la maggior parte delle persone, dovrebbe essere più che sufficiente.
  • Sono necessari server bare metal o processori speciali. Se stai facendo apprendimento automatico o altro lavoro ad alta intensità di GPU, Heroku potrebbe non essere la soluzione ideale. Tuttavia, puoi ancora adottare un approccio ibrido come facciamo noi. Usiamo Heroku, ma anche server bare metal per ottenere le migliori prestazioni dalla nostra piattaforma di virtualizzazione.
  • Hai bisogno di RPC non HTTP, come gRPC. Qualsiasi traffico in entrata che non sia WebSocket, HTTP o HTTPS non è supportato dal router Heroku oggi.
  • Non puoi lavorare con i modelli di applicazione supportati. Ad esempio, se hai bisogno di comunicazioni internodo, in modo che un gruppo di server app possa comportarsi come uno per qualcosa come Erlang o Elixir, o hai bisogno di una configurazione di routing unica, allora Heroku non fa per te.

Potrebbero esserci altri motivi, ma spesso non sono essenziali per la tua attività. Se puoi progettare la tua applicazione in modo che si adatti al modello Heroku, ottieni molti vantaggi. Il principale è la coerenza tra le applicazioni: dalla distribuzione, al monitoraggio, alla registrazione e alla scalabilità.

# 4. Heroku non esegue Docker

Ma devo avere Docker! Non preoccuparti più. Dall'inizio di settembre, puoi distribuire le immagini Docker a Heroku. Anche prima, Heroku includeva funzionalità in qualche modo simili a Docker, permettendoti di spedire build containerizzate della tua app. Non corrispondeva alla funzionalità Docker per funzionalità, ma potresti pensare a Heroku come a una versione gestita e ospitata di Docker. In ogni caso, quella preoccupazione ora è svanita.

# 5. Heroku non è abbastanza sicuro

Ma Heroku non è sicuro! LOL. A meno che tu non sia in un settore fortemente regolamentato, come quello finanziario, o non richieda una certificazione particolare che non è supportata da Heroku, questo non dovrebbe essere un problema. Non c'è motivo di credere che Heroku sia significativamente meno sicuro di AWS. Ha un intero team dedicato alla gestione della sicurezza della sua piattaforma; Fai? Inoltre, durante il roll-out della tua infrastruttura prenderete un sacco di decisioni una tantum, nessuna delle quali sarà stata testata. Heroku ha preso queste decisioni molto prima di te e sono state testate su una scala che la maggior parte delle aziende può solo immaginare.

Inoltre, a differenza del tuo ambiente personalizzato, Heroku è coerente e uniforme. Ha confini chiaramente definiti, il che significa che la tua superficie di attacco sarà più piccola. Ciò significa anche che è più facile da capire, quindi è meno probabile che tu faccia qualcosa per sbaglio che crei una vulnerabilità.

E a proposito, gli ingegneri amano un ambiente di distribuzione coerente, per tutti i motivi oltre alla sicurezza. 

In definitiva, ogni azienda deve prendere la decisione migliore per la propria attività e per i propri clienti. Ma ricorda, a quei clienti non importa se sei su un'opera d'arte all'avanguardia e nostrana o su un PaaS generico. A loro interessa che il tuo servizio funzioni, che migliori nel tempo e che tu non venga violato. Heroku ha funzionato molto bene per noi, e probabilmente lo farebbe anche per te.

-

Il New Tech Forum offre un luogo per esplorare e discutere la tecnologia aziendale emergente in profondità e ampiezza senza precedenti. La selezione è soggettiva, in base alla nostra scelta delle tecnologie che riteniamo importanti e di maggiore interesse per i lettori. non accetta materiale di marketing per la pubblicazione e si riserva il diritto di modificare tutti i contenuti forniti. Invia tutte le richieste a  [email protected] .