Sunday, 26 November 2017

Technical Options Appraisal – Pre-requisites and structure


Technical Options Appraisal – Pre-requisites and structure

I have been recently involved in a Technical Options Appraisal (TOA) activity and this blog is about the perquisites, structure and scope of the appraisal. This blog should help a reader who is planning to undertake an options appraisal and leverage for an existing structure.

I have been in technology industry for more than 15 years and in an architect (some form of it) role for last 7 years. I have found that any technology choices you make, you always have to justify it over and over again. Technical Options Appraisal is a good activity to justify the technology decision and the rationale behind it. But the challenge is that to have a good TOA, one would need time and understand the level of depth and audience it is addressing.

The challenge is to start with clear objectives and scope and then keep within those during the duration of the appraisal.

In another blog () I cover lessons learned from my experience around technical options appraisal and how to get best out of it.

Before kicking off.


Technical Options Appraisal is an activity to evaluate technical solution options for a problem domain. This can be an extremely challenging effort if not started well with clear definition and scope. Below are high level pre-requisites before you start any appraisal.

1.     Have a fixed business domain for appraisal - If the domain is moving then the appraisal cannot hold its ground and the researcher is always fighting moving targets. Understanding of scope is key and any changes to it should be controlled through change control.
2.     Target model - Is the solution going to be used as a commodity service or a solution to solve a single problem. This has a massive impact on the options chosen.
3.     Organisational strategy for a solution - Organisations usually have preference toward a certain direction for procurement and Solution architecture. This usually come to question of “Re-use before Buy before Build”.
4.     Approach for Technical Options Appraisal -  The approach needs to be agreed beforehand for conducting a TOA. For example, approach of getting long-list of options to short-list with evaluation criterion, input from partner stakeholders, etc.
5.     Assessment criteria – Assessment criteria is key for appraisal as it will define the parameters against which the options are being evaluated. Each criterion is evaluated for business domain and standards in which the organisation operates. This covers both functional and non-functional criteria and depending on the problem domain and stake holder it covers additional information for business continuity.
6.     Time box – TOA activities can take a lot of time, especially if interaction with various vendors are required. Time box directs the amount of work required as well as amount of information presented in the TOA.
7.     Key stakeholder map – This map highlights who is involved as stakeholder for the solutions proposed and signoff as business and technical authority.
8.     Level of depth required for information gathering – This is key to successfully complete the TOA. The depth of level should be consistent across all the evaluation criteria and present a complete story.

All the above need to be agreed with key stakeholder before meaning full progress can be made on the TOA.

Structure of Option Appraisal.


The structure of options appraisal can differ based on audience and the time available to conduct the appraisal. This can be from an informal email (not recommended) to a document which covers details around option appraisal.


Section
Description
Purpose
This section explains the purpose of the document, time frame it is conducted and any limitation the document operated under (e.g. dependence on previous research or dependence on exiting solution for integration). This also shows the approach of the document i.e. Risk Based approach and/or weighted approach.
Executive Summary
This is the section which will be most read. This section contains high-level business domain, approach for TOA, Option under evaluation and summaries of assessment with recommendation.
Target Architecture
This section contains the target architecture under which the options will operate. The target architecture will help in deriving the assessment criteria which will be explained in this section. Some views like Capability View, Application Component view and Information Flow view are helpful in providing a user with right level of context.
Approach
This section contains details around approach on options appraisal. It explains how the research is carried out and how the information is gathered.
Candidate Options List
This section contains the solution option list with explanation and assumptions for each solution. This also contains information on solution architecture and high-level costing (if required).
Appraisal
This is core part of the document where appraisal of each option proposed is done against an evaluation criteria. The appraisal criteria needs to be agreed before the appraisal takes place, each criteria has a weighting attached and at the end option evaluated based on fitness. More details on the content of the Appraisal section is below.
Summary
This section almost mimics Executive Summary section where summary of the appraisal is presented.
Recommendation
This section contains the recommendation of an option(s) based on the findings from the document.

Appraisal Section in detail.


