Monday, October 24, 2011

Solution Architect - Understanding the role


I keep getting questions from some of my friends, as to what the role Solution Architecture is all about and will they be a fit for that role. For the benefit of every one out there, I thought of putting together my thoughts on the role of Solution Architect. Let us first examine what is expected out of this role and then look at the skills needed to be in this role.

As the title indicates very well, the role is expected to bring in solution to varying business problems, most which could be a product or project by itself. But, as you know, it is always a challenge to come up with a best solution due to it being intangible and that there are many quality attributes which are not completely identified and specified. There would be lots of missing links in the areas of business domain, choice of technology, hardware components, business processes, future domain and technology trends, etc  which the Solution Architect should be able to connect and come up with best solution that could last longer, so that the organization reaps the return on investing in the solution.

Some of the key characteristics of a best Software Solution are:

Longivity: While the solution must solve the current business problem, it should also be reliable, usable, secure and also future proof. This means that the solution Architect should consider the industry and technology trends that could have an impact on the problem / solution in the near and longer term.

Trade off: The challenge with the various mostly unspecified quality attributes is that they are interdependent. And meeting one such attributes may most likely mean compromising on another. Obviously, a lot of trade off has to happen between various quality attributes and such trade off should be justifiable in the context of perceived benefits for the organization. For instance, performance may have to be compromised to achieve better security. The tradeoffs have to be carefully made after considering various factors, like the risk appetite of the organization, target users of the solution, the technology platform, current IT investments of the organization, etc.

Implementation view: It is important that the solution should be devised with the intended deployment view into consideration. Without that, it could so happen that the solution as designed and built may call for massive changes to the infrastructure investments, which could be a total surprise for stakeholders. Such surprises emerging towards the close line of the project could increase the cost by manifolds or delay the project further.

The above is not the exhaustive list. There are many other factors that will have to be given due consideration before coming up with the best solution. Above all, the solution architect should be able to see that the solution is successfully implemented and put into use. That means, a lot of work in terms of convincing the stakeholders as to why this solution and not an alternative, hand-holding the design and development team and also to some extent the end users to have it implemented the same way it was intended.

With all the above, let us now try to identify the essential skills of an aspiring Solution Architect:

Domain skills: A thorough understanding of the business domain is required to first understand the problem better and second to know the potential future needs that may emerge along the same lines of the problem space. It is also important that the person has the ability to learn things fast, as in most cases, there won’t be lead time for him to gain appropriate business skills. That means, the Solution Architect should also be a Business Analyst.

Technical skills: A thorough understanding on the technology currently in use in the organization, the technology currently in use in similar industry domain and the emerging future technology trends. This knowledge is essential to ensure that the solution does not become obsolete soon and that the organization is in a position to be ahead of completion in terms of IT enabled capabilities. At the same time, applying a new technology early in its evolution has its own issues and it is always better to wait for the technology to evolve and mature as more and more organizations adopt the same. It is important for a Solution Architect to closely follow technology trends and gather enough knowledge to understand what could be the best fit for solving various business problems on hand. He should have enough understanding of the technology chosen, so that his team (mostly himself) comes up with a prototype to establish that the solution really solves the problem. However, as the solution goes further down the implementation lane, the Solution Architect should be able to demonstrate hands on skills, so that he could command expertise and be the go to person for resolution of issues.

Team skills: Though mostly the Solution Architect will be an individual performer, some organizations may have dedicated teams to assist the Architects. Even in case of Architects acting as individual performers, the solution is implemented by a project team. So, the Solution Architect needs to be a team player and should with his domain and technical expertise, lead the team by example.

Process / Project Management Skills: Needless to say that the Solution Architects have to have the Project Management skills too, as one may have to manage the pre-solution activities as a project. For the purpose, he has to be familiar with the processes as well.
That means, the Solution Architect should be an all rounder with moderate to expert level skills in all the areas.  On top of these skills, one has to understand that solutioning is not just a science, but also an art, which is mastered with years of experience over as many projects and years involving various technologies and domains.

There could be different views on this and comments or opinions are welcome. 

Friday, October 21, 2011

Electronic Service Delivery Bill

