Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Как чинить баги, если вы — органический продакшн с аптаймом в десятки лет, когда нельзя сделать ни ребут, ни замену внутренних модулей? Почему переиспользование кода — это логично, но печально? Отчего нельзя выключить какой-нибудь белок и стать неуязвимым к ВИЧ или SARS-CoV-2?
Лирическое отступление
Это своего рода продолжение предыдущей статьи про "Программирование, иммунитет и армию". Я всё ещё программист, а не биолог, поэтому могу излагать материал неточно, с небольшими огрехами или с большими ошибками. Поэтому, пожалуйста, если вы специалист и видите какое-то непотребство — сообщите о нём. Буду рад узнать новое и исправиться.
Цель повествования
Продолжить рассказ о вместилище нашего духа со стороны программиста и программных абстракций, а также немного отвлечься и рассказать, почему нельзя просто так взять и выключить белок ACE2, как предлагалось, например, где-то в комментариях к статье о "курении vs коронавирус", дабы организм наш стал невосприимчив к коронавирусу.
Основные проблемы багфикса в биологии
Итак, для начала про поиск багов. Там уже всё непросто.
- Брейкпоинты не завезли.
- Каждый инстанс немного (а иногда очень даже ощутимо) отличается от любого другого.
- Проявления багов, которые видны невооружённым глазом, обычно уже имеют фатальный характер, который может непоправимо повлиять на аптайм системы.
- История событий, происходивших с инстансом до момента обнаружения бага, крайне важна, но никаких логов не предусмотрено. Совсем никаких.
И это верхушка айсберга. Но про поиск багов в следующий раз. Пока нас интересует их исправление. С ними всё ещё более грустно.
- Поднять новый инстанс, чтобы всё исправилось — не вариант. Перезагрузить существующий инстанс — совсем не вариант. При попытке выключить и снова включить сообщают о тёмном коридоре и ярком свете в его конце, но баг это не исправляет.
- Юнит тесты только в пробирке на очень ограниченной выборке и только в очень маленькой окрестности того места, которое собираемся чинить.
- Никакой гарантии независимости модулей, а точнее наоборот, множество прецедентов их глубокой и ни разу не очевидной зависимости.
- Интеграционные тесты не завезли. Только тесты на реальных продакшенах. В начале на мелких инстансах типа мышей, а потом и на антропоморфных продакшенах. То есть та самая всеми любимая фраза "пользователь — лучший тестировщик" — верна как никогда.
- Прогнать полную регрессию тоже не вариант, мы банально не знаем ни всех возможных состояний системы, ни относительно быстрых способов перевода системы в эти состояния. Было бы круто иметь эргодичную систему, чтобы за один прогон узнать всё что нужно. Но пока такую не изобрели.
- Цикл дебага, в лучшем случае — это несколько лет, а обычно десятки лет. Плюс нет гарантий, что шероховатости фикса удастся быстро подпилить напильником. Очень часто они фатальны и нужно начинать поиск способа решения почти с нуля. По этому поводу даже понятие допустимого ущерба есть. Это когда профит от приёма препарата ощутимее, чем проблемы, которые он создаёт. То есть без негативных последствий можно пить только минералку… и то не точно.
- Деплой бага. Далеко не всегда можно просто взять и скушать таблетку. Или вколоть что-нибудь, закапать куда-нибудь или свечку вставить в то самое место. Проблема доставки фикса к месту его применения — это ни разу не тривиальная задача. Пока что, бо́льшая часть медикаментов похожа на броадкаст или ковровую бомбардировку. Со всеми вытекающими последствиями.
Итак, давайте пройдёмся по всему вышеозначенному и попробуем понять, почему оно такое какое есть и что с этим пытается сделать современная наука.
Переиспользование кода
Очень хочется начать с этого пункта, потому что он объяснит добрую половину всех проблем.
Очень много свидетельств указывает на то, что теория эволюции имеет место быть и все мы произошли от одних и тех же немногочисленных предков много-много миллионов лет назад. Как следствие, многие основные компоненты и механики работы нашего организма очень сходны с прочими живыми организмами на планете. Всё наше пищеварение, дыхание, кровообращение, размножение, нервная деятельность и многое прочее, в сущности, похоже. Таки да, за время существования жизни вариаций наплодилось изрядно, но на уровне принципов работы все мы похожи и исключения лишь подтверждают правила. Именно поэтому никаких квадратных трёхчленов с тентаклями и ложноножками в мире нет. У всех более-менее сходный пищеварительный тракт, способ поглощения кислорода из воздуха, принципы мышечной деятельности и др.
Например, принципы работы и хардварная часть нервной системы одинаковы почти у всех. Поэтому нейробиологи построили полную модель нервной системы червя и сейчас активно карпеют над дрозофилой. Ибо эти знания отлично переносятся и на человека. Та же петрушка и с многими химическими аспектами. Те же нейромедиаторы более-менее у всех совпадают. И изучив их работу на рыбах можно перенести опыт на людей. Тут же можно вспомнить, что в геноме в пределах одного царства набор белков очень сходен… да что там царства, вообще хватает общего у всего живого на планете. Этому, кстати, очень рады генные инженеры. Если бы всё было уникально, то ген скорпиона в пшеницу вставить бы не получилось. Но в рамках нашей темы багфикса — это сплошная головная боль.
Давайте приведу несколько примеров веществ, которые влияли и влияют на жизнь каждого читателя, но мало кто в курсе как с ними всё непросто особенно в части переиспользования.
Гистамин
Все слышали про "противовоспалительные". Многие слышали, что некоторых из них называют называют "антигистаминными". Всё потому, что гистамин — один из важных медиаторов воспаления на периферии нашего организма. Именно он отвечает за кучу событий, случающихся при воспалении. И именно его блокируют вышеупомянутые препараты. А, как говорится, "нет человека гистамина — нет проблем".
Но не тут-то было. Гистамин оказался ещё очень важной штукой при изучении механики аллергии, которая, в общем-то, то же воспаление, только локальное и стихийное. Конечно же, это верно в случае если мы говорим про аллергию 1-го типа. Она развивается за минуты и её классический пример — это когда тополь начал активно "плодоносить" пухом и все сразу начали рыдать и чихать.
Казалось бы, счастье! Фармацевты думали забацать обезболивающее, а ещё и противоаллергическое случилось! Но нет. Гистамин используется не только в иммунной системе как медиатор воспаления, но и в нервной системе как нейромедиатор. Что это значит? Это значит, что когда вы употребляете блокатор гистамина, то уменьшаете воспаление, снимаете приступ аллергии, а попутно блокируете главный возбуждающий медиатор ЦНС. Как следствие: заторможенность, вялость, сонливость и всё то, что вызывают противоаллергические препараты. То есть чихать и плакать вам уже не хочется, но и мир захватывать как-то особого желания нет. Зато вздремнуть — это запросто!
И, казалось бы, уже весело и больше нам не надо. Но нет, природа умеет удивить. Ещё гистамин отвечает за секрецию желудка. Блокируете гистамин — угнетаете секрецию желудка. Это, конечно, не усиление активности, когда прямой путь к язве, но тоже приятного мало.
И даже это ещё не всё! Там ещё есть пяток мест на которые влияет гистамин, но они уже чуть менее важные.
В итоге получаем штуку, которая есть везде, влияет на всё и решительно непонятно как бы так и рыбку съесть и на лисапеде покататься. Таким образом, уже можно начать догадываться как страдают биологи в попытках воспользоваться какой-либо механикой организма.
Циклооксигеназа
Сие есть участник синтеза простагландинов, которые инициаторы болевых ощущений и воспаления. То есть всякие парацетамолы и ибупрофены — это про блокировку циклооксигеназы, чтобы не создавались простагландины и было не больно. Но та же циклооксигеназа есть в желудке и участвует в механизме его секреции. Она же задействована в сокращении гладкой мускулатуры ЖКТ, она же отвечает за расщепление жиров и ещё за разные штуки.
Кроме того, нужно упомянуть про "доступность" для препарате тех или иных мест нашего организма. В случае вышеозначенных обезболивающих многие помнят, что ибупрофен — это про болевой синдром, а парацетамол — это про жаропонижение. Почему же разное действие, если химический принцип работы у них абсолютно одинаков? Да всё просто: ибупрофен отлично действует на весь организм и почти не попадает в мозг. Так как там есть великий гемато-энцефалический барьер (ГЭБ), который достоит отдельного рассказа и который, по сути своей, является химическим фаерволом. Он-то и не пропускает через себя ибупрофен. С парацетамолом же ровно обратная ситуация: он отлично проходит через ГЭБ и бо́льшей частью влияет на центры в мозге.
Кстати, этот же механизм активно пытаются использовать в случае гистамина. Там очень хотят создать аналог ибупрофена, который не сможет проходить ГЭБ, а значит не будет никакой сонливости, но при этом будет исправно действовать на все остальные части организма и аллергия перестанет донимать.
Муцин
Теперь немного иной пример, который приблизит нас к белкам и их "отключению". Муцин — основной компонент всех слизей. В общем-то mucus и переводится как "слизь". Но эта же штука позволяет клеткам рака и иных опухолей уходить от обнаружения иммунной системой. Грубо говоря, опухоль начинает вырабатывать слизь, обмазывается ей и становится невидимой для иммунитета. Логично предложить: давайте выключим муцин и излечим многие опухоли и рак! Но, как вы понимаете, фигня получится. Так как вместе с фиксом рака вы выключите все слизистые оболочки и тазиком накроется ЖКТ, половая система и прочие скользкие секреты организма. После чего жить вы будете ещё меньше, чем с раком.
Невосприимчивость к коронавирусу
Начну с известного примера про ВИЧ. Сей наимерзейший вирус садится на белок CD4 и благодаря ему может зацепиться за клетку и проникнуть в неё. Первая проблема в том, что это белок клеток иммунной системы. Вторая проблема в том, что это важный белок иммунных клеток. По сути, он отвечает за некий аналог ssl handshake при встрече двух клеток иммунной системы. Поэтому если его выключить, то иммунный ответ на ранее неизвестную угрозу станет не 10-14 дней, а 2-4 месяца. В общем-то, это равносильно поздней стадий СПИДа. Немного позитива здесь в том, что часть нашей популяции имеет мутировавшую версию CD4 и ВИЧ не может за неё зацепиться. То есть часть людей имеет врождённый иммунитет к вирусу.
После примера с ВИЧ, думаю, понятно, что желание отключить ACE2, чтобы заиметь иммунитет к коронавирусу — это очень опасная хотелка. Таки да, вы можете стать невосприимчивы к вирусу, но в комплекте можете получить сбои в функционировании организма несовместимые с жизнью.
Именно поэтому вакцину от нынешней напасти нам обещают не завтра, а не раньше 2021 года. И даже такой срок — это чудовищно быстро для современных реалий.
Продолжение багфикса и тестов
Итак, с переиспользованием исходной кодовой базы разобрались. Всё сложно и всё связано со всем. Что же ещё портит жизнь при биологическом багфиксе?
Юнит тесты
Как вы поняли, они есть. Выглядят они как эксперименты на целевой группе клеток в условиях пробирки, чашки Петри или иного искусственного вместилища жизни. Однако такая штука лишь отвечает на вопрос "а будет ли у моего препарата воздействие на исходную проблему?". Никакой гарантии, что вышеупомянутая зависимость по коду не сыграет свою роль.
Для тех, кто придерживается подхода "мне повезёт!" рассказываю маленький кейс про Альцгеймера. Проблема нейродегенеративных заболеваний довольно проста: в нейронах накапливаются "неправильные" белки. Их и использовать нельзя, и дефолтные механизмы сборки мусора их не видят. В итоге в какой-то момент в клетке собирается столько нечистот, что она перестаёт функционировать и скоропостижно отправляется к праотцам. Один из векторов лечения был прост и прекрасен: давайте стимулировать внутренний процесс сборки мусора, чтобы клетка сама себя очистила. Прототип на тестовой группе нейронов в пробирке ожидания оправдал, завалы мусора в клетке разгреблись и биологи весело пошли к испытаниям на живых организмах. Вот тут и была засада: Альцгеймер начал рассасываться, а вместе с ним начала рассасываться печень, почки и ещё парочка органов. То есть пока garbage collector нейронов приводил дела в порядок, аналогичных механизм в остальном организме мусора не нашёл и, как умел, начал чистить здоровые клетки.
Перезагрузка и новые инстансы
В продолжение темы Альцгеймера. В общем-то, в организме реализована перезагрузка или частичное переинстанцирование, но на локальном уровне. В случае тех же вирусов не существует способа исцелить клетку, поэтому её просто убивают. После изничтожения зловредов остатки популяции клеток пострадавшей ткани восполнят потери. Та же штука с накоплением некондиционных белков, которое было описано в предыдущем пункте. В общем случае, такую клетку просто убивают и дело с концом. Но с нейронами "просто убить" — не прокатит. Это кусок нейросети. В нём информация хранится. Поэтому и возникает засада с Альцгеймером.
Посему, кусочный рестарт или переинстанцирование — это тоже вектор лечения, но мы пока не умеем так избирательно влиять на клетки. А мочить всех без разбора — это хреновый вариант. Хотя и его применяют. Химиотерапией называется.
Feature specs
И здесь высокая зависимость всех систем нам прохода не даёт. Вырастить в пробирке, например, кусок ЖКТ — это что-то странное, да и для его жизнеобеспечения нужна кровеносная система, нервная система для управления, эндокринка для регуляции… и получаем уже добрую половину организма. И так со многими внутренними системами. Поэтому, насколько я понимаю, для фиче-тестинга больше подходит моделирование. Тогда можно навалить стабов/моков на все зависимости и посмотреть на поведение только интересующего фрагмента. Уже не так локально как в случае юнитов, но и не так глобально, когда весь инстанс нужно поднимать.
Засада моделирования в том, что мы очень мало знаем о принципах работы организма. Не говоря уж о взаимосвязях его частей и их взаимном влиянии. Вон, последнюю нобелевку дали за эритропоэтин и механизм генерации красных кровяных телец. Первые опыты и исследования в этом направлении былы 1905 году. К тому же, кровь известна человечеству и им же изучается с очень давних времён. Однако механизм управления генерацией её основной составной части узнали только недавно. Что уж говорить о прочих частях организма.
Полна регрессия
С ней тоже всё очень не очень. Мешает всё та же нехватка знаний об устройстве организма. Сейчас все тесты на живых организмах выглядят похожим образом.
Сначала заражаем организм или любым иным способом переводим в "больное" состояние. В случае обычных болезней это очень просто. В случае хитрых дегенеративных заболеваний — целое искусство, чтобы найти способ устроить того же Альцгеймера мышке за неделю, а не брать самосвал кандидатов и ждать N лет пока сам разовьётся.
Затем начинается терапия. В ходе неё подопытный обвешивается всевозможным логированием, чтобы оценить вред и пользу от воздействия. Тут сразу же возникают вопросы о логах. Потому что биологические жидкости, например кровь, можно брать хоть каждый полчаса и наблюдать за ними. А заглянуть внутрь мозга или печени получится только один раз в случае мышек и вообще ни разу в случае человека. Поэтому контролировать можем далеко не всё. Из-за этого очень важно набирать большую статистику испытаний и проводить их настолько долго, насколько это возможно.
Здесь же начинаются мечтания об эргодичной системе. Это когда одна система проходит через все возможные состояния за время своей жизни. Например, если бы человек за свою жизнь смог попробовать себя во всех возможных специальностях, то в первом приближении он был бы эргодичен. Тогда можно было бы взять историю жизни любого индивида и понять распределение рабочих специальностей без сбора огромной статистики. Но увы, в биологии такие штуки работают только в масштабах популяции и никак не связаны с дебагом.
Деплой
И на сладкое — доставка фикса в нужное место. Эта штука может радикально изменить весь подход к лечению. В сущности, все вышеописанные проблемы — это следствия ковровой бомбардировки организма активным веществом. В большинстве случаев, если вы съели таблетку или получили укол, то вещество размазывается ровным слоем по всему организму и влияет на всё подряд: и на целевые больные участки, и на нецелевые здоровые. Здесь, помимо очевидной проблемы с неоптимальным расходом препарата, есть и другие, не очень очевидные проблемы: концентрация и время воздействия.
Во-первых, ваше лекарство могут скушать здоровые клетки. Это особенно актуально в случае всяких витаминов и стимуляторов общих функций. Например, у вас что-нибудь суставодегенеративное, например вы много танцевали, и коленка начала отваливаться. Вам выписывают хондроитин и витамины группы B. Вы это всё принимаете, а потом оказывается, что до пострадавшей коленки особо ничего и не добралось, ибо здоровые части тела радостно схарчили полезную нямку.
Во-вторых, возможны варианты, когда в конкретных областях организма нужно долго поддерживать высокую концентрацию препарата. И легко может оказаться, что такая концентрация/экспозиция не совместима с функциями других органов. Как пример — опухоли. Они являются клетками нашего организма, поэтому в большинстве случаев, что вредно всему организму, то вредно и им. Человек знает уйму гадости, которая хорошо убивает эукариотические клетки. Но пока нет ни единого способа доставить эту гадость точно по адресу.
В третьих, человечество открыло целый класс довольно простых веществ (пептидов), которые в организме занимаются (или раньше занимались, но всё ещё сохранили свои функции) локальной передачей сигналов и точечным управлением разнообразнейшими клеточными функциями. Вещества просты, область действия локализована, функции многих из них хорошо изучены и всё замечательно. То есть мы можем их синтезировать, мы знаем куда их положить чтобы достичь определённого результата… только не можем их туда доставить. Таблетки — совсем не вариант, пептиды очень нежные и развалятся в самом начале ЖКТ, в кровоток тоже не закинуть. В косметологии их подкожно вводят, но там всё спорно и ни о какой существенной клинической пользе пока говорить не приходится. Хотя потенциал огромный.
Выводы
Как видите, всё непросто у наших коллег по биологическому цеху. Так что не торопите их, у них и так жизнь непростая. Лучше заходите к ним в гости, если в программной разработке взгруснётся и код покажется слишком структурированным и красивым. После этого у вас есть все шансы радикально сменить область работы, либо возрадоваться положению дел на проекте и отсутствию такого форменного безобразия и эпического легаси.