The appraisal section is dependent on the audience of the TOA as well as the time provided for the appraisal. Below is not the finite list of assessment criteria and should be adjusted to audience and depth of information to be presented.

Criteria
Description
Functional Fitness
This section shows functional fitness of the options based on user needs analysis.
Non-Functional Fitness
This section shows functional fitness of the options based on non-functional requirement.
Entry & Exit
The activities required to move to and exit from the solution (on and offboarding).
Sustainability
The capability and capacity of the team required to support the solution. This includes transition to, operation of and transition from the solution.
This also reviews the solution from an environmental sustainability perspective.
Total Cost of Ownership
Overall cost of the solution. The cost also includes cost outside technical costs.
Strategic Alignment
Strategic alignment with published strategies for the organisation
Intellectual Property
Considers if there is an impact on being able to reuse any developed elements widely. As well as associated costs for reuse or barriers based on licensing.
Procurement Rules
Evaluation of potential procurement routes to deliver the options.
Timescales
Evaluation of the timescale required for each option and in particular how it compares with known available timescales.
Dependencies
The dependencies for each option in order to identify any particular risks an option has in this area.
Training
The training required to deliver or support each option in order to identify any particular risks an option has in this area.
Communications
Comparison of the communication with stakeholder requirements for each option in order to identify any particular risks an option has in this area.
Warranty & Indemnity
Warranty and indemnity implications for each option.  This is in order to identity any risks associate with an option.
Service & Support
Considers how each option will be supported as well as what management information must be reported.
Compliance
Evaluates the options for compliance against known legislation, regulations and organisational standards.
Assurance
Identifies how each option will be assured within the prevailing governance processes.
Risks
Risks of the options, based on the information above.  Expectation is that this will be a long list covering all the options.

Closing the Appraisal.


To close the appraisal, it is paramount that information is distributed to key stakeholder with the risk associated and the recommendations. A timeframe is created to make a decision so that this doesn’t go into a spiral of question/answer session.

The primary objective for a technical options appraisal is to make an informed and transparent decision about selection of a technical solution. This document should provide the relevant information to make that decision and support future queries.

Friday, 31 January 2014

Zero Downtime - Application Deployment head aches


Zero Downtime - Application Deployment head aches 

During the design and development phase of any problem, one of the most common things over looked is the deployment and management strategy. The PM is concerned about delivery, developer is concerned about application architecture, manager is concerned about the costs of development and operations... they are too busy fighting existing fires.

Over the years in development I have come across many deployment strategies and pitfalls around choosing one option over the other. Whilst I have been advocate of "Zero Downtime", practically achieving it totally different subject matter. Whilst you can employ various clever techniques but with alot of application functionality moves to network (like cached javascript) or user browser, addressing clean deployment strategy is becoming much more important upfront.

Whilst there are many tools in market (like LiveRebel), cost and introducing another system into the ecosystem introduces risks.

Below are some of the deployment techniques that I have come across and major benefits and concerns : 

Note: This article doesn't go in detail of individual technique, it just highlight some options. There might be more techniques which i have no highlighted here, if you know please do share.

Apache + Tomcat X

Single Tomcat deployment: 

If you are servicing your application with a single tomcat, downtime is a must as deploying on a single instance will take out all sessions and will not service any request till the server comes up.
 

Multi tomcat cluster behind an Apache Proxy:

When an application is being serviced by multiple tomcats behind an apache proxy (using mod_jk), key considerations should be given to session management. Think about:


  1. Sticky Sessions
  2. Session Replication

Using Sticky Session with Session Replication gives absolute zero downtime for deployments.  One node can be taken down and all users on that server will be moved over to next node. Key consideration for this strategy is:
  1. Session replication comes with application complexity and memory issues. More memory is require on each server to store complete system session information (or have buddy server).
  2. Session replication increases node to node communication which may have an impact on CPU performance.
  3. You might be better off taking a high on user session that compromise server performance.
What ever option is taken, remember someone needs to manage this so plan up front.


Apache + Jboss AS 7
 
Jboss AS 7 comes in two major flavors: standalone mode and domain mode. Whilst this is independent to the concept of clustering, the deployment strategy is very much dependent on the choices taken upfront.