It is good to note that electronic delivery of public services is proposed to be mandated in India. The Ministry of Information Technology has proposed a draft Electronic Service Delivery Bill, as per which, every competent authority of the appropriate government shall publish a schedule for delivering public services in electronic mode. It also requires that the all public services in India should be delivered in electronic mode within 5 years from the date of commencement of this bill. The bill also provides for extension of the term by another 3 years, provided it is supported by valid reasons. That means, in eight years from now, all public services in India will be delivered online. The draft bill can be downloaded from the Ministry of Information Technology website.

The bill is likely to be placed before Cabinet soon. Check out this news brief on Business Line.

Tuesday, October 11, 2011

BYOD – Yet another challenge for IT heads


For those, who are not familiar with the term BYOD, it stands for “Bring Your Own Device” and use it to achieve your work goals, be it within the company or anywhere else. A simple example for this is when an employee uses his own iPad to access his corporate emails, or use any other wi-fi enabled device to connect to corporate wi-fi network and use it to perform certain work related tasks. This has been in practice with the education and training companies, where the students / participants are expected to use their own devices, subject to meeting of the required minimal hardware and software specifications. Thanks to the last recession the recent explosion of the smart personal gadgets, companies are increasingly considering allowing this. 

The factors that drive the BYOD amongst corporate are:
  1.  Increased Productivity - Employees are expected to be happy working on their favourite stuff and in turn that is likely to bring in increased productivity.
  2. Better Mobility – Organizations with mobile workforce, who typically work on the move, feel that BYOD could offer better mobility and flexibility.
  3. Cost Savings – Though this may not be a real benefit, as organizations may end up spending considerably on mitigating the risks that BYOD brings on board, this is considered as a factor driving the increased adoption.
  4. Influence from senior executives – Typically if a senior executive buys a latest gadget and then using it in the workplace to do their work.
  5. Decreasing client installs – With increased adoption of Cloud based applications, all that a user need to access the enterprise application is a compatible web browser and this favours BYOD.

Certainly BYOD brings on board a lot of challenges to the IT department and here are some of the key challenges:
  1. Support – The IT department have to start supporting varying make and models of smart gadgets running different operating systems and web browsers. Unless the IT department comes up with the list of gadgets that they can support, it could soon be a nightmare.
  2. Licensing – If there are certain third party components to be installed on the smart devices, then it is better to have the licensing terms of the component vendor verified, as some vendors may impose restrictions in installing such components on devices other than those owned by the organization.
  3. Network and Application Security – When employees use the organization provided devices, they are appropriately hardened in line with the security policies of the organization. But in case of BYOD, the employees for sure would not like to have their devices hardened for work use, instead they would like to be the administrators of their own device and play with it in whatever way they want. On the other hand, employees may even go ahead and install more and more mobile apps of their choice, some of which could even be malware.
  4. Data Security – Whatever data that is cached or stored on the gadgets, as the devices are used for work are subject to be easily compromised.

For sure, this is yet another challenge that the IT managers should be ready to face soon, if not now.  

Saturday, September 10, 2011

Characteristics of SaaS Applications

The evolution of Cloud Computing has paved way to enterprises look at subscribing for SaaS applications as against licensing an application for exclusive use. The primary benefit being the cost savings due to centralization. As more and more enterprises are looking for Cloud and SaaS model for its application needs, the product companies are exploring options to enhance their existing products so that they can be offered on SaaS model. It is important to understand the key characteristics of the SaaS applications before planning for the conversion.

While the application should be accessible over the web is an important characteristic, the following other characteristics are also important to look at:

1. Multi-tenancy

Typically all applications support multiple users. But a SaaS application should support multiple users of different organizations. Which means there should be a mechanism to identify and appropriately differentiate the users of a specific organization. That is the application should support multiple tenants. The tenants would also be interested to have their data be isolated and not to be mixed up with that of other tenants. At the least, the SaaS application should have the ability to uniquely identify each and every data record against a tenant.

2. Subscription and billing mechanism

Organizations are embracing SaaS applications on the premise that they will be paying far less based on one or more parameters, which measure the usage by the specific tenant. For instance, SaaS application may be priced based on number of users or based on subscription and use of specific modules / features. Some times, the pricing may be even complex, where it could be based on the transaction volume or a combination of one or more such measures. So, the application should be capable of tracking and logging such parameters and that the billing could be automated.

3. Scalability

