Tag: System Architecture

Rapid Solution Delivery Framework

In this tough economical situation, leading a multi-million, multi-year project to a failure is not an option for any corporation.  Leaders or managers who lead project for years without successful implementation must be watched closely by the executive management for their performance during this economical situation. I totally understand an organization can learn from their mistakes, but successful organization learns from others mistakes but not on their own cost.

The project managers and leaders are seeking the best possible ways to ensure successful implementation in spite of any unforeseen hindrance in the execution. Even for the multi-million dollar projects utilizing the cost effectively solution are demanded. The project managers and leaders are seeking the best enterprise or system architect to provide solution to exceed customer expectation, meet requirements and at the same time provide most innovative and cost effective solution.  Enterprise architects or system architects are required to have a set of tools in their arsenal to provide a rapid cost effective solution with highest possible success rate.

Rapid Solution Delivery Framework is an abstract concept used to rapidly define a cost effective and innovative solution. The key components of the framework are:

1. Cloud computing
2. Open source
3. Social network tools

Cloud computing: It addresses the rapid infrastructure setup or applicaton setup or business rules for any solution delivery. The cloud platform may come from external public cloud provider like Amazon or internal cloud provider or external private cloud provider (like secure24, rackspace for infrastructure) . It is rapid way of setting up the infrastructure for the solution delivery. There may be cases where cloud platform may also provide business solutions.

Open Source: There are lots of commercial software product companies leveraging the open source or supporting or sponsoring the open source to improve their commercial product quality tremendously. For instance, IBM supports Apache product development and leverages the Apache web server and bundles it as a IBM HTTP Server (I H S). The open source concepts are not pertained to system software. The open source concept proliferated to various segments and even in the chemical bonding structural analysis there are lots of open source tools available where the researchers and students easily learn and collaborate. Open source has become an integral of any IT solution delivery model.  Open source provides wide range of solutions from operating system, system software (webserver, database server, application server), application development frameworks (spring, hibernate, struts), security (OpenSSO, Crowd, OpenLDAP) , application development IDEs (like eclipse, Galileo ) and etc. These open source products not only provide quality solutions but also provide cost effective solutions.

Social network tools: Social networking concepts and its implementation matured over the years and it is extensively being used beyond for personal use. There are major corporations like Cisco, Deloitte, IBM uses the social network tools for better collaboration among the employees to provide effective solutions to their clients. The tools landscape in the social network media is vast and deserves a separate blog. To name a few major categories like Video, Video Aggregation, documents, events, Wiki, LiveCasting, Pictures, social bookmarks, Crowdsourced content, blog and etc. There are at least 3-4 popular tools in each of those categories. The social networking technology landscape plays a vital role in leveraging existing solutions, collaborate better among various stakeholder of the projects.

Vivek Kundra implemented few projects in DC state government as a CTO are few practical examples how social networking platform provides a foundation for a rapid cost effective solution.

Along with these key components, depends on the business requirements, there may be other commerical products like SAP, or Flex (for UI) will be part of the over all IT solution.

Cloud Computing Architecture and its future..

Cloud computing concept continue to receive acceptance and its adaption increases exponentially.

I heard today from one of vendor representative that he grew up in the farm and growing up in the farm means he had to learn whatever required in no time to do farming. He confirmed my thoughts on how farm boys grow up in the farm. Cloud computing basically took the farm boy approach. Do whatever is required to do the job!

Fifteen years ago, the PC support team use to install the operating system (windows 3.11,MS-DOS ) in each and every PCs and PC support cost use to be a significant cost in the IT shop. As repetitive mundane tasks mandates  innovation, solution like Norton Ghost solution were emerged and hence deployment made easy and drove the PC support cost down.

Cloud computing took the Norton Ghost solution to the server environment.  Like me, I can imagine most of the IT members spent significant time in  building the development, testing, staging and production environment for each application and spent  time to ensure that all the environment were build alike and still had environment behaved differently for unknown reasons. Cloud computing solves all theses problems.

Key components of cloud computing:

