shutyourprogram

27 февраля 2017, Киев, Украина

# Понедельник 63 твита

Всем привет, на этой неделе с вами Стас Слесарев @shutyourprogram

11:30

В данный момент работаю Fullstack JS Developer
В стеке хипстерские Node.js, Koa2, React, Redux = )

11:31

Мы разрабатываем графический редактор в браузере (похожий продукт canva.com)

11:33

Целевая аудитория - SMM, маркетологи и обычный широкий пользователь, который любит создать мемасик

11:34

Ссылку на нас пока что не кину, потому что мы в процессе релиза еще)

11:34

Но мы, естественно, умнее и красивее канвы, поэтому надеюсь, что к концу недели ссылочку всё-таки предоставлю)

11:35

Итак, господа, расскажите-ка, кто в чём гаразд)
Ваш основной язык?

11:38

Тем временем расскажу про свой непростой путь в коммерческое программирование
Конечно же, всё началось еще в школе с Паскаля)

12:14

@backendsecret и учитывая, что математика давалась мне всегда относительно легко, вопрос выбора специальности в универе стоял недолго

12:15

@backendsecret где-то в конце 2-го курса меня и еще двух одногруппников застала врасплох золотая лихорадка на iOS и мы решили попробовать

12:16

@backendsecret написать, в общем-то, нехитрую игрулину. Можно сказать, что это был первый опыт предпринимательства)

12:16

@backendsecret потому что приходилось и продумывать концепт, и рисовать дизайн(!!!), и кодить - это было достаточно весело)

12:18

@backendsecret потом мы связались с издателями, окончательно испортили первоначальную задумку, игруха не взлетела от слова совсем

12:18

@backendsecret следом, на последних курсах, были какие-то шатания в сторону SEO, простых сайтов на вордпресс и даже CPA-маркетинга

12:20

@backendsecret в сфере CPA тоже довелось настряпать парочку проектов, какие-то для внутреннего использования нашими миньонами,

12:21

@backendsecret а какие-то даже хотели отдать на вынос. Но разработчик из меня тогда был никакой, более опытных разрабов находить

12:22

@backendsecret не получалось, и к тому же, сфера CPA надоела окончательно и бесповоротно. Было решено сосредоточиться на том, вокруг чего

12:24

@backendsecret был наибольший хайп на тот момент - Ангуляр и Node.js. Где-то три месяца я штудировал основы JS, Angular, Node и наконец

12:25

@backendsecret не без огромного везения попал в замечательный стартап @cluise_stylist (разработка на данный момент приостановлена, но

12:27

@backendsecret аппка рабочая и доступна в Аппстор и Гугл плэй)

12:29

@backendsecret по просьбам трудящихся)

12:47

Еще один опросничек, друзья

Аз есмь

12:51

Как вы относитесь к поговорке "В программировании есть всего две сложных вещи: инвалидация кэша и название сущностей?"

13:14

@backendsecret вот в случае с @strizhechenko как раз вторая проблема стоит остро 😅

13:15

Итак, план на неделю примерно следующий

13:20

@backendsecret тем, на самом деле, достаточно, просто не все получается сгруппировать красиво, поэтому более подробно уже походу дела

13:54

@backendsecret @notxcain @hisohito специально для вас 😇

14:38

Мне кажется, у нас слишком мало опросов, поэтому вот еще один(просто люблю их 😍)

Сейчас работаю в

14:56

Возможно на прошлой неделе здесь уже обсуждалась эта новость (newscientist.com/article/mg2333…), но меня она настолько

15:00

@backendsecret зацепила/встревожила/замотивировала, что грех не перестраховаться, вдруг кто пропустил)
Исходя из этой новости, верно ли, что

15:01

@backendsecret в ближайшем будущем Machine Learning станет New Programing/Development/Engineering?

15:01

Итак, начнем-с - для чего Node.js хорош?
Если мы используем #nodejs в scheduler'a задач - идем верной дорогой

18:30

@backendsecret уточним, что в данном случае задача - это некие вычисления/манипуляции/расчеты/whatever, что выполняются в другом процессе

18:34

@backendsecret а если еще проще, то любая input/output операция.
важно заметить, что все i/o-задачи должны быть обязательно асинхронными.

