It’s no secret today’s IT landscape has become significantly more complex as organizations strive to satisfy business demands. The race to provide data for informed decision-making (big data), build applications to provide anywhere access to services (mobile), and deliver solutions to support revenue growth has created unique challenges for every organization. This challenge combined with the baggage of legacy systems contribute significantly to complexity.
Most organizations have pursued enterprise initiatives such as IT rationalization to simplify their IT landscape. This does provide value when a plan is followed up with effective execution. A missing ingredient in most organizations is a definition of and adherence to a set of practical IT principles. These principles are critical to promoting the right behaviors and solutions when architecting, designing, and building systems needed to transform the environment and realize the IT strategy.
This post highlights the principles associated with planning and building IT systems whether it’s developing new or refactoring existing solutions to be agile, performant, resilient, and secure while maintaining a level of simplicity. The development of principles requires an understanding of the market the business serves, not an inventory of current business needs. This is an important distinction because principles should be connected to an IT strategy and future state architecture that’s consistent with a clear understanding of the market served by the business.
Below is a summary of IT principles that should be considered to enable businesses to thrive. The intent is to share the most notable principles that facilitate transformation to a more agile environment that restricts complexity. This is not a comprehensive list.
- Design and build the minimum (value: agility; security; and simplicity) – IT solutions will possess the minimum features to meet user/business needs. Understanding how users work and what problem the needs to be solve is essential to designing and building solutions; don’t focus solely on list of requirements.
- Build services rather than applications (value: agility and resiliency) – Applications should be developed as a collection of services that expose APIs. Services must conform to service-oriented principles (e.g., stateless, modular, loosely-coupled, reusable) to enable the agility needed to adjust to marketplace changes, and the resiliency needed to maintain availability of services.
- Design for failure (value: resiliency) – High availability is replaced with resiliency. Focus on software and services that senses failure and automatically redirects requests to available systems.
- Build the right level of security in each layer (value: security) – Security begins with the development of solution concepts. Understand the sensitivity of data and implement the right controls to maintain privacy and integrity. Each layer in the stack from the end point to the database must be considered to protect data. All personnel will maintain knowledge of security needed to compensate for known weaknesses in technologies used to deliver IT solutions.
- Technical debt will be managed (value: agility; performance; and security) – Legacy technologies and messy solutions become anchors to progress and increase risk. Legacy technologies will be contained, if possible, to non-mission critical services and replaced when feasible. Messy solutions will be allowed if there is a strong business need, and a well-defined and funded plan to make the necessary improvements is in place.
- Infrastructure platforms will be multi-tenant and dynamic (value: agility; performance; security; and resiliency) – Compute, memory, storage, and communication infrastructure will allow for performance, privacy, and fault isolation to ensure application services are contained and can not impact the integrity of other services executing on the platform. The infrastructure platform must scale out. This principle applies to on premise platforms and IaaS subscriptions.
- Automate, automate, automate (value: agility) – IT tasks ranging from provisioning of test environments, to configuration management of production systems, to compliance checks will be automated to increase speed of delivery and improve efficiency of operations.
- Continual refinement (value: agility; performance; security; and resiliency) – IT will work to understand system usage and behavior patterns and adjust services as needed to ensure availability, performance, security, agility, and cost is aligned. This includes making decisions to ensure workloads are executing in the right venue.
Principles aren’t easy to comply with because the day-to-day realities require IT teams to “creatively” solve problems and live to fight another day. When you are in the heat of battle it’s difficult to step back and think about principles. The challenge is principles must be adopted to get IT organizations out of the hole they may find themselves in.
The key to principle adoption is to get buy-in from the right personnel within the organization. Architects and technology leaders are likely targets as they have a strong influence on the design of new and modification of existing solutions. With their buy-in these principles become ingrained into system lifecycle management processes. Once this happens it’s only a matter of time for the principles to shape services and facilitate IT transformation.
Each organization should identify the principles needed to guide their transformation and integrate them into daily decision-making to establish and maintain the right IT culture. Effective principles will pave the way for great outcomes.