Utilizing the external storage in the server environment has been in use for quite a while. In some cases, like manufacturing production databases, selecting the apt external storage platform including hardware, storage operating system, connectivity and raid types plays a vital role in the system architecture.  Likewise, in the cloud computing, the storage and processing unit are physically separated and logically connected as and when required. It includes the boot volume too.  To manage both processing units and storage units, an external operating system called cloud computing operating system is used. There are vendors like vmware sells cloud computing operating system like vmware vSphere and there are open source cloud computing operating system like eyeOS

  • Processing Units
  • Storage units
  • Cloud computing OS
  • Network units

Architecture of cloud computing:

For external users

Have a OC3 or OC12 or OC48 internet link based on your requirement to connect to the internet for your data center. Have a cisco 7200 series and cisco ACE series for your first and second layers of your network. Have netcahce or ssl accelerator or intrusion prevention devices based on your requirements. Connect the internal vlan with blade server (HP) and storage units like EMC. Slice the EMC luns to have a preload images like Redhat, Windows with preloaded system software like application server, web server, domain name server, database server, director server and etc. Install the cloud computing operating system in the external boxes and link both processing and storage units. The cloud computing operating system manages both processing and storage units.

If there are requirements to connect stand alone servers, it can be connected in the internal vlan.

The architecture is straight forward and purposefully I’m not drawing it.

For internal users:

The same architecture expect OC3 internet link.

Cloud Computing Future:

The concept is very cost effective and efficient. Instead of building images for production servers with application server, web server, database server and etc.. the image will be elevated to more business unit image. Loan processing image, collection and customer service image, delinquency image, skip tracing image,  bankruptcy, treasury, securitization, point of sale and etc.  The technology cloud is in the phase of reaching maturity and business cloud is emerging. There is a huge potential for the players who get quickly into the business cloud.

Think about for a minute, if you are bank, why do you want to spend time on building IT infrastructure to process loan. Banks JUST want to focus on getting good papers, good customers and not worry about how the assets are stored, retrieved and processed. Whoever get into business cloud will lead that market segment for a while!!


Intalio BPMS

I had a dream . The dream was to map out all business processes in an organization, develop the run time from the process map, validate the function of the new run time and sun down all existing systems. It was a dream few years ago. I challenge myself, it is not a dream any more and we, as an industry,  are moving towards it. We may not be there today to make it real but we are in the path of it.

Information technology is slowing becoming business technology and technology will become a black box managed by set of providers. Business technology management team will manage only set of  providers but not technology in near future.

Phase #1 of the dream:

  • Select a cost effective BPMS software
  • Utilize internal & external resources to map out the processes using the BPMS
  • Host it in the cost effective platform as a service (Cloud computing)
  • Leverage the centralized business process map to simulate/emulate any new business ideas
  • Validate the new business ideas for strong business case
  • Develop the application from the process map and launch it in PaaS (Platform as a service) like Google apps.

 The first step of the phase #1 is to select the cost effective BPMS software. I do not need to amplify why it needs to be cost effective and economical option. Due to the global economical crisis, most of the organization is on the lights on mode, and minimum budget allocated for any discretionary spend for this year. Economical and cost effective alternatives are not differentiators in the competitive environment, it is a survival ingredient.

When I explored the cost effective BPMS software, Intalio, the open source BPMS is in top of the list. Intalio also integrates with Google Apps and salesforce.com.

The question is, what is the total cost of ownership for Intalio installation in an enterprise. More to come on the findings..

Patterns in software engineering – An Introduction

What is a pattern? (in software engineering world)

A predefined solution for a problem for the given context.

Key words in the above definition is problem, solution and the context.

What are the different categories of the patterns ? (in software engineering)

  • Analysis patterns
  • Design patterns
  • Architectural patterns
  • Technology patterns
  • Integration patterns

Why do we use the patterns?

Objective of patterns is to enhance

  • Reusabililty
  • Repeatability

in return will fetch

  • Cost efficiency
  • Agility (time to market)

Where the pattern concepts started in general ?