18:35

@backendsecret то есть если #nodejs получает запрос, вытаскивает из базы данные, отправляет их на другой микросервис, потом еще раз

18:36

@backendsecret апдейтит базу, пишет что-то на диск(ну мало ли, иногда нужно 😌), и отдает ответ - всьо чотинько 👌

18:38

как можно юзать #nodejs неправильно?
вспомнив в очередной раз главный постулат "Node.js однопоточен", можно прийти к выводу, что запускать

18:42

@backendsecret вычисления, которые будут загружать CPU и занимать времени больше, чем 50-100мс - то мы свернули на скользкую дорожку

18:43

@backendsecret возможно, для вас не секрет, чем это обернется, но давайте рассмотрим простенький пример в случае REST API

18:44

@backendsecret два endpoint'a:

18:46

@backendsecret предположим, REST API не отмасштабировано и у нас крутится один #nodejs инстанс на одном ядре.

18:49

@backendsecret Заходят запросы

  1. /user,
  2. /process
  3. /user

Кто угадает, сколько времени займет ответ для 1 и для 3 ?

18:51

итак, перейдем к callback hell, а точнее, разберемся, как от него уйти

иллюстрация для непосвященных:
image.slidesharecdn.com/promisesandcha…

20:42

@backendsecret а уйти от него можно четырьмя способами:

20:44

@backendsecret либа async была хорошим решением еще на самой заре распространения #NodeJS, сейчас её использование ограничивается только

20:45

@backendsecret только древним legacy кодом (очень-очень-очень надеюсь, что на ней никто не стартует новые проекты 😬)

20:46

@backendsecret промисы - отличный вариант, если нет желания заморачиваться, кроме того даже при использовании generators или async/await мы

20:48

@backendsecret чаще всего yield/await'им именно промисы в итоге. Соотвественно, переезд в будущем на async/await не составит труда

20:49

@backendsecret generators - уже работают из коробки начиная с Node.js v4, код становится похож на нормальный синхронный как в других языках

20:52

@backendsecret минусы generators - подружить их со стримами достаточно сложно. кроме того, они изначально предназначены для других задач

20:53

@backendsecret вот мы и добрались до самого вкусного - async/await 😋

20:58

@backendsecret тот самый момент, когда серверный JS перестал быть страшным 😍
i.gyazo.com/f4034eb06b255d…

20:59

@backendsecret самый большой минус этого подхода - на данный момент, придется подключать к проекту #babeljs и транспайлить код, но

21:00

@backendsecret уже где-то в мае появится #NodeJS 8, где async/await будет из коробки
опять же напомню, что await кушает не только async func

21:01

@backendsecret но и promises, так что, например, все методы нативного #Mongodb драйвера можно и нужно await'ить

ну сочно же, согласитесь 😛

21:03

Подходит время прощаться!
Сорри, что последние два дня был не слишком активен - улетел на выходные в Минск, было немного времени на тви

6:47

@backendsecret спасибо большое за ваше внимание, поддержку, критику, советы и колкости - это был приятный и интересный опыт 😄

6:49

@backendsecret искренне надеюсь, что вам было тоже интересно и неделя под моим руководством не прошла мимо вас 😁

6:50

@backendsecret Асталависта, бэйби)!
И до новых замечательных встреч 🐥

6:51

# Вторник 45 твитов

Вообще, сейчас конечно золотой век для сильных инженеров - нас хотят везде и всюду) а мы воротим носом, перебираем,… twitter.com/i/web/status/8…

10:17

@backendsecret что-то по душе/техстеку/деньгам
Вполне возможно, что в будущем в IT будут трансферы как в футболе)

10:18

итак, продолжим про фишки #NodeJS
пожалуй, единственная вещь, которую сложно испортить - это Streams

12:15

@backendsecret но очень просто испортить перформанс своего приложения, отказываясь от их использования там, где возможно)

12:17

@backendsecret простой пример, у вас под ногами лежит архивчик размером 100МБ
Есть два способа его прочесть - readFile и createReadStream

12:25

@backendsecret в случае большого спроса на этот файл и чтения при помощи readFile - потребление RAM у nodejs инстанса вырастет до небес

