Chapter 24. Designing for Deployment

Deployment is the art of ensuring the right components are installed on the right servers with the right configuration. You don't want to "flick the switch" on the day of go-live only to find that the application is running in "test mode." Likewise, you don't want to start functional testing when the application is configured for production only to find that you run out of memory when trying to load all the reference data. Each environment (and possibly release) will have its own purpose and deployment requirements. Chapter 3 discussed configuration management and highlighted some of the areas of the solution that are likely to be different for each environment and purpose, including:

  • Data and database scripts

  • Configuration files and settings

  • Core solution libraries (assuming multiple code-bases are used)

  • Test scripts and test data

  • Stubs and simulators

  • Tools (including productivity scripts)

  • Documentation

Limiting the number of different releases will help with deployment. A single compiled code-base is much easier to deploy and manage. In this chapter we're going to briefly look at a couple of the techniques and practices that should be considered during design to ensure that the solution is deployable.

This chapter is organized into the following sections:

  • Splitting Out Test Materials — Examines the need to completely decouple all test matter from the solution to ensure that it doesn't get deployed into production. It is probably the most important ...

Get Design – Build – Run: Applied Practices and Principles for Production-Ready Software Development now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.