A typical web application is hosted on a separate instance owned and exclusively used by a specific tenant. Whereas in case of SaaS application, the provider owns the hosted instance, which is used by all the tenants. Though the provider has the option to host a separate instance for each tenant, the economy of scale would at its best when a single instance is offered for multiple tenants. Depending on the application's features and the wide reach amongst the potential customers, the customer base could grow so fast and the application should be scalable both horizontally and vertically to support the unexpected growth in volume.


4. Manageability

The tenants should have the ability to manage their part of the application including managing the users, roles, permissions, etc. As the subscription base grows, it would be ideal to leave the application management to the tenants themselves. This requires the application to have necessary features / functions for use by the tenants.

5. Self service sign-up

While self service sign-up is not a key characteristic, it is a highly desirable to have this feature when the customer base is expected to grow too fast. Similarly, on boarding a customer may involve data migration from a different application used by the tenants before. The SaaS application should expose appropriate interfaces / APIs to facilitate the migration. It would also be a desirable to expose APIs to facilitate export / back up of data by tenants themselves.



6. Tenant specific customization

Typically, product companies undertake to customize an application to meet the specific needs of the customers by enhancing the application. But this would not work in case of SaaS application, as all the tenants would typically be using the same version of the application. That means, the application should be highly customizable, so that it satisfies the specific needs of all the tenants. In a large scale SaaS application this is achieved by providing the ability to extend the application by defining and deploying specific screens and scripts by the tenants themselves.

That is not all. There are other characteristics too and some of them could be key depending on the nature and demands of the industry and the providers. Please feel free to share your thoughts.

Here are some useful reference links that deal with the SaaS application challenges and characteristics.

Saturday, September 3, 2011

Future of Personal Computer

With the evolution of smart phones and tablets, the survival of Personal Computer could be under threat. Let us examine, if there is a possible thing that PC alone can do.

Thick Client Applications: We have started seeing the increasing number of applications moving to the cloud and one just need a browser and may be an appropriate pug-in to run a cloud application. Even heavy weight applications like ERP suites and Business Intelligence Suites are now being offered over the cloud. In few years from now, I don't think there will be any compelling need to use a thick client application.

User Convenience:  Yes, a bigger monitor and a regular keyboard with a mouse will really be convenient to work on a PC. But do we need a PC just to have a bigger display and the key board? Not really, some of today's smart phones are dockable on to a device, which facilitates connecting to a bigger display and keyboard.

Higher Computing Power: When the applications are served out of Cloud, much of the processing happens elsewhere on some server(s) located over the cloud, and not much power is required on the client device. That is not the end, in few years from now, the smart phones / tablets will equally sport a high end processor with even multiple cores.

Extreme Gaming: Most of the popular games today are online games. Gamers also prefer online games which connects buddies from all over the globe to join and play together. More so, because the gaming service providers gain more in the form of Ad revenues in case of online games than Thick client games. Above all, there are special purpose gaming consoles in the market for extreme gaming.

Enterprise Computing: While it could be ideal to go with enterprise owned secured and locked down personal computers to access and process enterprise information, but that does not mean that they have to be PCs. Even now most enterprises are encouraging their employees to work from home on a Laptop, there by saving so much of energy costs at the physical location and at the same time commuting time for the employee. The evolving tablets could easily replace the Laptops.

Research firm Gartner slashed its growth forecast for the global PC market this year to 3.8 percent from 9.3 percent citing boom in media tablets.

You name one thing, we can think of how tomorrow's personal gadgets could address that. Would like to here from you on this trend.

Friday, September 2, 2011

Tap to Click feature of Touch pad on Laptops

Long time ago, when I was seriously preparing a process document on my Laptop and I kept typing in the text as it was flowing from my mind, not looking at the screen. When I looked up to see how it is coming up, surprised that the sentences were scrambled here and there. Then I started observing as to what is happening while typing in and found that the typing position suddenly changes to a an unexpected location, and your key strokes produce characters at an unwanted location! For a while I thought this could be a virus or malware problem or may be a problem with Microsoft Word.

But it did not took much time for me to figure out that this is the 'tap to click' feature of the touch pad. As you keep typing in, your thumb or such other finger taps on the touch pad surface and as a result, the typing position shifts to the position where the mouse cursor was at that time. From then on I have it included in my Laptop build document to have the tap feature disabled. May be this feature is useful for some, but for me it is a hindrance. Similar issues with the pointing stick, which is positioned amidst the keys and if you have it enabled, the chances of you taping on it is even more. Share your experiences with this feature.