12:26

@backendsecret опытным путем было проверено, что при ~10 запросах в случае readFile - RAM потребляется около 800МБ, а в случае readStream -

12:27

@backendsecret RAM не выходит даже за пределы 100МБ, используется всего лишь ~70-80МБ

конечно, в первом случае рано или поздно

12:29

@backendsecret оперативка всё-таки высвободиться, но в случае высокой нагрузки некоторые пользователи получат отказы

12:31

Еще один классический кейс - это получение Stream от базы

например, мы хотим на клиенте отобразить ленту из 50 записей, и тут снова есть

12:33

@backendsecret два способа (в случае нативного #Mongodb драйвера) - cursor.toArray() и cursor.toStream()

в случае toArray все 50 записей

12:34

@backendsecret снова запишутся в RAM и раздуют её, и только потом будут отправлены на клиент

в случае же stream'a

12:36

@backendsecret данные будут уходить небольшими порциями, что определенно легче, как для БД, так и для #NodeJS инстанса

12:37

У #Java тоже вроде бы есть стримы, да, джависты?)
Используете ли вы их так же, как и мы в #NodeJS ?

12:39
Hi, I'm James. I'm one of the original maintainers of Babel, & I can never remember how to setup Babel's runtime lib
twitter.com/sarahmei/statu…

В англоязычном твиттере уже пару дней идет флэшмоб, где мэтры программирования признаются, что они тоже люди, и не… twitter.com/i/web/status/8…

14:17

@backendsecret или, например, создали слишком сложную технологию, что сами забывают, как ей пользвоваться)

СЛИШКАМ СЛОЖНА (с)

14:19
Hi, my name is Nate. I've been coding JavaScript for years and I still have to Google how to send ajax requests. twitter.com/otfrom/status/…

вот, о наболевшем 😂 twitter.com/nathggns/statu…

15:38
Hi, my name is Magnar. I've been doing ops work for years, and I always have to google how to redirect stderr to st… twitter.com/i/web/status/8…

о, это вообще топчик) twitter.com/magnars/status…

15:40
@visualwatermark @backendsecret Вот, чтобы был точнее понятен объем данных. И это с сетевыми задержками pic.twitter.com/XgvHeZB3Hu
16:23

перейдем плавно к AWS Lambda

давно не было опросиков)
вы и Lambda -

17:48

коротко для тех, кто не трогал #awsLambda вообще

смысл - мы кладем какую-то функцию, со всеми зависимостями(npm-пакеты, бинарники, файлы)

20:27

@backendsecret и получаем возможность вызывать её по каким-либо событиям/триггерам
при этом доступные нам существенные настройки - это

20:30

@backendsecret ограничение #Lambda по RAM (128, 256 etc) и установка таймаута(работает больше секунды - прерываем)

20:31

@backendsecret какие же триггеры в нашем распоряжении?
например, можно настроить #CloudWatch, чтобы запускал лямбду через интервал

20:33

@backendsecret такой способ использования очень похож на создание cron-задачи, только, как по мне, более удобный - по сути, cron в облаке 🌥️

20:34

@backendsecret еще пример триггера - API Gateway
настраиваем полноценное API, и на все запросы отвечаем при помощи Lambda функций

20:38

@backendsecret если прикрутить к Lambda еще RDS, то получается тотальный #Serverless

20:39

@backendsecret вот неплохая статья для знакомства medium.com/@emckean/creat…

20:39

кстати, #NodeJS'ники, все же знают, почему делать конструкции типа pipe().pipe().pipe()... плохо?

21:02
#aws #s3 is down! @cloudfront is down! The world is burning! pic.twitter.com/EhYhGIy2Qq

BREAKING NEWS! ШОК! twitter.com/SzybkiSasza/st…

21:41

@backendsecret апдейт - лежит только S3 US-EAST-1, спасибо @dronoff1989 за инфу

22:02

@backendsecret еще немного по теме vc.ru/n/amazon-crash

22:14

Looks like internet is not as reliable as it was just few months ago... pic.twitter.com/kI8kZu5nAC

22:33

отвлечемся от S3 обратно к Lambda

