November 6, 2015

Whitepaper – Capacity Planning for Application Design – Part 1

Filed under: Uncategorized — mifan @ 8:43 am

Capacity planning and the ability to determine and forecast the capacity of a solution is a key aspect in enterprise solution architecture and design. Capacity planning is an art as much as it is a science, and experience plays a big part in the design of a solution. This white paper attempts to explore the science of this discipline – it will look at the theory of capacity planning, and discuss the important concepts and parameters, and some practical examples.

In a follow up paper, we’ll apply these concepts to determine the capacity of an actual use case using the WSO2 middleware platform with step-by-step examples.

August 17, 2015

Whitepaper: Big Data Analytics In Sports – Introducing Football’s new 12th Man

Filed under: Uncategorized — mifan @ 4:09 pm

My recent white paper focuses on big data analytics in football/soccer: Big data analytics in sports – Introducing Football’s new 12th man


Goal! Lionel Messi lets loose a curling free kick from 20 metres out – over the Ajax wall and into the top left corner of the netting. Jasper Cillessen has no chance. Alongside great skill, relentless practice, individual presence of mind and the team effort that led to the free kick, science also played a big role in that goal – knowing exactly how the defender would react, how much spin is needed on the ball, the goal keeper’s strong side and who’d be taking the left sided free kick was already part of the pre-match briefing. A great team [arguably the best club today (disclaimer: the author of this white paper is an Arsenal fan so that means a lot!)] turned to a super team with the science of data analytics.

This white paper will look at why data analytics is important in football, and for that matter in any sport, along with the case for data analytics. It will also discuss the details of a solution and explain the features such a solution or technology can provide. Moreover, the paper will also take you through how this can be achieved with a technology stack that supports big data analytics.

I’m especially proud of the last image in the white paper, which is something I took during Arsenal’s FA cup victory parade in London


February 16, 2015

Workshop: Architecting and enterprise API Management strategy

Filed under: Uncategorized — mifan @ 10:57 am

A good internal and external API management strategy and architecture is key to building ecosystem platforms that lead to successful API economies in the enterprise.

Slides: Architecting an Enterprise API Management Strategy

This workshop that I presented at APIDays in Sydney looks at best practices in API management using the WSO2 API Manager and Integration Platform products, which are used to rapidly implement RESTful design, enforce governance policies, safely scale solutions, orchestrate complex interaction sequences, and re-use assets. The session also looked at reference architectures and architectural recommendations of building large scale API ecosystems.

November 4, 2014

Concurrency, Transactions per Second and Capacity Planning for Application Design

Filed under: Uncategorized — mifan @ 1:20 pm

The ability to determine or forecast the capacity of a system or set of components, commonly known as ’sizing’ a system, is an important activity in enterprise system design and Solution Architecture. Oversizing a system leads to excess costs in terms of hardware resources, whilst undersizing might lead to  reduced performance and the inability for a system to serve its intended purpose.

The complexity of course is forecasting the capacity to a fair degree of accuracy. Capacity Planning in enterprise systems design is an art as much as it is a science. Along with certain parameters, it also involves experience, knowledge of the domain itself and inside knowledge of the system. In some instances, it goes as far as analysing the psychology of the system’s expected users, their usage pattern etc.

This post deals with some parameters of capacity planning, with a focus on how a few factors such as concurrency and Transactions per Second (TPS) play a role in it. Of course, many other factors could determine the capacity of a system, including the complexity of transactions, latency and external service calls, memory allocation and utilisation etc.

Throughput and TPS
Throughput is a measure of the number of actions per unit time, where time can be in seconds, minutes, hours etc. Transactions per Second (TPS) is the number of atomic actions, in this case ‘transactions’, per second. For a stateless server, this will be the major characteristic that affects the server capacity.

Theoretically speaking, if a user performs 60 transactions in a minute, then the TPS would be 60/60 TPS = 1 TPS. . Of course, not all concurrent users who are logged into a system might necessarily be using that system. Additionally, think time and pace time comes into consideration.

Concurrent users are the number of users concurrently accessing the system at any given time. In capacity planning, this has several meanings and implications. In an application server with a stateful application which handles sessions, the number of concurrent users will play a bigger role than in an ESB which handles stateless access, for instance. However concurrent users doesn’t necessarily mean a load on the system of the same amount. If 200 concurrent users are logged into the system, and have a 10 second think time, then that amounts to roughly 20 actual concurrent users hitting the system. For systems designed in such a way, each concurrent user consumes some level of memory which needs to be taken into account.

