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

Devops For Developers

Devops For Developers

Have you ever had one of those days where the ops team are complaining that a release page isn’t correct, whilst your devs are complaining that it’s been three weeks since they asked for a release to go to production, but it’s still sitting there waiting?

If you’re looking for a way to bridge the gap, I have one word for you: DevOps! DevOps was one of 2014’s hottest words, but the majority of developers still don’t understand what it entails. We’ll take a look at numerous processes and aspects, including culture, automation, measurement and sharing. We’ll also take a look at various different ways to improve software delivery and monitoring once it’s been delivered, as well as tools to help us accomplish this. Finally, we’ll take a look at continuous integration and continuous deployment and the pros and cons to replacing your release team with a set of automated tasks.

Michael Heap

January 29, 2016
Tweet

More Decks by Michael Heap

Other Decks in Technology

Transcript

  1. Devops For
    Developers
    @ BENELUX 2016

    View Slide

  2. About Me

    View Slide

  3. About Me
    Michael

    View Slide

  4. About Me
    @mheap

    View Slide

  5. About Me
    DataSift

    View Slide

  6. What is devops?

    View Slide

  7. View Slide

  8. View Slide

  9. View Slide

  10. No, but seriously

    View Slide

  11. Today
    C
    A
    M

    S

    View Slide

  12. Today
    Culture
    A
    M
    S

    View Slide

  13. Today
    Culture
    Automation
    M
    S

    View Slide

  14. Today
    Culture
    Automation
    Measurement
    S

    View Slide

  15. Today
    Culture
    Automation
    Measurement
    Sharing

    View Slide

  16. Who are you?

    View Slide

  17. All about
    CULTURE

    View Slide

  18. It takes investment

    View Slide

  19. https://www.youtube.com/watch?v=SL9FEDaXutE
    Jeremy Quinton
    PHPUK

    View Slide

  20. Automation

    View Slide

  21. Shell Scripts

    View Slide

  22. imp -vvv -S -t 1000 -d 8912 /path/to/$(date %s)

    View Slide

  23. import_latest_stock_update.sh

    View Slide

  24. Build Servers

    View Slide

  25. Not just for tests

    View Slide

  26. Packaging

    View Slide

  27. QA

    View Slide

  28. PHPCS

    View Slide

  29. PHPMD

    View Slide

  30. Automation Servers

    View Slide

  31. Configuration
    Management

    View Slide

  32. Manual Installation

    View Slide

  33. Snowflake Servers

    View Slide

  34. Documentation

    View Slide

  35. Living Documentation

    View Slide

  36. Possible Tools

    View Slide

  37. Testing

    View Slide

  38. Automation = Testing Required

    View Slide

  39. Critical Paths, Black Boxes

    View Slide

  40. ServerSpec

    View Slide

  41. Deployment

    View Slide

  42. Tests

    View Slide

  43. Auto Deploy

    View Slide

  44. Smoke Tests

    View Slide

  45. Continuous Deployment

    View Slide

  46. Continuous Delivery

    View Slide

  47. Deployment

    View Slide

  48. Automation

    View Slide

  49. Measurement

    View Slide

  50. Visibility

    View Slide

  51. Graphite

    View Slide

  52. Outliers

    View Slide

  53. Fix Things

    View Slide

  54. Measurement

    View Slide

  55. Sharing

    View Slide

  56. What works? What doesn’t?

    View Slide

  57. War stories

    View Slide

  58. Help each other

    View Slide

  59. Sharing

    View Slide

  60. Culture

    View Slide

  61. Share in the successes

    View Slide

  62. Share in the successes
    … and the failures

    View Slide

  63. Not a blame game

    View Slide

  64. Imagine this

    View Slide

  65. We’re half way!

    View Slide

  66. We’re half way!

    View Slide

  67. The real world

    View Slide

  68. Full Stack

    View Slide

  69. Collaboration

    View Slide

  70. Devs own projects

    View Slide

  71. Ops own infrastructure

    View Slide

  72. Collaboration

    View Slide

  73. Pragmatism

    View Slide

  74. Being Devops

    View Slide

  75. SSH

    View Slide

  76. SSH Keys
    SSH Forwarding
    No password authentication

    View Slide

  77. ssh-keygen -t rsa
    id_rsa
    id_rsa.pub
    ssh -i id_rsa [email protected]

    View Slide

  78. Configuration
    Management

    View Slide

  79. Puppet
    Chef
    Ansible

    View Slide

  80. package { 'apache2':
    ensure => 'installed',
    }
    package ‘apache2’
    - apt: name=apache2 state=installed

    View Slide

  81. file { ‘foo.conf’:
    path => ‘/etc/foo.conf’,
    ensure => file,
    source => “puppet:///modules/
    foo/foo-example.conf”,
    }

    View Slide

  82. cookbook_file ‘/etc/foo.conf’ do
    source ‘foo-example.conf’
    end
    - copy: src=foo-example.conf dest=/
    etc/foo.conf

    View Slide

  83. Paths

    View Slide

  84. /home

    View Slide

  85. /home
    User Files

    View Slide

  86. /etc

    View Slide

  87. /etc
    Configuration

    View Slide

  88. /usr/bin

    View Slide

  89. /usr/local/bin

    View Slide

  90. /usr/local/bin
    Binary Programs

    View Slide

  91. /var/log

    View Slide

  92. /var/log
    Yep, logs!

    View Slide

  93. /opt

    View Slide

  94. /opt
    Everything!

    View Slide

  95. /opt/php7/etc/
    /opt/php7/var/
    /opt/php7/usr/bin

    View Slide

  96. Permissions

    View Slide

  97. -rwxrwxrwx

    View Slide

  98. 0777

    View Slide

  99. Read = 4
    Write = 2
    Execute = 1

    View Slide

  100. UGW
    User, Group World

    View Slide

  101. 0777
    Open to the world

    View Slide

  102. 0750
    Writable by owner
    Executable by group

    View Slide

  103. 0640
    Writable by owner
    Readable by group

    View Slide

  104. 0644
    Writable by owner
    Readable by world

    View Slide

  105. Binaries

    View Slide

  106. Getting Started

    View Slide

  107. Vagrant
    Amazon AWS
    LowEndBox

    View Slide

  108. Deploy Something

    View Slide

  109. Avoid

    View Slide

  110. Run as root
    chmod 0777

    View Slide

  111. What Else?

    View Slide

  112. Build Systems
    Jenkins
    Travis
    Bamboo
    GoCD

    View Slide

  113. User Management
    Users
    Groups

    View Slide

  114. Libraries
    Compiled in
    Shared Objects (.so files)

    View Slide

  115. Web
    VHosts
    SSL (Certs + Termination)
    nginx/Apache
    PHP-FPM

    View Slide

  116. Databases
    Backup strategies
    InnoDB settings.
    Indices

    View Slide

  117. Even More
    Varnish

    Networking
    Monitoring/Alerting

    View Slide

  118. Sky = Limit

    View Slide

  119. Summary

    View Slide

  120. Culture

    View Slide

  121. Automation

    View Slide

  122. Measurement

    View Slide

  123. Sharing

    View Slide

  124. Any Questions?
    https://joind.in/talk/bc8bc
    @mheap

    View Slide