наша тима тот случай, когда глаза очень горели поскорее заюзать Lambda, но руки столкнулись с суровой

22:41

@backendsecret реальностью
выражалось это в следующих паре моментов - высокая стоимость при хайлоаде и отсутствие поддержки streams для Node

22:42

@backendsecret например, подсчитали, что функция работающая со 128мб RAM и временем ~200ms при хайлоаде в 5000 req/sec обойдется нам дороже,

22:44

@backendsecret чем самый дорогой сервак EC2
поэтому результатом рисерча стало понимание, что Lambda просто супер дешева для небольших сайтов

22:46

@backendsecret например, нагрузка порядка 10000-20000 посещений в месяц обойдется дешевле, чем micro EC2 инстанс

22:47

@backendsecret а вот для хайлоада-противоположная ситуация, получился как бы экспоненциальный рост стоимости по отношению к кол-ву запросов

22:49

ладно стоимость, еще пол-беды

но когда вы сделали в Lambda функции наложение watermark'и поверх картинки, и не может отдать stream в ответ,

23:01

@backendsecret то это был тот самый момент "Да что ты знаешь о боли!?!?"

23:02

@backendsecret кстати, интересно же, какие языки поддерживает #lambda
а список невелик:

23:04

@backendsecret зачем-то засунули туда еще Edge NodeJs 4.3 - но стоит он дороже, да и стримы всё равно не поддерживает 🙄

23:05

кстати, интересный проект - janhuenermann.com/projects/learn…
нейронка водит 🚗🚕🏎️ в браузере, а мы можем усложнить ей жизнь, нарисовав препятствия🚫⛔️📛

23:36
The moment the presenter realizes S3 is down. #AWS #S3 #Amazon pic.twitter.com/S8gY1J9lrH

ладно пол интернета положили, но зачем людям спичи-то срывать!?

совести у них нет 😄 twitter.com/ian_surewould/…

23:38

# Среда 45 твитов

@backendsecret разные, есть например трансформеры которые сабскайбятса к динамодб и потом перегоняют данные например в эластик и денормализ
0:21
@backendsecret есть, которые сабскайбятса к разным СНСам и делают трансформации на файлов на С3
0:21
@backendsecret есть которые в старые в старые времена по времени меняли провиженинг динамо рида и врайта
0:21
@backendsecret так же можно лямбды по сути как крон запускать :)

Именно) тоже считаю это одним из главных удобств

Но что еще приятнее - запуск по интервалу менеджит CloudWatch, а… twitter.com/i/web/status/8…

0:27

@backendsecret всякого разного, не только Лямбду

Например, может запускать ваши скрипты на ваших же EC2 инстансах)

0:28
@backendsecret мое мнение, запускать скалу в ламбде прикольно, но для трансформирование данных с одного представлкение в другое -лучше (1/2)
0:36
@backendsecret лучше брать динамический язык :) меньше кода поддерживать (2/2)
0:36

Окей, всем спасибо, наш наполненный экшеном вечер подошел к концу)

Всем спокойной ночи 🌙💤

Завтра с утра рубанём про #NodeJs фреймворки ☀️

0:42

Итак, какой framework юзаете?

12:18
@backendsecret про лубпек интересны фидбеки. Пока не видел ни одного живого человека, у кого он в продакшене на большом проекте

и мне, и мне 😃 twitter.com/raxpost/status…

13:08

так вот, как я уже упоминал, мы используем Koa 2, и на момент старта проекта async/await был недоступен даже под флагом --harmony

14:05

@backendsecret но учитывая, что нам всё равно нужен был #Babel для фронтенда, мы решили транспайлить и бэкенд тоже, а при внедрении

14:18

@backendsecret в будущем async/await в #NodeJS - отключим транспайлинг для бэкенда (в общем-то скоро это случится, ура-ура 🎇)

14:19

как по мне, все фрэймворки для #NodeJs представляют из себя +/- одно и то же, но как всегда есть нюансы

14:20

@backendsecret откровенно похожие минималистичные фрэймворки - это Express, Restify, Hapi, Koa
Как минимум, у Express и Koa один создатель)

15:01

@backendsecret если мы хотим что-от типа #RoR или #Laravel, то можем выбирать между #Sails и #Meteor

