Dalla tua descrizione, non vedo una contraddizione tra i due, perché i problemi sono molto diversi, e penso che potresti interpretare erroneamente il significato di "complessità essenziale"
Quando l'articolo su Kubernetes menziona la "complessità essenziale", lo interpreto come una complessità essenziale o accidentale *.
- La complessità essenziale: la complessità della soluzione necessaria a causa della complessità del dominio del problema. Per esempio. se si fa un'applicazione di contabilità, la complessità della contabilità a partita doppia sarebbe una complessità essenziale.
- Complessità accidentale: la complessità introdotta quando realizziamo un'applicazione software. Un esempio di complessità accidentale sarebbe il codice per gestire le rimozioni orfane nel database relazionale perché il tuo ORM non lo gestiva bene. Una certa complessità accidentale è inevitabile, ad es. occupandosi di ridimensionamento.
Quindi esaminiamo il problema della distribuzione per i due casi citati:
- Reddit - La complessità essenziale si riferisce a post e commenti, ecc. La complessità introdotta negli script di distribuzione rientra in una complessità accidentale.
- Kupernetes - Essendo uno strumento correlato alle distribuzioni in un ambiente scalabile, queste due cose diventano una complessità essenziale (ho poca esperienza con Kubernetes, quindi quanto bene risolve questi problemi non è per me un commento)
Quindi, se parli di introdurre uno strumento di cui non hai bisogno in questo momento ma che potrebbe essere necessario in futuro, suona come inutile complessità accidentale.
Ricorda, proprio come Robert Harvey ha scritto, per una startup, il time to market dovrebbe essere la tua preoccupazione. E sarà perfettamente giusto introdurre ora una certa complessità accidentale al fine di ottenere un time-to-market più rapido. Potresti anche introdurre uno strumento di cui hai bisogno in questo momento, ma non in futuro!
E stai attento a prendere decisioni difficili da cambiare in anticipo. Presto è il momento in cui hai la minima conoscenza per aiutarti a prendere la decisione giusta. Se riesci a impostare te stesso in modo da poter posticipare tali decisioni, ti servirai parecchio.
E ricorda anche che i problemi di ridimensionamento possono essere affrontati gradualmente. Normalmente non hai bisogno di gestire grandi quantità il giorno 1 (sostituendo un'applicazione esistente con una grande base di utenti che è l'unica eccezione che mi viene in mente in questo momento)
* Credo che i termini Complessità accidentale ed essenziale siano stati introdotti nel libro "No Silver Bullet", che sfortunatamente non ho ancora letto