Application design and optimisation
The design of the application or software plays a big role in capacity planning. For each concurrent user if a session is created, then this means some level of memory consumption per session. For each operation, factors such as open database connections, the number of application ‘objects’ stored in memory, the amount of processing that takes place etc determines the amount of memory and processing capacity required. Well designed applications will strive to keep these numbers low or would ‘share’ resources effectively. The number of resources that configured for an application also play a role. For instance for database intensive operations, the database connection pool size would be a limiting factor. Similarly thread pool values, garbage collation times etc also determine the performance of a system. Profiling and load testing an application with tools would help determine the bottlenecks of an application.

Message Size
The size of the message passed across the ‘wire’ is also an important factor in determining the required capacity of a system. Larger messages mean more processing power requirement, more memory requirements, or both.

Work done per transaction
Each incoming ‘transaction’ to a server will have some level of operations that it triggers on the same server. If the transaction is a simple ‘pass through’ that would mean relative lesser processing requirements than a transaction that triggers a set of further operations. If a certain type of transaction triggers for example a series of complex XML based transformations or processing operations, this would mean some level of processing power or memory requirements. A sequence diagram of the transaction would help determine the actual operations that are related to a transaction.

Latency is the additional time spent due to the introduction of a system. NFRs of a system would usually indicate a desired response time of a transaction which a system must then strive to meet. Considering the example above, if a single transaction performs a number of database calls, or a set of synchronous web service calls, the calling transaction must ‘wait’ for a response. This then adds to the overall response time of that said transaction or service call.

Latency is usually calculated via a step by step process – first test response times without the newer systems in place, and then test response times with the addition of the newer systems. The latency vs functionality due to the newer systems is then a tradeoff decision. Techniques like caching can be used to improve latency times.

Capacity calculation
The above are just a few factors that can be used for capacity planning of a system and the importance of these factors vary based on the type of environment. With these factors in place, we also need a set of benchmarked performance numbers to calculate server capacity. For instance, if we know that an Enterprise Service Bus, in certain environmental conditions on certain type of capacity performs at 3000 TPS, then we can assume that a server of similar capacity and operations would provide the same.

The application design and optimisation parameters should also be taken into account as part of the solution. Techniques like caching can help improve performance and latency – this needs to be looked at from a broader perspective. If the service responses change often, then caching wouldn’t make too much of a difference. The cache warm up time needs to be taken into account as well.

It is advisable to have a buffer capacity when allocating server specifications. For instance, allocate 20-30% more of server specifications to that of the peak NFRs to ensure the system doesn’t run out of capacity at peak loads.

Monitoring tools are ideal to calculate a system capacity. Load tests, application and server profiling via monitoring and profiling tools can help determine the current capacity fairly accurately and help pre-identify bottlenecks.

The type of hardware makes a difference as well. Traditional physical boxes are fast being replaced by VMs and cloud instances. The ideal was to calculate capacity if to have benchmarks on these different environments. A 4GB memory allocation on a VM might not be the same as a 4GB memory allocation on a physical server or an Amazon EC2 instance. There would be instances that are geared towards certain types of operations as well. For example, EC2 has memory optimised, compute optimised or I/O optimised instances based on the type of key operation.

As mentioned previously, capacity planning is an art as much as it is a science, and experience plays a huge role in accurate planning of capacity.

October 19, 2014

Webinar – Entity Linking and REST patterns in SOA

Filed under: Uncategorized — mifan @ 4:34 pm

My webinar on Entity Linking in REST patterns in SOA.

The abstract of the webinar is as follows:

“Assumptions are the termites of relationships” – Henry Winkler

A forward-thinking system cannot make assumptions about its entities and their relationships, and Henry Winkler was spot on! Many a distributed system still maintain hard-coded logic on the relationship of services that affect flexibility and adaptability of architectures.

The Semantic web is all about relationships. The web is moving towards a self-describing set of entities, where the linkage between entities is discoverable by applications. From the world of Wikipedia and the myriad of related data, the web is now moving towards massively linked data. Service oriented distributed architectures can learn from these patterns – from composition services that return a link to its related entity with lightweight endpoints to an API facade of REST APIs built in a HATEOAS pattern, the new SOA can be self-discoverable and dynamic, leading to adaptable implementations.