15:07

@backendsecret как помне, #Sails идеальное решение для начинающих, или когда нужно быстро накидать Rest API - класть и доставать из базы

15:07

@backendsecret но при использовании больших фрэймворков, мы становимся менее гибкими
например, Meteor версии 1.4.x использует #NodeJs 4.4.7

15:13

@backendsecret получается, что с выходом async/await в core ноды ничего не поменяется для использующих #Meteor - async/await им по-прежнему

15:14

@backendsecret будет недоступен

подскажите, если кто знает, #Sails тоже привязан к какой-то #NodeJs версии?

15:15
@backendsecret я не так давно на Meteor набрасывал из собственного опыта, возможно, читателям будет интересно toster.ru/q/313761?e=490…

если кратко - #React убил #Meteor ☝️ twitter.com/PetrMyazin/sta…

17:07
@backendsecret Я как-то раз посчитал, что примерно с 75 запросов в секунду Lambda становится дороже, чем on-demand инстанс.
17:48

Как вы уже могли догадаться - опросы наше всё 😃

Поэтому, какую базу используете у себя на проекте?

18:16
@backendsecret forums.meteor.com/t/start-using-… в 1.4 (мб даже 1.3, не тестил) уже встроенный есть async/await. полифилл, конечно

неплохая попытка, #meteor почти отыграл одно очко, но потом я увидел эти обертки

Meteor.call('myFuncti… twitter.com/i/web/status/8…

18:38

@backendsecret await Meteor.callPromise('myFunction', <arg1>, <arg2>);

no, #Meteor, are you serious?
хотя, как для января 2016 - попытка ок

18:39

@backendsecret хотя всё равно нет - тогда уже можно было использовать generators с 4 Нодой, поэтому такой код писать - увольте 👎

18:41

как и ожидалось, доминирует SQL и убойная смесь "всего понемногу" = )

расскажу, как мы дважды выбрали #NoSQL #Mongodb и

18:44

@backendsecret в одном из случаев получилось очень больно, а второй раз - в самый раз)

18:44
@backendsecret мне кажется, это антипаттерн в метеоре. метеоровские методы можно оставить для апи, а сами сервисы выносить вне методов и ..
18:49
@backendsecret возвращать промисы. тогда не придется ничего врапить через wrapAsync. это мое личное мнение
18:49
@backendsecret Говорят изначально Loopback был выбран для быстрого старта, из коробки ORM и генерация REST API endpoints по модели.

Летом тоже щупал #Loopback, но не пошло от слова совсем

Собственно, всё кроме коа2, не зашло)
Но если из коробки O… twitter.com/i/web/status/8…

19:40

Итак, где же мы прогадали с Mongo - представим, что у нас есть сложная сущность, которая содержит в себе много простых

19:48

@backendsecret пример - экипировка в целом, и отдельные её элементы
У роллера и байкера могут быть шлем, защита одни и те же, но налокотники

19:49

@backendsecret будут отличаться.
В принципе, это не было бы проблемой (коллекция equipments, у каждого дока поле elements), если бы каждый

19:51

@backendsecret из element'ов не мог быть обновлен сам по себе

А ведь это логично - можно редактировать производителя, цвет того же шлема

19:52

@backendsecret и тут начинается песня - каждый док в equipments уже содержит только массив айдишек в поле elements, и в случае получения

19:54

@backendsecret списка экипировок - нужно еще параллельно доставать эти элементы из соседней коллекции

19:56

@backendsecret и ладно, если бы такая сложная сущность была одна на проект, но у нас их было несколько и выглядело это так себе

19:58

@backendsecret на текущем проекте такая сложная сущность одна - и элементы в ней не обновляются

20:13

@backendsecret ну и плюс async/await сделал код в разы читабельнее и понятнее)

20:14

Как раз в тему про базы сегодня попал на митап от нашей киевской продуктовой компании @Grammarly

20:43

@backendsecret @Grammarly рассказывают, почему выбрали MariaDB + Galera Cluster, вместо MySQL, Postgre и Cassandra

20:44

@backendsecret если коротко, изначально у них был "rule them all" MySQL с репликацией, и они хотели решить две проблемы:

20:50

# Четверг 48 твитов

Что еще есть хорошего в #Mongodb ?
Например, aggregation framework, который представляет из себя pipeline, в котором мы сами выбираем в

11:41

@backendsecret каком порядке мы будем фильтровать, группировать, трансформировать и сортировать данные

11:42

@backendsecret важно, что в одном из обновлений прилетел новый оператор $lookup, который позволяет сделать left outer join ☝🏻️

11:54

@backendsecret минусы - по нашим тестам, aggregation работает несколько медленнее, чем хотелось бы

11:55

И последняя интересность касательно #MongoDB, да и баз в целом - индексы и RAM
До недавнего времени был уверен, что создавать индексы

12:45

@backendsecret относительно дешево.
Но допустим у нас есть коллекция 1кк записей, и у нее обязательно будет дефолтный индекс по _id, который

12:47

@backendsecret мы никак не можем удалить. Оказывается, что для 1кк записей дефолтный индекс будет весить ~20mb
А как мы все прекрасно знаем,

12:48

@backendsecret база выгружает индексы в RAM для ускорения поиска
Тут возникает архитектурный нюанс - если создать много разнообразных

12:50

@backendsecret индексов, и не просчитать, сколько для них понадобиться оперативки, то база начнет писать эти индексы в SWAP - следовательно,

12:51

@backendsecret для коллекций со свопнутыми индексами производительность упадёт
ну и вообще, это если у нас просто 20 коллекций по 1кк, то

12:53

@backendsecret со старта база захочет ~400mb RAM только под индексы, жирненько 🥓🍗🍖

12:54

Кстати, если у кого-то есть опыт с шардировнием #MongoDb - поделитесь, пожалуйста🙂
что и зачем шардировали, такое ли поведение, как ожидали?

13:02

Если бы в будущем вам сказали, что останется только два типа разработчиков, какой путь вы бы выбрали ❔❔❔

13:18
@backendsecret во-первых, индекс на _id все же можно не создавать (см. docs.mongodb.com/manual/referen…). Но в целом, Монге нужно много памяти.

Только что очень обрадовался, но не надолго - autoIndexId опция уже deprecated, и в 3.4 Монге ее уберут вообще twitter.com/qwestua/status…

18:53

а есть смельчаки, кто уже выкатил 7.6.0 #NodeJS в продакшн?)
как оно, полёт нормальный?

19:34

Многие набрасывали всякое в течение недолгих трёх дней, а теперь соя очередь!

Вжух! И везде #microservices

(выдохните, на самом деле нет)

21:26

@backendsecret не могу сказать, что являюсь ярым противником оных, но и в сторонники точно не возьмут, а то и палкой выгонят

21:27

@backendsecret в целом, отношусь к ним с большой осторожностью и считаю, что юзать их надо в меру

21:28

@backendsecret вообще, есть три подхода:

  • приложение монолит
  • микросервисы
  • гексагональная архитетура

Последнее - это как раз серединка

21:30

@backendsecret на половинку, что-то между монолитом и микрос, на мой взгляд - самый здравый подход, где есть основное приложение и несколько

21:31

@backendsecret небольших сервисов под конкретные задачи (можно даже на других языках, ого!)

21:32

@backendsecret да и вообще, интересный термин микросервисы - а кто определяет, достаточно ли этот сервис микро?)

21:35

@backendsecret в этом году на #LvivItArena это была самая хайповая тема для докладов - целых четыре спикера за три дня вещали)

21:36

@backendsecret самое интересное, что получилось очень гармонично - один ярый сторонник, один ярый противник и двое непредвзятых, объективных

21:38

@backendsecret пример хорошего применения гексагональной архитектуры - основная апиха, и микросервис - генерация html в pdf

21:49

@backendsecret основная идея в том, чтобы основное api и вспомогательные сервисы были на разных машинах, ибо если генератор пдф выжрет всю

21:52

@backendsecret cpu - это никак не повлияет на работу основного api
А еще, таким образом мы можем избавить других разработчиков от

21:54

@backendsecret необходимости ставить все зависимости, которые нужны сугубо для этой задачи(а это могут быть сложнокомпилирумые бинарники)

21:56