JBoss in Standalone Mode:

In a Standalone mode, the server is responsible for its own resources and doesn't communicate with other nodes in the same cluster. Pros and Cons of this are:
  • Pro: The server is independent and can be taken down as and when required.
  • Pro: Suitable for environments where either there is a single standalone server (or may be two).
  • Con: If the number of server increase, management and deployment becomes an issue.
  • Con: Roll out of configuration or application needs to be done separately.
  • Con: Rollback is managed manually.

In terms of achieving Zero Downtime deployment, this model lends best to zero customer impact as with tomcat mentioned above, each server can be taken down if the sessions are shared between nodes. If the sessions are are not shared, the users will be logged out from their session and will be asked to log in to another node automcatically. 


This strategy has a potential of bouncing a single user N-1 times if N is number of nodes in a cluster.

JBoss in Domain Mode:

For cluster containing various nodes and has a potential of horizontal scaling (adding more nodes over time), domain mode is best suited as a deployment strategy. Below are some benefits:
  • Pro: Management of all server is done through a single Master Node and changes are propagated to client nodes.
  • Pro: No single point of failure for the application.
  • Pro: Deployment rollback are done automatically.
  • Con: At the time of deployment, the cluster can be made unavailable as application is deployed on all nodes by master node.

To achieve zero downtime for any deployment in domain mode much more thinking and planning in required.
This can be partially achieved by deploying parallel cluster and deploying the new application on this cluster whilst the old cluster services client requests. Once the parallel cluster is deployed and verified, the secondary cluster is made the primary cluster and the old cluster is taken down. The old cluster can act as a rollback strategy in case something goes wrong on new cluster.

All the above can be achieved by Master Node Jboss Console. Key considerations for this strategy are:
  • Increased requirement of memory to support two clusters.
  • Least stressful time on server should be picked on the server.
  • The deployment timelines are increased as more activities are required.
  • If the application is load balanced through load balancers, additional load balancer configuration is required for parallel deployment.
  • Automated process is required for switching between one application cluster to another.
  • Separate DNS entries are required for secondary service. This can be used to verify that the application is deployed correctly.
At the end of the day, it is the decision between business, cost and technical ability of the team to achieve Zero downtime and accept if any customer impact is acceptable or not.




Sunday, 5 January 2014

From a Code Monkey to Head Monkey.


Often software engineers are thought of as Code Monkeys who hold the stigma that they sit in darkest corner of the office with big over-the-ear 'funky' headphones, writing code at the speed of sound. They are always the people who are forgotten about in social lunches, "Sam, who?" syndrom in coffee corners (even though Sam has been chucking code for last 15 years for the company). Whilst engineer is different to being a code monkey, both terms are used side-by-side in many upper managements (not all :) ).

In the eyes of an engineer, the world is totally different. He feels he lives in two parallel dimensions where in one he has to interact with people and the other where he needs to let his art work do the talking by solving complex problems. The satisfaction of solving a mind boggling problem is non-next to anything and he knows that. Whilst he wants to be part of the cool gang in the office, he is so involved in his pride of engineering the perfect solution. He forgets the ethics of the office and lets a fart/burp come out in the most non-appropiate time.

I've lived through being a code monkey, a team lead (being the head monkey of the troop) and now I've moved to next stage where I'm more thinking about the trees where these monkeys are living. 

With the new dawn of 2014, I would like to start this blog with saying Happy New Year to everyone. I would like to use this blog to share my experiences both technical and non-technical to wider community; so that we can understand why are the brains behind many technical company are still misunderstood. Also what is involved in thinking about how the tree is grown for monkeys to working on. :-) Many thanks.

Saturday, 18 May 2013

Kick-Off !!!

Hello All,

After working in technology for 8 years, or to be specific in computer programming and application architecture, I've thought to share my experiences on a public forum.

I've been writing on private blogs for last couple of years but due to lack of time never came around doing this on a public forum.

My intention is document my researches, experiences and outcomes of different technical exploration that I undertake during my professional and personal life. Hopefully this would benefit more people.

Chao,

Schyzad