Skip to content

Commit

Permalink
add chatops post
Browse files Browse the repository at this point in the history
  • Loading branch information
ctrlok committed Nov 15, 2016
1 parent 863b4af commit 501d946
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 0 deletions.
52 changes: 52 additions & 0 deletions content/post/Chatops и будущее.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
+++
title = "Новая графана"
date = "2016-11-15T10:33:42+02:00"

+++
# Chatops и будущее
Chatops как явление, если мне не изменяет память, зародился в недрах Github в 2012-2013 году и сразу вызвал шквал обсуждений, многие из которых не утихают и сейчас. Уже есть несколько книг по чатопсу, огромное количество ботов — всё собрано в [awesome chatops](https://github.com/exAspArk/awesome-chatops).

Тем не менее, на всех встречах, на которых я бывал, обсуждение chatops всегда сводилось к тому, что штука эта, в принципе, неплохая, но накладные расходы на поддержку высокие. Здорово, когда chatops есть, но ничего страшного, если его нет.
В таких разговорах я всегда придерживался политики, что chatops bot по сути своей тоже самое, что и интерактивная утилита, которую можно запустить из shell: надо строить таким образом, чтобы использование было непротиворечивым и понятным, позволяло передать опыт и лучшие практики посредством автоматизации, как и любая другая утилита, и было стабильным. Если говорить простыми словами, то опсы делают подковёрную работу, автоматизируют, костылят и так далее, выставляя наружу только UI своего решения, которым уже и пользуются остальные. В каком виде будет этот UI — консольная тулза или бот в слаке — не так важно, как сами принципы построения этого UI.
Собственно, подобного подхода придерживаются многие. И хотя `deploy 0.19 version of frontend to qa` выглядит неплохо, это всё равно обычный текстовый UI, в котором надо запоминать последовательность аргументов, ключевые слова и так далее. Это накладно, особенно в случаях редкого использования.

> Вообще это извечная проблема админов — неспособность понять, что то, что нужно не часто, может быть забыто. Отсюда и “тупые девы”, и бесконечное количество ключей в шелл приложениях, и неумение строить нормальный UI.
И так как невозможно запомнить всё, то часто такой чатопс выглядит как
```
> me: @bot who is oncall ops?
> bot: I don't understand you
> me: @bot help
> bot: ....blbalba на 10 строк...
> me: @bot who is oncall in ops team today
```
Или наоборот. Так или иначе, как ни старались построить человеческий UI, в котором ты можешь просто написать кусок текста, все всё равно приходили к тому, что надо запоминать какие-то команды.

В итоге, Slack превращается в обычный терминал с плюсами и минусами чата: единое окно, но если у нас уже есть готовый терминал со всеми плюшками, зачем делать ещё один? Аутентификация пользователя — это хорошо, но относительно сложности автоматизации и внедрения этот плюс не всегда перевешивает минусы.

А что было бы плюсом? Почему люди вообще используют чаты вместо того, чтобы общаться какими-то простыми командами? Это большой вопрос, вопрос к языку и его появлению, но если коротко, то возможность разными словами передать одну и ту же мысль здорово сглаживает проблемы в коммуникации. Единственная сложность в этом — правильно распарсить текст: у людей есть специальные участки в мозге, которые этим занимаются. Делать такую же штуку посредством грубого парсинга и регекспов не очень-то и просто, да и вообще NLP это сложно, хотя с наскока, особенно людям, которые не в теме, может показаться, что ничего такого тут нет.

Именно поэтому я решил поискать, какие NLP парсеры уже существуют, и с удивлением осознал, что пока индустрия шла вперёд, многие из devops, в том числе и я, застряли в прошлом: быстрое гугление выдало мне несколько SaaS на эту тему: бесплатный [wit.ai](https://wit.ai) и недавно ставший бесплатным на базовом плане [ api.ai ](http://api.ai).
Изначально я тестировал штуки именно на wit.ai, участники сообщества ukrops могут помнить мои эксперименты пол года назад, но сейчас api.ai нравится мне немного больше.
Я не буду вдаваться в UI этого решения: там всё относительно просто, да и можно отдельный пост сделать, но если коротко, то текстовые запросы в любом формате возвратят нам json с параметрами
```
me: залей 0.19 на прод
to bot: ...
"parameters": {
"deploy": "deploy",
"env": "prod",
"number": "0.19"
},
...
me: задеплой в тест версию 0.20
to bot: ...
"parameters": {
"deploy": "deploy",
"env": "test",
"number": "0.20"
},
...
```

И так далее. То есть этот сервис позволяет нам достаточно просто накликивать некие контексты, которые он сам разбирает, сохраняет юзерские запросы, которые не смог распарсить, и даже умеет переспрашивать в случае, если что-то непонятно или не указано, а вы, в свою очередь, в своём приложении уже работаете с json — всё просто и понятно.
В общем, за такими штуками определённо будущее и мне было бы очень интересно построить chatops с NLP парсером. Я попробую сделать какой-то PoC в ukrops, но если у вас или вашей компании есть потребность в chatops с человеческим лицом, то мне было бы интересно :)
Binary file modified content/post/Алертинг в Grafana/DraggedImage-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified content/post/Алертинг в Grafana/DraggedImage-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified content/post/Алертинг в Grafana/DraggedImage.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 501d946

Please sign in to comment.