И раз уж вспомнил про #LvivItArena, то вот один из самых интересных докладов - как всё устроено в @Spotify

youtu.be/S2x51oidwhE

22:02

А вот доклад по нашей теме - как @Twitter переписали свою #RoR махину на микросервисы #jvm
youtu.be/tlPkM0lxMKc

22:07
@backendsecret а значит и вся система будет проще для понимания и изменения.

Это классический аргумент сторонников)
То, что микросервис отвечает за одну вещь - не делает систему проще и понятн… twitter.com/i/web/status/8…

22:13

@backendsecret классический контр-аргумент - если вы не можете написать простой и понятный монолит, то микросервисы вам не помогут)

22:14

@backendsecret а вот дебажить систему из микросервисов станет сложнее, а вот мониторить её тоже станет сложнее, чем монолит

22:15

@backendsecret то есть нужно понимать, что одну и ту же задачу в большинстве случаев решить монолитом будет дешевле

22:17

@backendsecret и доклад от твиттера косвенно подтверждает эти мысли - у них штат 1к разрабов, у которых ушло 4 года на то, чтобы полностью

22:19

@backendsecret выпилить монолит и заменить его микросервисами

Тут внезапно мы пришли к отличному постулату - monolith first.

22:19
@backendsecret А если еще и команд более 100, то монолит становится тесен.

Вот тут не поспоришь) twitter.com/meln1k/status/…

22:25
@backendsecret микросервисы для маленьких команд/компаний - это оверинжиниринг.Поддержка и мониторинг требует много инфраструктуры и времени

Истина! twitter.com/pvoznenko/stat…

22:34

Привет ведущему @jsunderhood этой недели 👋🏻 pic.twitter.com/tZmd0Xc1bO

22:38
@backendsecret микросевисы в свою очередь даёт хорошую автономию командам, архитектурные решения и ответственность
22:50
@backendsecret что бы автономия не превратилась в хаос на макро архитектурном уровне команды должны договорится о правилах либо принципах
22:50
@backendsecret например "Share Nothig", "You build it - you run it", "infra. as code", etc. Наши принципы как пример github.com/AutoScout24/sc…

О, это однозначно уходит в избранное 🌟 twitter.com/pvoznenko/stat…

22:54
@backendsecret ну и вообще если интересно, как говорится we are hiring! ;) github.com/AutoScout24/hi…

Заслуженный ретвит 👍🏻 twitter.com/pvoznenko/stat…

23:12

Ну а впрочем, чего это я стесняюсь?)

Киев, приходите в гости)
jobs.dou.ua/companies/depo…

23:27

@backendsecret У нас классный стэк, лояльный менеджмент, полное отсутствие бюрократии, нет легаси кода и интересные задачи)

23:29
@backendsecret добавляй еще и наши :) github.com/zalando-incuba…

Отличные гайдлайнес, приятно читать, есть что почерпнуть 👌🏻
Вопрос по пункту "Move legacy code to AWS whenever poss… twitter.com/i/web/status/8…

23:39

@backendsecret @meln1k в плане, понятна задача, но интересен её контекст)

23:43

# Пятница 25 твитов

#AWS отчитались, что вообще у них происходило - прямо-таки закон Мёрфи в действии

vc.ru/n/amazon-crash…

А на этом сегодня всё 🌙💤

1:24

Давайте подобьем итоги дня вчерашнего

Микросервисы - отличный инструмент, чтобы увеличить эффективность работы в большой компании, где

15:06

@backendsecret множеству команд будет тесно на одном монолите.
Для небольших команд и стартапов - микросервисы === over engineering

15:07

сегодня хотел бы поговорить про всевозможные источники информации - конференции и записи с оных, local communities, каналы в телеграме и тд

15:10

@backendsecret так и исторически сложилось, что был на самой первой #LvivItArena еще в 2014 году, и теперь езжу туда ежегодно, традиция)

15:12

@backendsecret вообще, It Arena 2014 была первой моей крупной конференцией, поэтому, естественно, она впечатлила и понравилась 🎇🎆

15:13

@backendsecret в том году в тренде была #BigData, а из спикеров больше всего запомнился @asebrant (здравствуйте и спасибо😌)

