Thursday, Jun 18 2015

DevOps Requirements: 10 Things You Must Deliver On

Written by

DevOps Requirements

You may think the transition of an application from development to production happens at the end of the software lifecycle, but achieving a successful transition requires thinking about it all the way back at the start of the development process. Here are 10 things you can do during development to make it easier for the operations team to take responsibility for the app in production:

1. Make it easy to gather metrics. A key part of the operations team's job is monitoring what the application is doing and how it's doing it. That's a lot easier when the application gathers basic information and provides hooks for ops to check other performance numbers.

2. Document system dependencies. No system runs in isolation, but if the ops team doesn't know your application depends on some obscure package, that package may end up getting deleted to free up space. Put together a list of all the necessary components to make sure they get installed and stay installed to keep your app running.

3. Degrade gracefully. Don't write an application that falls apart when there's any sort of problem. Applications should flag problems and alert the support team, but continue functioning as fully as possible. This means applications shouldn't fail to come up just because the log file system is full.

4. Keep compatibility in mind. If your application can run with past and future versions of third-party products, the DevOps team will have a much easier time deploying your application and managing it, especially if it runs in a shared environment where other applications may want different versions of those components.

5. Make it easy to change configuration settings. A key responsibility of the DevOps team is keeping applications running when the environment around them is shifting. Building connection strings and other configuration settings into compiled code makes it impossible for DevOps to do that.

6. Provide configurations settings and flags for as much as possible. If a feature isn't configurable or can't be turned off and on, the DevOps team has no way to control it and manage the impact in production.

7. Build with scalability in mind. If you're lucky, your application will be wildly successful and have to grow to support more users. A well-designed application will let DevOps handle this by running the app on more nodes. If you don't design the application well, it may need to go back to the development team for a rewrite before the user base can expand.

8. Think about support scripts. The support team would love to automate as much of their job as possible. This means making sure application functionality can be invoked from a command line, rather than only by clicks within a GUI.

9. Provide a regression test suite. DevOps wants the application to keep running when the environment around it changes. A robust regression test suite lets them verify the system will still work after they make changes.

10. Document. Document. Document. There's a ton of critical information that exists only in the developers' heads. Writing it down means the DevOps team won't need to call developers in the middle of the night to find out where to change a configuration setting.