Вооот. Ну и после долгих ожиданий и сопутствующего задротства я могу похвастаться вымученным-выстраданным сертификатом с
Cloud Networking (картинка кликабельна, по ссылке - мой на удивление хороший результат):
Формально - 5 недель, фактически - 4 (и ещё одну неделю дали в качестве расширенного дедлайна для ДЗ, что оказалось очень и очень кстати). Ведут курс два сравнительно молодых парня, один, судя по имени-фамилии-внешности, из Индии, второй - такой классический интеллигентный “Ivy leaguer”. Ну и оба ну никак не похожи на стереотипных бородатых сисадминов в свитерах, что уж там :) - но нам же, в конце концов, про сети слушать, а не уютную субкультурку по чисто внешним признакам оценивать, правда?
Вообще, когда я только приступила к просмотру лекций, поначалу мне показалось - “да ладно, фигня, справлюсь, и не такое с наскока осваивала”. Благо лекций не так уж и много - на неделю, как правило, менее часа обязательного материала (иногда дополняемого опциональными интервью). Но, как выяснилось - хрен там. Лекции - это очень и очень “верхушка айсберга”.
Самое главное в этом курсе - то, что вас там заставят читать (и не “дополнительные материалы”, а очень даже обязательные, и, будьте уверены, по ним будут вопросы в заданиях). Читать много. И не просто линки по углам интернета, а академические публикации, RFC и ещё кучу всего. Чем DCTCP отличается от классического TCP, почему для топологии fat-tree не нужны дорогущие свитчи на 100500 портов, какие есть техники для виртуализации доступа к сети (и как заставить приложение поверить, что все его инстансы расположены в одной подсети, даже если на деле это не так) - и прочие тонкости работы в условиях высоконагруженных датацентров. И не только датацентров - в последней неделе курса было и про wide-area networks и то, почему latency, а не bandwidth - главный бич современных сетей, и как люди худо-бедно с этим борются. Да, это, конечно, достаточно узкоспециализированный материал - но оно дико, дичайше интересно.
Собственно, вот при таких вот раскладах я и поняла, что не просто так в описании курса указан пререквизит “Undergraduate-level networking know-how (for instance, how shortest path routing works, how TCP works, etc.)”. И что то, что мне доводилось изучать по сетям ранее - это не undergraduate-level, а в лучшем случае для школоты, пытающейся поднять DHCP на домашнем роутере. Поэтому я и отправилась, пока дедлайны совсем не продолбаны, спешно читать не только обязательное по курсу, но и всё по каждому не понятому мной выражению (link-state routing algorithm? TCP congestion window? тааааак, абажжите, сейчас разберёмся).
Если бы я этого не сделала - ну, я могла бы нахвататься умных слов для nerd coctkail parties, да. Могла бы даже на коленке наколбасить что-то для предстоящего выпускного проекта специализации… но худо-бедно применять концепции высокого уровня, не врубаясь в фундаментальную матчасть - я уже успела понять, что это дорога в никуда. Пробелы в знаниях выйдут боком в мало-мальски серьёзном продакшене, и, да, всегда будет достаточно желающих ткнуть в это носом. Так что - если меня действительно серьёзно интересует тема (а она таки да, иначе какой смысл?), надо заниматься ей серьёзно. Иначе буду ли я лучше тех, кто зазубрит пачку “энтерпрайзных паттернов” и API какого-нибудь отдельно взятого фреймворка, но при этом не способен оценить сложность алгоритма?
Ну да ладно. Это теоретическая часть. Если говорить о домашних заданиях… они и тут были двух видов. Первая и самая зубодробительная - это квизы. Немудрено, что за квизы дают аж 75% оценки! От 15 до 25 вопросов, на каждый квиз - по 2 попытки (засчитывается лучший результат). Про то, что в квизах много вопросов на понимание обязательного чтива, я уже сказала… а ещё - как и в любом мало-мальски продвинутом курсе по сетям, наверное, были задачки на “порисовать и посчитать”. Каким маршрутом пойдёт пакет от сервера A к серверу B в топологии fat-tree при таких-то условиях и такой-то пропускной способности каналов? Как изменится “скользящее окно” TCP / DCTCP при таких-то условиях потери пакетов? И даже “если скорость распространения света в оптоволокне приравнять к 2/3 от скорости света в вакууме, какой будет минимальная задержка при передаче данных на таком-то расстоянии”! В общем, поскрипеть мозгами придётся, почти как на Cloud Computing Concepts. Я предупредила. Единственное утешение - при второй попытке задания не меняют, так что можно просто попробовать сделать “работу над ошибками”. Хотя бы несколько вопросов гарантированно поправите :)
В сравнении с этим задания на программирование, за которые давали остальные 25% оценки - сущая фигня, в общем и целом, и вот они-то как раз и укладываются в “программу по сетям типичного колледжа”. Даётся образ виртуальной машины (Ubuntu + xfce), в ней эмулятор сети - в данном случае mininet. К нему присобачивается программный контроллер - здесь использовали питоновский ryu. И даются скелеты питоновских программок, на которых надо 1) дописать модуль мониторинга пакетов и посмотреть, как на “наивной” маршрутизационной политике тормозит стриминг видео 2) посмотреть, сильно ли изменилась ситуация от статической маршрутизации 3) ну и закодить нормальный динамический алгоритм и наконец-то посмотреть видео в приличном качестве. Все задания релизят на второй неделе - ну и дедлайн у всех до конца курса. На деле - лично мне после врубания в элементарную сетевую матчасть на решение потребовалось от 15 до 30 минут, и это при том, что с Питоном я вообще имею дело крайне редко. Ничего сложного, в общем.
Но жаль, что наши местные “официальные” учебные заведения пока такого не делают - хотя вот уж где пригодилось бы (а то, пока на сетях сплошная теория, и ученики не очень понимают, как им это реально поможет в программизьме на работе, посещаемость лекций по сетям вряд ли кардинально улучшится, увы). Вот же дешёвый вариант, на котором можно покрутить и поконфигурять, не боясь положить сеть в классе! Надеюсь, рано или поздно такие игрушки придут и в суровые стены вузов, колледжей и технарей нашей славной родины.
Ну и да, теперь осталось заценить, чего интересного и зубодробительного дадут на Capstone (а обещают дать что-то вкусное на базе AWS), и как я впоследствии смогу извлечь из этих знаний профит и гешефт не только академического характера (впрочем, про эти размышления, наверное, надо таки отдельный пост писать). В общем, не переключайте канал и ждите следующих серий - думаю, мне ещё ой как будет чего рассказать :)