Upgrade to Pro — share decks privately, control downloads, hide ads and more …

All those bots are gonna steal your job

All those bots are gonna steal your job

This is not about consumer bots, this is about dev bots.

A talk I gave at TakeoffConf and Kikk.

Yannick Schutz

October 20, 2016
Tweet

More Decks by Yannick Schutz

Other Decks in Technology

Transcript

  1. All those bots
    Are gonna steal your job

    View Slide

  2. All those bots
    Are gonna steal your job

    View Slide

  3. How I built
    a 2m height Duplo tower

    View Slide

  4. View Slide

  5. View Slide

  6. All those bots
    Are gonna steal your job

    View Slide

  7. Yannick
    Internal tools engineer

    View Slide

  8. View Slide

  9. Chatops

    View Slide

  10. Conversation Driven Development
    - Automation
    - Visibility
    - Collaboration
    - Security

    View Slide

  11. Automation

    View Slide

  12. Examples:
    - Page users
    - Deploy your apps
    - Run scripts across your servers

    View Slide

  13. Visibility

    View Slide

  14. Examples:
    - GitHub flow in chat
    - Bug tracking notifications
    - CI server status

    View Slide

  15. Collaboration

    View Slide

  16. Examples:
    - Update incidents notes
    - Approve changes
    - Comment what other are doing

    View Slide

  17. Security

    View Slide

  18. Examples:
    - 2fa the important changes
    - People see what you are doing
    - Chat knows who you are

    View Slide

  19. Chatops at Heroku

    View Slide

  20. A play in 3 acts
    - The past
    - The present
    - The future

    View Slide

  21. The past

    View Slide

  22. The sentinel era

    View Slide

  23. - Many bots, no cohesion
    - A custom ruby bot for Paging
    - A small new team to manage it

    View Slide

  24. Heimdall, yet another hubot

    View Slide

  25. - One bot to rule them all
    - Coffeescript all the things
    - Trying to leverage the community

    View Slide

  26. Issues and learnings

    View Slide

  27. - No strong practices of Node testing
    - The brain is just a blob
    - Custom code and no reuse
    - Abusing the hubot purpose

    View Slide

  28. It was still the best choice!

    View Slide

  29. The present

    View Slide

  30. Rails apps

    View Slide

  31. - A team that does Rails
    - Less Hubot, more Slack integrations
    - Strong practices around testing and building

    View Slide

  32. Using slack /commands

    View Slide

  33. - Dependency on Slack
    - Using slash commands for all the things
    - No real-time or event loop

    View Slide

  34. Current apps

    View Slide

  35. Paging and alerting

    View Slide

  36. # Tools-ops
    bot page @yannick This is fine
    Paged Yannick Schutz: Incident PIHXOC6
    Alice 10:13 AM
    Bot 10:14 AM
    42

    View Slide

  37. # Tools-ops 42
    #tools Incident PVL9JK3 Your apps are on fire
    Bot 10:14 AM

    View Slide

  38. bot resolve PIHXOC6
    Incident PIHXOC6 resolved
    # Tools-ops 42
    Yannick 10:13 AM
    Bot 10:14 AM

    View Slide

  39. Deployments

    View Slide

  40. bot deploy api/new_auth to production 023941
    # Tools-ops 42
    you are deploying api/new_auth to production
    Alice 10:13 AM
    Bot 10:14 AM

    View Slide

  41. Notifications

    View Slide

  42. Faraday::ClientError: the server responded with status 409
    from faraday/response/raise_error.rb:13:in `on_complete'
    from faraday/response.rb:9:in `block in call'
    from faraday/response.rb:57:in `on_complete'
    from faraday/response.rb:8:in `call'
    from faraday/adapter/net_http.rb:56:in `call'
    from faraday/request/authorization.rb:38:in `call'
    # Tools-ops 42
    #654 - API ➤ Faraday::RateLimitError
    Bot 10:14 AM

    View Slide

  43. HerokuCI built 17ab7962
    # Tools-ops 42
    Beeper build of master was successful. Details
    Bot 10:14 AM

    View Slide

  44. # Tools-ops 42
    [Beeper] The branch lol was deleted by ys
    Bot 10:14 AM

    View Slide

  45. Not in chat!

    View Slide

  46. Out of date dependencies
    Your brand new PR #50
    Details
    ys wants to merge 2 commits into master from new-pr
    OPEN

    View Slide

  47. Your brand new PR #50
    ys wants to merge 2 commits into master from new-pr
    OPEN
    Method length is too long Details

    View Slide

  48. Important

    View Slide

  49. - Act on behalf of the user
    - Refresh the tokens
    - Have a simple syntax
    - Have fun GIF integration

    View Slide

  50. The future

    View Slide

  51. More automation

    View Slide

  52. - Full incident handling
    - Project Management
    - GitHub repo management

    View Slide

  53. bot open new incident Trouble with git push
    Alice 10:13 AM
    # Tools-ops 42
    Done https://status.heroku.com/git_push_issue
    Bot 10:14 AM

    View Slide

  54. # Tools-ops 42
    bot merge beeper/new_auth
    Alice 10:13 AM
    PR has been merged and deployed to staging
    Bot 10:14 AM

    View Slide

  55. More visibility

    View Slide

  56. - Use the buttons
    - Smarter notifications
    - Reduce the noise per team

    View Slide

  57. Acknowledge Resolve Escalate
    # Tools-ops 42
    New incident PIHXOC6: Latency is too high
    Bot 10:14 AM

    View Slide

  58. AWS is experiencing issues in us-east-1

    # Tools-ops 42
    GitHub is down right now
    Bot 10:14 AM

    View Slide

  59. Deployment of beeper to staging succeeded
    Deployment of beeper to production succeeded
    # Tools-ops 42
    bot show me only production events
    Alice 10:13 AM
    Bot 10:14 AM

    View Slide

  60. More collaboration

    View Slide

  61. - Change control from chat
    - Accurate view of the platform
    - Escalate pages from chat

    View Slide

  62. bot approve changes to beeper/new_readme
    Changes approved
    New PR beeper/new_readme
    # Tools-ops 42
    Bot 10:14 AM
    Bot 10:14 AM
    Alice 10:13 AM

    View Slide

  63. bot escalate to @ys, I need some help
    Paged Yannick Schutz
    New incident PIHXOC6: Everything is on
    Bot 10:14 AM
    Bot 10:14 AM
    Alice 10:13 AM
    # Tools-ops 42

    View Slide

  64. More security

    View Slide

  65. - 2fa through a click on your phone
    - Gate critical actions
    - Better auditing of all actions

    View Slide

  66. Alice 10:13 AM
    you are deploying api/new_auth to production
    Bot 10:14 AM
    bot deploy api/new_auth to production
    Approve
    # Tools-ops 42

    View Slide

  67. Not in chat?

    View Slide

  68. - Build equivalent CLI experience
    - Expose actions in WebUI
    - PhoneOps
    - Better commit statuses alerts

    View Slide

  69. Bot 10:14 AM
    deploy api/new_auth to production
    # Tools-ops 42
    you are deploying api/new_auth to production

    View Slide

  70. Bot 10:14 AM
    # Tools-ops 42
    you are deploying api/new_auth to production
    deploy api new_auth▾ to production▾

    View Slide

  71. NPM packages out of date
    Golang packages out of date
    Add some tests here?
    Where is the documentation?
    A PR with no description
    Your brand new PR #50
    ys wants to merge 2 commits into master from new-pr
    OPEN
    Details

    View Slide

  72. TL;DR

    View Slide

  73. Hubot must be a dumb client

    View Slide

  74. We Rails slack apps

    View Slide

  75. Being locked in slack is OK for us

    View Slide

  76. The information where it needs to be

    View Slide

  77. Thanks
    any questions?

    View Slide

  78. @yann_ck
    @ys

    View Slide

  79. Emoji provided free by EmojiOne*
    * http://emojione.com/

    View Slide