Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Continuously delivering value

401 views

Published on

Slides from my talk about Continuous Delivery / Devops at Kaunas PHP meetup.
What it takes to continuously deliver a value? How our team is using extreme programming practices to deliver quality outcome.
Task is done only when it's deployed to production!

Published in: Software
  • Be the first to comment

Continuously delivering value

  1. 1. Continuous Delivery It's done only when it's deployed! Žilvinas Kuusas KaunasPHP 2017-06-21
  2. 2. Twitter: @kuusas Email: zilvinas@kuusas.lt Žilvinas Kuusas lead developer Estina / ISIGN.io Me
  3. 3. VilniusPHP.lt meetups NoTrollsAllowed.com hacker camp Symfony.lt meetups CleanPHP.lt trainings & consulting I make things to happen CleanPHP.lt
  4. 4. I’ll bring some Extreme Programming ideas
  5. 5. Continuous Delivery Edit code > Save & Upload to FTP > Done
  6. 6. Where it all began? ISIGN: - 3 products - X shared components Needs: - Deploy any time, any version
  7. 7. Value oriented development
  8. 8. Quality!
  9. 9. How to achieve?
  10. 10. It’s all about incremental development and continuous improvement
  11. 11. Atomic tasks
  12. 12. Atomic commits
  13. 13. Should be easy to review
  14. 14. Fast to test
  15. 15. Deployable to prod
  16. 16. Avoid long-living branches
  17. 17. Avoid versioning trees
  18. 18. Deployed == delivered
  19. 19. Developer’s satisfaction level
  20. 20. Business can provide quick and effective feedback
  21. 21. Wait, but HOW?
  22. 22. Everything begins with a ticket “We need to have ‘premium users’ and ‘free users’ which will have portal usage limits. Premium users also will get premium features*, for which users are going to pay by credit card**” ...
  23. 23. Split tasks into small chunks
  24. 24. Splitting payments - Credit card processing - Recurring payments - Invoices
  25. 25. Splitting credit card processing - Credit card processor integration - Credit card processing: - On successful payment - On 3D-secure request - On success - On failure - On unsuccessful payment - Not enough funds - Invalid CC - UI (credit card form)
  26. 26. ● Frontend ○ HTML ○ JS ● Backend ○ Data validation ○ Processing ■ Pre … ■ Post ... ○ Persistence ● 3rd party integration ○ Library ○ Bridge
  27. 27. It forces you to think before writing the code
  28. 28. Small tasks - clear intentions
  29. 29. Everybody knows what they are doing: - Coding - Reviewing - Testing - Deploying
  30. 30. It’s easier to focus on clear goals
  31. 31. Focus == Quality
  32. 32. Do only what you need to do.
  33. 33. Do not overthink
  34. 34. Do not overengineer
  35. 35. How small it should be? One developer - one deployable feature per day.
  36. 36. Way to write testable code
  37. 37. Quality code reviews
  38. 38. Distribute workload
  39. 39. Reliable and predictable releases
  40. 40. Improve often, Refactor often
  41. 41. Code design
  42. 42. Code design should be “evolutionary”...
  43. 43. ...but some design patterns you should know...
  44. 44. #1 Dependency Injection To manage all the mess
  45. 45. #2 Strategy To have interchangable implementations
  46. 46. #3 Decorator Add behaviour to existing objects without class inheritance
  47. 47. Tests! TDD + Functional tests
  48. 48. The Process Look ma, no hands!
  49. 49. Deployment pipeline as code ● Bash ● Jenkinsfile ● Ansible
  50. 50. Pull request > Build > Deploy Monitor && Notify
  51. 51. Jenkins build pipeline
  52. 52. Deployment pipeline ● Build artifact ● Upload to server ● Extract ● Run DB schema migrations ● Switch symlink ● Reload web server configuration ● Run smoke tests
  53. 53. Build better products!
  54. 54. Klausimai?

×