Over a million developers have joined DZone.

Twelve Important Design Patterns

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

· DevOps Zone

Discover how to optimize your DevOps workflows with our cloud-based automated testing infrastructure, brought to you in partnership with Sauce Labs

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.

Download “The DevOps Journey - From Waterfall to Continuous Delivery” to learn learn about the importance of integrating automated testing into the DevOps workflow, brought to you in partnership with Sauce Labs.

Topics:
engineering ,checklist ,design patterns ,list

Published at DZone with permission of Steven Lott, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

The best of DZone straight to your inbox.

SEE AN EXAMPLE
Please provide a valid email address.

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.
Subscribe

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

{{ parent.tldr }}

{{ parent.urlSource.name }}