Friday, April 8, 2011

Microsoft and Toyota partner on smart-grid tech | Microsoft - CNET News

Microsoft and Toyota partner on smart-grid tech | Microsoft - CNET News

Interesting to note that cars of next decade will be one's smart terminals and would allow the drivers and / or passengers to interface with various devices at home or office and transact. This means, travelling is not a waste of time, one can be at work while driving!

Even cars and the humans can be embedded with devices and technology that will authenticate the driver / passengers based on one or more of various personal traits, before allowing to drive the car. We have seen some such capabilities in science fiction movies, which can be a reality in the coming decades. The possibilities are endless!

Wednesday, February 16, 2011

High Performance Workforce

For a sustained success of an IT services organization, it is important to have a high performance workforce backing the leaders. A quick peek into various resources on what is high performance workforce, found that the following are the three fundamental building blocks to setup a High Performance Workforce:

1. Accountability for Right Results, which requires the employees to have the ability to focus on the right priorities and in turn achieve the right results at right time.

2. Earn Trust, which requires continuous mentoring and recognition of people whom the organization depend on, so that they feel valued, confident and ready to give their best.

3. Talent Development, a continuous skill assessment and development program, with which, the workforce is always on the edge of the needed skills and is ready to tap the opportunities that comes through its way.


Tuesday, November 23, 2010

High Volume Transaction Processing

Came across a presentation on payment processing by Voca at InfoQ. Just felt that the key design principles used by voca may be of interest to those generally deal with the problems of high volume transaction processing. These principles are:

1. Minimize movement of data: Movement of data across physical and logical layers could result in heavy network traffic and also necessitates a complex transaction and exception management over multiple layers. The idea is to whenever a set of transactions need to be processed for certain validation or transformation, do it within the database instead of moving such set of data to other layers and then bringing it back to the database.

2. Task parallelization: This an area which most of us might have not considered. Using the Work Manager / worker architectural pattern, the tasks can be executed by multiple nodes, which could be separate physical nodes with the ability to add more nodes when demanded.

3. Physically partition data: When the all in one database hits its scalability limits, the option is to partition the database. It would be ideal to envision the possible physical partitioning of the data and implement it right from the beginning.

4. Optimized reads and writes of volatile data: This is one principle, which most of us adhere to by having necessary indexes, managing the fetch sizes, etc.

5. Minimize contention: Contention is certainly an avoidable thing as this will cause the workers wait for release of the resources or data and directly impacting performance. One option is not to wait for the release of resources and instead, look for an alternate source of data / resources. Of course this will require a thought through design of multiple synchronized instances providing the data / resource.

6. Asynchronous decoupling: Usage of a middleware like message queue can certainly help in this area and there by improving the response for the consuming applications.

7. Keep Complex business logic outside database: Considering the limited scalability options of the database, it would be ideal to minimize the work load for the database by shifting it to other tiers where possible.

8. Caching frequently accessed data: There is no point in traversing through multiple physical and logical layers to fetch the same data multiple times. Caching such data in appropriate layers will certainly will leave the network and other resources for other useful tasks.

The referenced presentation is available on InfoQ website at http://www.infoq.com/presentations/qcon-voca-architecture-spring

Wednesday, July 21, 2010

Scalability

When we talk about the scalability for a web application, it is quite common for us to think of load balanced web farms. This obviously will require the application session state be managed using one of the OutProc options. Depending the utilization of the session state data and the implementation approach, the state server (be it state service or SQL server) may soon hit the scalability / performance limits and become a bottleneck.

This prompted me to think about possible scalability and availability solutions for the State Server. It is again possible to have a load balanced farm of servers to serve the session state requests. But, this requires the state information is replicated across all such servers, so that the information will always be available in across all the load balanced state servers. Obviously this is additional overhead. There are third party tools(like scalenet) to have the session and cache information replicated across multiple servers.

As I was looking for an alternative solution, just came across this Best Practices article on state management published by Microsoft. This article suggests a simple approach of session partitioning using the PartitionResolver Interface and determining the partitioned server using a key derived from the session id.

If any of you have implemented this or any other approach, do post it here.