In this webinar, Mifan Careem, director of solutions architecture at WSO2, will discuss

  • How the REST inspired entity linking pattern can be implemented in SOA
  • How the WSO2 platform can be used to implement a loosely coupled, self-describing architecture that involves API facade, service orchestration, and web API design and related patterns, such as Lightweight Endpoints
  • Reference architecture, practical examples, and related research to explain the implementation process

The webinar recording is at the WSO2 site.

April 30, 2014

Connected Government – Cloud Enabling Government

Filed under: Uncategorized — mifan @ 7:41 pm
Tags: , ,

Cloud adoption has had a tremendous impact on e-Government or digital government, leading to reduced operations cost, reduced IT footprint, sharing of knowledge and infrastructure and overall more effective public services. National and local governments that are capitalizing on the cloud infrastructure are starting to reap benefits with improved government to government (G2G), government to business (G2B) and government to citizen (G2C) services.

As applications and their architecture become more complex by the day and as more and more applications start moving towards the cloud, nonfunctional requirements start becoming the key set of requirements that need to be satisfied in order to ensure successful implementation. NFRs have become the key set of issues that enterprise architectects, devops, and implementers face in the move towards cloud-based systems.

This whitepaper on Connected Government – Cloud enabling public services provides an insight into the challenges of building an eGovernment solution, and how an enterprise grade Platform as a Service can help achieve the key NFRs.

May 28, 2013

SSH must-haves for Productivity

Filed under: Development,FOSS,Linux,Uncategorized — mifan @ 9:21 am

Devops work with many different remote systems at once. For the lazy bunch ( a.k.a the truly productive bunch who look for ways to make their work easy – a.k.a the really bright ones ) there are ways to make life easier.

So instead of typing

ssh whitewizard@

(or wait, was it, and then entering the password that no one can remember given to us by the sysadmin, I’d now say

ssh devserver

and voila.

The steps to get there are:

SSH Passwordless Entry

Step one is to get rid of those pesky passwords required each time you SSH into a host. This can be achieved by setting up an RSA (public/private key). And besides, who’d say no to added security?

To generate a SSH key if you don’t have one already, run

mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t rsa

You will be prompted for a location to save the keys, and a passphrase for the keys. This passphrase will protect your private key while it’s stored on the system.

Generating public/private rsa key pair.
Enter file in which to save the key (/home/b/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/b/.ssh/id_rsa.
Your public key has been saved in /home/b/.ssh/

Your public key is now available as .ssh/ in your home folder.

Next, the little bit of magic where you’d copy your key over to the remote/host machine. If you can SSH into the machine, then this should be no problem. Run

ssh-copy-id whitewizard@

Done. You can now login by saying

ssh whitewizard@

And the system shouldn't ask you for a password.

SSH Hostname Shortcuts

But wait – we want more (or less, actually). The next step is to shorten this further. For this create a file .ssh/config with the following entries:

Host [shortcut]     
 Hostname [full-hostname]    
 User [username]

I’d use

Host devserver
     User whitewizard

And voila, now running the following will log you into the system

SSH devserver

Of course, replace the above hostnames and usernames with you own – else you’d be login into Saruman’s own server!

April 17, 2013

Clearer Active Tab in Gnome 3 Terminal

Filed under: Uncategorized — mifan @ 7:56 am

I use Gnome on Ubuntu 12.10 and use Gnome terminal as the main terminal. A common issue I faced is the lack of clarity of the active/open tab amongst many tabs open in the terminal window. I use the Ambience theme that comes as default.

A simple fix for this is to create a style in Gnome 3:
Create a gtk.css file as follows, if it doesn’t exist

vim ~/.config/gtk-3.0/gtk.css

Add the following to the file – you can change the color value to any color as required.

TerminalWindow .notebook tab:active {
background-color: #CC6600;

And now you’ve got an active tab that is much more visible

Gnome terminal with custom active tab

Gnome terminal with custom active tab

March 19, 2013

What Your Favorite Map Projection Says About You!

Filed under: Uncategorized — mifan @ 4:54 am

Yet another brilliant XKCD comic – and this time for the geography/neogeography folk – and true to some ‘extent’
Map Projections XKCD comic

August 16, 2011

Espatialy for You!

Filed under: Uncategorized — mifan @ 9:16 am

Espatialy for You! is my attempt to jot down my notes, thoughts, research, my ultimate goal to advocate GIS catalog world dominance and what not from a neogeographers point of view. Head over to Espatialy for You! for more.

Next Page »

Blog at