Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Twelve Important Design Patterns

DZone's Guide to

Twelve Important Design Patterns

Designing software for today's world can and should involve numerous well-established patterns. Do you employ them?

· DevOps Zone ·
Free Resource

Best practices for getting to continuous deployment faster and with dramatic results in reduced outage minutes, development costs, and QA testing cycles. Brought to you by Rainforest QA.

Read this:  http://12factor.net/

Then. After reading it. Read it again to be sure you've got it. It's dense with best practices. Now that you've read it, make yourself a Quality Engineering checklist.
  1.  I. Codebase: One codebase tracked in revision control, many deploys

  2. Dependencies: Explicitly declare and isolate dependencies

  3. Config: Store config in the environment

  4. Backing services: Treat backing services as attached resources

  5. Build, release, run: Strictly separate build and run stages

  6. Processes: Execute the app as one or more stateless processes

  7. Port binding: Export services via port binding

  8. Concurrency: Scale out via the process model

  9. Disposability: Maximize robustness with fast startup and graceful shutdown

  10. Dev/prod parity: Keep development, staging, and production as similar as possible

  11. Logs: Treat logs as event streams

  12. Admin processes: Run admin/management tasks as one-off processes

If your app doesn't follow all of these patterns, you've got technical debt to work off. Start by posting the debt remediation stories in Jira (or whatever you're using.)

I've got config issues left, right, and center. Numerous assumptions include the URL's for RESTful services on which my RESTful services rely: this is not good.

Some of these things, however, are a done deed in the Python/Flask world with no real thinking required.

  • Build, release, run — done
  • Processes — done
  • Port binding — done
  • Disposability — done

Other things require some care. And the config is something that I've really got to fix.

Discover how to optimize your DevOps workflows with our on-demand QA solution, brought to you in partnership with Rainforest QA.

Topics:
engineering ,checklist ,design patterns ,list

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}