The pattern concept has been in use for thousands of years. In the building architecture and design, we have been using the patterns quite extensively. Ancient buildings like pyramids, roman collegium and lot more used the patterns in the implementation. For instance, the pillars used in ancient temples built in Thailand, India and etc are patterns. They did not design the pillars every time. The pillars are to hold the load of the building. We can notice the reusability and repeatability of the pillars in multiple places in those ancient building architecture which in returned improved the ancients to be effective and quick.

What are the types of patterns in each category?

There are conceptual, logical and physical patterns in each category. Conceptual patterns are very high level solution for the given problem at the given context. Physical patterns spells out the implementation solution for the given problem at the given context. Logical patterns are between physical and conceptual.

What is software system architecture?

Software system architecture is collection of viewpoints. The types of viewpoints depends on the type of systems. Software system architecture for a typical web application contains information and functional views primarily focuses on the structural (or static) representation of the system and the deployment, concurrency and operational views are the behavioral (or run-time/dynamic) representation of the system and the development view is guidelines. Views are instance of viewpoints. Viewpoint is a set of standards, guidelines, templates, patterns for constructing a view.

Functional viewpoint:
The functional viewpoint represents the business processes and function elements of the system. It is mandatory for all web development projects since all web projects are executed to meet a set of functional requirement.
Information viewpoint:
It represents the data and flow of the data within the system. The data or information is integral of the web system.
Deployment viewpoint:
The typical web environment contains minimum a web server with internal disk, domain name server, web browser, inter network or intra network. The environment could be complex for a transaction application. It contains quite few infrastructure components like web server, router, switches, firewall, application server, domain name server, intrusion detection devices, messaging services, storage management systems, load balancer, ssl accelerator, external cache devices etc. It is essential to understand the deployment view of the system upfront during the architecture definition phase of the software development life cycle.
Development viewpoint
In an enterprise environment, there are set of standards, policies, patterns, anti-patterns, reference models, lessons learned, domain knowledge, reference architecture and etc. The development team is expected to reuse the existing references. These artifacts are provided to the application developed team by the centralized architecture team. With recent success of the outsourcing development model, the development viewpoint is required to be part of the architecture.
Concurrency viewpoint:
The functional elements of the system are to be served simultaneously for concurrent users in the web environment. It is required to study the behavior of the concurrency structure of functional elements. It enables to create the necessary environment setup like thread configuration for the operational viewpoint.
Operation viewpoint
The gap between the application development process and the infrastructure management process is quite significant in the industry in spite of the well known IT infrastructure management frameworks like ITIL being in place and adapted widely. The longevity, sustainability, maintainability of the system are determined how the operation views are analyzed and designed during the architecture phase of the project. It may be optional if the web application is developed for a limited time.

Software system architecture definition model

Consistency and repeatability in the architecture definition process is a must have requirement in an organization. It is like parents teaching some moral lessons to the kids. Kids will watch the parents if parents do practice what they teach them. If parents does not practice what they teach the kids, the kids are not going to buy-in to the parent’s teaching. Same situation with the architects. Architects emphasis and promote consistency, repeatability, efficiency and etc to the project team and if they do not practice those imperatives in their process and work product, it is going to be a hard sell for them.

Picture speaks more than thousand words. The above diagram illustrates a model, software system architects would follow to define the architecture blue print. The architect’s tool box are the knowledge gained through the internal process, individual experience, continuous improvement. The reference model and pattern catalog provides a framework for repeatability in the architecture definition process and in return implements those imperatives in the end product of the process. ie. software system architecture blueprint.

Software System Architecture definition process

Software System Architecture definition process defines solution blue print for a system requirement. The architecture blue print consists of various view points  of a solution. Architecture is not detail design. The blue print is a guidelines for the detail design.  It ensures all the constraints and the requirements are met before any signficant work (like detail design) is done. It is an iterative process. The blue print consists of view points like information, technology,development,deployment, functional, concurrency and etc. The different types of view point of the blue print depends on the type of systems. For instance, embedded system architecture blue print generally emphasis on concurrency,functional, deployment,technology view points and where as a financial system does not emphasis on concurrency view point.  The system architect shall decide the required view points for the system requirements.

 The blue print will be analyzed and validated from a different perspective like security, compliance and it is part of the architecture blue print validation process.