15:20

@backendsecret особенно понравилась часть доклада под названием "оцифрованная романтика" - youtu.be/zsUKYfXjpvo?t=…
обязательно посмотрите,

15:21

@backendsecret если хотите получать больше матчей в #Tinder 😅

15:21
@backendsecret А я ни одного #AgileDays в Москве не пропустил. Тоже традиция у меня такая...

это же прекрасно!✌️ twitter.com/Dronmdf/status…

15:22

а вот в 2015 году ИТ Арена уже не впечатляла, и даже наоборот, показалась тухлой, настало время проанализировать ошибки в подготовке к

15:24

@backendsecret крупным конференциям, ведь одно дело, если приходишь на митап с одним потоком, где нужно встать только один раз на кофебрейк,

15:25

@backendsecret и совсем другое - быть на конфе с 4-5 параллельными потоками, и еще успевать переходить из зала в зал по стадиону, когда

15:26

@backendsecret к тому же между докладами вообще нет перерывов, когда в твоем зале в 11:00 заканчивается доклад, то в другой части стадиона

15:28

@backendsecret в 11:00 он уже начался)
поэтому, приготовления сводятся к следующему:

15:30

@backendsecret по желанию, можно еще добавить не приоритетных спикеров, на которых можно ходить, если успеваешь)

15:33

Собственно, что это я всё про Львов да про Львов..
В Киев тоже интересных событий хватает!
Ежегодно проводится несколько @fwdays конференций

15:37
Если бы в будущем вам сказали, что останется только два типа разработчиков, какой путь вы бы выбрали ❔❔❔

такое равновесие с одной стороны удивляет, с другой - я бы и сам разрывался между первым и вторым)
Хорошо, что в то… twitter.com/i/web/status/8…

17:08

@backendsecret эти дела совмещать)
И раз так много выбрали МЛ, то вот вам канал всё того же @asebrant - telegram.me/techsparks

17:10

Куча новостей по технологиям и их применению, развивает кругозор)

17:11

Кстати, помимо МЛ и микросервисов в 2016 был еще один сильный тренд - это боты в мессенджерах

17:59

@backendsecret в продакшене их, к сожалению, еще не запускал, но на #TadHack хакатоне простенького бота для #telegram написал

18:04

@backendsecret благо для #NodeJS уже есть две опенсорс либы, и стартануть с ними бота занимает минут 15 от силы

18:05

Поделитесь теперь вы - какие конфы любите, какой докладчик покорил сердце, какой доклад запал в душу?)

19:49

# Суббота 5 твитов

@backendsecret youtube.com/watch?v=xPPCzr… 36 :)

Ух, это конечно, и жыыыыр и яяяд одновременно 😅 twitter.com/dcromster/stat…

12:52

У нас тоже есть звезда среди докладчиков под именем Алексей Швайка!
youtu.be/6ys-MZsfCXI
Мы даже в честь него придумали шуточку -

18:17
@backendsecret какие, нафиг, конфы? мы тут код пишем, некогда

Это кто тут в твиттер залез!? А ну работать быстро! twitter.com/sharkman/statu…

18:18

если что-то идет не так, то надо говорить "полный Швайка!"
😄

18:27

@backendsecret не в обиду Алексею, если он вдруг читает)
Мы по-доброму 😊

18:28

# Воскресенье 6 твитов

Итак, если вы вдруг захотите всё-таки упасть в #NodeJS и удариться в EventLoop, а тем более, если уже - то nodejsdesignpatterns.com

16:28

Думаю, многие видели так называемые awesome list'ы по разнообразным темам
А попадался ли вам awesome список вопросов к работодателю?

16:32

Поделитесь, как часто вообще меняете работку?

16:35
@backendsecret Пока не нашла ту, что нравится, меняла каждый год, а сейчас уже седьмой год работаю. Так что затрудняюсь с ответом :)
19:30

@backendsecret подкинули тут достаточно полный опросник, возможно кому-то пригодится github.com/gravyboat/inte…

22:05
@backendsecret Что-нибудь типа такого? :: jvns.ca/blog/2013/12/3…

Спасибо, очень даже в тему! twitter.com/webholt/status…

23:16

other