Best practices for the development and deployment of robust Drupal - - PowerPoint PPT Presentation

best practices for the development and deployment of
SMART_READER_LITE
LIVE PREVIEW

Best practices for the development and deployment of robust Drupal - - PowerPoint PPT Presentation

Best practices for the development and deployment of robust Drupal applications Adrian Rollett [ bluespark / roomify.us ] Technical Director / Bluespark full-service web agency long record of contribution design . ux . development Co-founder /


slide-1
SLIDE 1

Best practices for the development and deployment of robust Drupal applications

Adrian Rollett [ bluespark / roomify.us ]

slide-2
SLIDE 2

Technical Director / Bluespark

full-service web agency long record of contribution design . ux . development

slide-3
SLIDE 3

Co-founder / roomify.us

product spin-off from bluespark flexible booking solutions drupal-based . open-source

ROOMS

DRUPAL

FLEXIBLE, POWERFUL ONLINE BOOKING

slide-4
SLIDE 4

Goals

  • build (and build upon!) robust

Drupal applications

  • learn useful processes /

philosophies

  • discuss implementation

strategies

Dean Hochman . Flickr

Dean Hochman . Flickr

slide-5
SLIDE 5

What makes an application a good application?

slide-6
SLIDE 6

–Linus Torvalds

“any program is only as good as it is useful.”

slide-7
SLIDE 7
  • does what it’s asked
  • performs well
  • stable and reliable
  • functional and attractive on *all* devices
slide-8
SLIDE 8

Ken Hodge . flickr

Preparation

slide-9
SLIDE 9

What is your process?

slide-10
SLIDE 10

proc·ess

noun a series of actions or steps taken in order to achieve a particular end.

slide-11
SLIDE 11

What are the elements of your process? methodology . patterns . best practices

slide-12
SLIDE 12

the Order of Things

  • user experience design
  • visual design
  • technical design
slide-13
SLIDE 13

Technical Design

  • best done with multiple people:

we involve members of the UX, design and technical teams

  • time-consuming but

worthwhile

  • plan and estimate
  • finished production: complete

implementation timeline + tickets

Will Scullin . flickr

slide-14
SLIDE 14

Working within Budget

  • If the client is completely

bought into an agile process, budget per sprint and iterate

  • If project is fixed budget, up

front planning and communication of scope is completely essential

(from apelbaum.wordpress.com) [1]

slide-15
SLIDE 15

The Build-out

Sascha Kohlmann . flickr

slide-16
SLIDE 16

There is no substitute for proper technical planning

slide-17
SLIDE 17

Managing time during Development

  • Agile
  • Kan-ban
  • Waterfall
slide-18
SLIDE 18

How we do it

  • Agile sprints with explicit QA/Code review steps for

individual tickets

  • Managed within the overall scope/timeline framework

defined during the Technical design and estimation process

slide-19
SLIDE 19

Parallel development / External teams

  • Plan first, then execute
  • Dependency order is vitally important to figure out up

front

  • Specify, specify, specify
slide-20
SLIDE 20

QA

slide-21
SLIDE 21

“QA is culture, not a step.”

slide-22
SLIDE 22

Where does QA happen?

  • Up front, during technical design
  • During development - code standards matter!
  • Code review
  • Automated code testing
  • Formal QA
slide-23
SLIDE 23

Testing

  • The two most important things

you can know about testing:

  • Do it!
  • Automate it - tests that don’t

get run automatically don’t do their job

  • For more than you wanted to

know, see our presentation: Quantifying the Value of Devops [3]

gozalewis . flickr

slide-24
SLIDE 24

On-going development - balancing concerns

Just Add Light . flickr

slide-25
SLIDE 25

Define the goals

  • new features
  • bug fixes
  • continued stability
slide-26
SLIDE 26

How do we meet them?

slide-27
SLIDE 27

–xaprb.com [2]

“Undeployed Code Is Inventory; Inventory Is Risk.”

slide-28
SLIDE 28

The more you deploy, the easier it gets

kevin utting . flickr

slide-29
SLIDE 29

but don’t deployments take lots of time?

slide-30
SLIDE 30

Automate, automate, automate

  • Work towards a model where each functional pice of

code is tested individually and automatically in its own environment

  • Make sure the results are seen by humans - we run tests

via jenkins and send the output to our company chat

  • This environment should be identical to the production

environment in all aspects possible

  • You can build it, or you can buy it
slide-31
SLIDE 31

Testing

slide-32
SLIDE 32
  • Any test is better than none, IF it runs automatically
  • Don’t let perfect be the enemy of good, it’s OK not to

have 100% test coverage

  • Identify what must work, and test that functionality
  • ecommerce: cart/checkout
  • brochure site: home page, contact form
  • intranet: user login, permissions
  • and so on
slide-33
SLIDE 33

Extra Credit: Continuous Deployment

  • Ensure all deployment steps exist in code that is itself

reviewed and tested

  • Don’t deploy new code without new tests
  • All tests must pass to deploy
  • Rollback must also be automated
slide-34
SLIDE 34

Conclusions

  • Define your process and make

your workflows fit it

  • Plan *before* you build
  • Automate all the things
  • Test the important things
  • Deploy as frequently as

possible

seattle municipal archives . flickr

slide-35
SLIDE 35

Questions?

slide-36
SLIDE 36

Thank you! adrian@roomify.us twitter.com/acrollet

slide-37
SLIDE 37

Resources

  • [1] Choosing Between Schedule, Budget, Scope,

and Quality

  • [2] Code Freezes don’t prevent outages
  • [3] Quantifying the business value of devops