О пользе спагетти
Dec. 4th, 2016 03:29 pmЕсть прекрасная картинка @benorama, отображающая прогресс архитектур на макароны:
Я думаю, что прогресс цикличен – и никакой пиццы не случится, а случится снова спагетти. В некотором смысле спагетти уже случилось, но не так, как в 90-х.
Спагетти-код 90-х, если продолжать аналогию, был сделан из неправильных ингредиентов. В коде тех времён во время рантайма нельзя, условно, потянуть за спагеттину и вытащить её целиком. Или спагеттина оторвётся, или потащится вся куча и тарелка окажется на полу.
Всё вернулось, но теперь макаронину можно вытащить. И это в самом деле даже круче получается, чем лазанья или равиоли – потому что в них, чтобы добраться до внутренностей, нужно что-то раздербанивать.
Макаронину, напротив, можно вытянуть не тронув то, что рядом. И добавлять макаронины при необходимости можно и по-одной, и хоть кастрюлями.
Макаронины – прямой маппинг на концепт “функция как сервис”, FaaS, яркий пример – AWS Lambda.
Месяц назад я начал проектировать большую (ну, для меня) распределённую архитектуру – и буквально за неделю выбросил идею с микросервисами и пришёл к FaaS. Не смотря на то, что придётся хорошо попыхтеть над средой рантайма для таких макаронин, общий выигрыш по управляемости и надёжности получается колоссальным.
Управляемость и унификация эта, правда, очень небесплатна. Нынешние спагетти можно накладывать только на башню тарелок, причём все тарелки в стопке – разные. Для небольших масштабов оно неприемлемо дорого получается.
Зато когда большой проект надо выкатить как minimal viable product побыстрее, а потом достраивать тут и там – прямо самое оно.