Sunday, December 27, 2009

20 Years in Cricket Field


Sanath Jayasuriya the cricketing ledgen did complete his 20 years of international cricket carrier yesterday. So he has spend half of the time from his age in the internaltional cricket grounds.
He has been recently interviewed by a indian journalist and what he has mentioned there was his ambition is to play for next six months. I think Sri Lankan officials should give him a free visa to play till end of next world cup and let him to play his natural game.
This is a person who took the Sri Lankan name all around the world and always do entertain the cricket loving public. 
Keep it up Sanath, we would like to see you back in form.

"The biggest is to play the 2011 World Cup. Before that, the first challenge is to come out of this lean phase with the bat. I know Sri Lanka are likely to play about 30 ODIs before the World Cup, but I am not thinking that far. I am only thinking of five ODIs at a time, and if I can perform in three out those five, I'm right on track for the next World Cup. I am trying. Obviously if the team management wants to send me a message they should be clear about that to me, as they have been in the past. "

Saturday, December 26, 2009

Product Installation On Linux

Linux is an commonly used operating system to run production systems, specially the RHEL (Redhat Enterprise Linux). Few tips on product installations on linux and these information are for users who do manual installations without using installers (.rpm/.deb etc..). 
Installation folder: Base folder for product installation is /opt, under that you can create the vendor name (e.g. /opt/apache, /opt/wso2 etc..), then the product name without the version or build name (e.g. /opt/apache/tomcat, /opt/wso2/wso2esb etc..) and then the versions/build numbers internally without the product name (e.g. /opt/apache/tomcat/5.1, /opt/wso2/wso2esb/2.0.2 etc..) /opt/{vendor}/{product}/{version}
Symbolic links: Three symbolic links should created latest, previous and default in the folder version/build level. Latest links to the major version you find in the product. Previous links to the version that worked before. Default links to the current running version. Most of the time default links to the latest and in an recovery might link back to previous.  
Sub-directory: Most of the products contains configuration files in conf, log files in log  directory and keep them inside the product home. To make them to a standard conf files should go into the /etc/{vendor}/{product} and create a symbolic link call conf from the product home. Log file path should be /var/{vendor}/{product} and a symbolic link log should create from the product home to the above directory. (I didn't use the word folder because it is a Windows based operating system terminology and directory is the Unix based OS equivalent term) 
Users/Groups: Three set of user groups used in an installation, {product}admin, {product}run, {product}test. Privileges of the groups get vary from product to product but most of the time non admin users/groups. Each group will have a default user with the same name as the group name and user can add system users for the groups based on the need but recommend to use the users created for the product. Admin user will use to install and configure the product, that will have full permission to the product installation  directory, conf dir and var dir. Run user is the one who will be running the product on production and will have read permission to the product home and conf dir. Run user will have write permission to the log folder. Test user will use to test the application will have the same permissions as the run user. In addition to this {product}dev user can be use as the development user that will have similar permissions as the admin user. Best practice is to have three environments as dev, test and prod.
If the product does not have inbuilt backup, archive facilities it is important to create some cron jobs to backup the conf directory regularly and archive the log directory periodically.
I'm not trying to implement the entire LSB (Linux Standard Base) specification here, only specifying some common practices followed by most of the Linux based product installation. I'm sure this information will be helpful for the developers, release engineers and test engineers.

More MJ Quotes


I did blog about MJ (Michael Jorden) quotes before but thought of writing back because I fond few more interesting ones. While ideling during a transit at Atlanta airport I bought a magazine about MJ (by ESPN) and it did cover lot of information about MJ with these valuable quotes.
  • 'Any thing can happen if you are willing to put in the work and remain open to the possibility. Dreams are realized by effort, determination, passion and staying conected to that sense of who you are'.
  • 'I know fear is an obstacle for some people, but it is an illusion to me.., Failure always made me try harder next time'.
  • 'My standards have always been mine alone. I have never tried to be like somebody else or live up to the expectation of others. I don't believe in following'.
  • 'Once I made a decision I never thought about it again'.

Thursday, December 24, 2009

Painting the Applications with EJB


I did come across with several applications running as production systems has just painted the applications with a EJB layer. These applications has not used entity beans and message driven beans just stateless session beans.
Most common reason on just using the session beans in these applications are to implement RPC by looking up through JNDI with the EJB model. These applications does not use EJB transactions most of them use JDBC transactions with Hibernate or use Spring transactions.
This programming model brings more complexity on development and deployment. Developer required to get familiar with the JEE programing (EJB-3.0 has done it more easier by introducing POJO with annotations as the JavaBean implementation), when it comes to deployment it requires a application server with an EJB container again that is costly, heavy and hard to maintain.
In nutshell in this model the EJBs (Session beans) just act like the remote gateway to the backend business logic and does not bring any advantage to the application, keep the current programing model complex and carry the complexity to the maintenance of the code.
It is always good to keep the programming model simple, that leads to do quick improvements to the code, improve the debugging capabilities, increase the performance and less memory leaks.

Tuesday, December 22, 2009

Why Middleware ?


Middleware play a important role in the current application software development. What is middleware? Middleware is the glue in-between application softwares, application software components and system software.
Middleware was identified in early application software development and software development houses did wrote separate peaces of software to implement those. But still there are enough middleware can find in the market people tend to implement middleware with the application software.
Why developers do develop middleware rather than pick a existing one? Many reasons, the application architecture does not clearly define the middleware layers, people unaware about the available software, people need customization of the middleware to implement the business use-cases, existing middleware does not address the entire problem.
When it comes to SOA I have seen developer do develop their own service hosting enviornments, enterprise service buses, repositories and modules to implement various WS-* standards. Development houses spend significant amount of time to develop these type of middleware, not only the time spend for development also for testing and maintanance.
Application developers can save this time by using a suited middlewre for the applications, this has to be done with the initial design of the application and should include to the application architecture. Using a proper middleware for the application will lead the developers to spend enough time on designing and developing the business solution.  Picking the correct middleware should be part of the design phase.
Application development teams reluctent to use existing middleware due to many reasosns, one is the implementation is not visible for them so the alternative is to use open source middleware. Another reason is the middleware does not fit for the application requirements, as a solution for that pick a middleware do support open standards and again using an open source middleware provides the flexibility to customize the implementation by changing the code or implementing new implementations and plug them to the core.
As a summary the application developers can concentrate on resolving the business problems by implementing application software and keep the burden of building middleware by using a matching middleware for the requirement.
WSO2 provides a complete middleware stack to resolve many application development requirements.

Sunday, December 20, 2009

A Complete Middleware Platform to Build your Enterprise SOA


WSO2 released the first complete middleware platform to the market with release of two new kids of the WSO2 SOA stack, WSO2 Gadget Server and WSO2 Business Activity Monitor. If you look at the diagram you can see identified SOA functional layers has been filled by one or many WSO2 products.
If you are an architect who design SOA or a developer who develop SOA applications the layered architecture in this diagram will be helpful.
In the top you can see the external service consumers who will interact with human to provide the information from the services and feed input to the services.
WSO2 ESB stands vertically and connects all the layers, by avoiding P2P connections and by adding message mediation to the enterprise. It helps you to implement EAI pattern and MEP patterns. ESB functionality will not only limited to the internal enterprise SOA it connects to the external world using different protocols with transports and adapters.
In your right hand side you can see the management, control and monitoring functional layers. Three products from the WSO2 SOA stack fill that layers of your architecture. WSO2 BAM helps you to monitor the system and business statistics of your business solution, that will help you to build your runtime governance of your enterprise SOA. WSO2 Governance Registry provides you a comprehensive SOA governance framework and a metadata repository to store your SOA metadata. WSO2 Identity Server fulfill the identity and entitlement management of your solution.
Connectivity services contains the service creation and hosting functionalities that is filled by two WSO2 products WSO2 WSAS and WSO2 WSF.  Data services layer filled by WSO2 Data Services Server, that helps you to make the communication between your SOA and the persistent data. That will help you to implement patterns like MDM.WSO2 Data Services Server do support all leading RDBMS like Oracle, MS-SQL, MySQL, Sybase, DB2 and other sources like flat files, excel sheets google spread sheets etc.
Business processes and business services layers will build your business services by adding value additions to the core services deployed in the service hosting layer. WSO2 Mashup Server and WSO2 Business Process Server fill this layers of the big picture.  WSO2 BPS helps you to implement business processes written using WS-BPEL standards.
In the top you can see the presentation services layer that has filled by WSO2 Gadget Server that build the presentation layer with Gadgets implemented using Google gadget specification. WSO2 GS invoke the internal services and render the data into a user friendly manner. You can build a portal using WSO2 GS with efficient and time consuming manner by providing the end-user to do customization and personalization.
So you can see all the architecture needs for your enterprise SOA has provided by the WSO2 SOA stack that has built in top of WSO2 Carbon the development framework and the runtime for WSO2 products.
This complete platform is licenced under Apache 2.0 and provides a pure opensource model.

Saturday, December 19, 2009

IT Governance in Today's Business Enviornment : ISACA

Last week I did participate for a day workshop on the above topic conducted by ISACA, motivation behind participating the event was to see how people see and think about IT governance, because we (WSO2) do have a comprehensive SOA Governance framework (subset of the IT governance) WSO2 Governance Registry.
Key note went on with the topic Risk management in an IT environment and the key learning point of that session was implementation of governance resist by the internal politics of an organization.
Next session went on with the IT governance and enterprise risk management conducted by Ramesh and was a very interesting session. There were couple of actual use-cases discussed within his organization (JKH). Interesting part was the quote "IT is the dog's tail that the business is the dog".
The topic on Information Security in Open Source Model was very poor and the speaker didn't deliver the content for the topic rather trying to explain an opensource project that they are working on.
Couple of sessions went on Forensics that was interesting and there was a new area for me on to see the governance policies tie up to handle forensics.
Anuradha did deliver an excellent session on FOSS for governance with his usual srilankan national kit.
It was interesting to see how general public think about opensource, they think opensource software is not enterprise ready and cannot use to deliver business targets, opensource is just for R&D and for techies to play around, opensource will open the business strategies to public, opensource can hack easily. We (the team from WSO2 Prabath, Sumedha and Myself) we did try to correct their thought by explain them about prctlical usage and about real opensource. What we told them finally was to look at the sucessfull projects that has adopt opensource and deliver business goals.

Friday, December 11, 2009

Sri Lanka back with Fireworks


While most of the srilankans are concentrating about political battle our cricketers are making a battle in india. 
Last wednesday we had the first T20 and it was an amazing match, took my memories back to the srilankan team during and just after our world cup win (1996-2000).
We did hammered all indian bowlers and I saw Manoj Prabakers every time when a bowler takes the bowl in to the hand. 
Yes, Sanga did the change but Sanath and Dilshan made the phase for that. Sanath did hit Ashish Nehra for 21 in an over and did start the fireworks, Sanga did play his captains role by scoring 30+ ball 70+, Chamara Kapugedara gave a brilliant support for his captain (his innings took me back to his school cricket carrier the way he scored 195 against Royall Collage when he was playing for under 15).
When Gambeer and Shewag trying to took away the match from us, Sanath did the magic and turn it on our way by giving only less then 4 for his overs with two wickets. After a long time we had a chance to watch a match with srilankan spirit. 
Selectors are planning to remove Sanath from the opening slot, but I think this is the best opening pair we ever had, who can play the srilankan game.

Next T20 is on this Saturday and I'm sure we will produce the same result.  

Wednesday, December 09, 2009

SaaS for Your Enterprise Solution

SaaS is becoming popular in the market and people use SaaS to fill different kind of service needs, most common usage is to use it to fulfill a particular requirement e.g. CRM as a service, Document management as a Service, Accounts as a Service.
When we talk about solution architecture we can use SaaS more efficiently and effectively and link it with the internal enterprise. Linking with legacy applications using RPC, Services using various communication middleware is not a new thing for the solution architecture, so why not use public services and remote data using a secured channel. Most of the SaaS providers do expose the public data and service operations that can be invoked using web services.
What is the advantage of using SaaS, business groups will talk about cost, time because SaaS do save lot of cost by reducing hardware, system software, system administration and maintenance (people), it reduce time by making the software available as soon as the user pay online and buy the services.
From the architecture point of view we can see many advantages too. SaaS make distributed systems very simple. When it comes to geographically distributed systems it multiplies. Making internal data/services (why I used data and services some of the SasS offerings provide direct access to the content/data rather than provide data/content through a service call e.g. direct access to documents, images) public is not an easy task that have to consider lot of effort on the distributed architecture and the implementation. But when you are using SaaS any system/sub-system or a module of the enterprise system will have access to the data/services with SaaS. Solution can only worry about the business use-cases and forget about the complex distributed deployment and middleware to support it.
Adopting SaaS into your architecture you can keep the centralized shared data in a common place that you have only responsibility to manage your data that the infrastructure will be managed by a third-party vendor based on a SLA you signed with them.
Scalability is a very important fact with the current business needs, you never know when your system hits with a heavy load. Heavy load means lot of transactions that leads to more revenue, so it is critical that the system work smoothly on a such instance because if system crashes you will loose a revenue collection opportunity. Making an architecture to scale in a such situation is hard because your projections might wrong, and you cannot add hardware unnecessary because hardware costs a lot. With using SaaS you find a solution for the scalability because almost every SaaS offering provide scalability and you only have to pay when the system add more resources, based on the number of transactions hit your tenant your SaaS vendor will add resources and scale the system to handle the load.
When architect a system with SaaS two concerns will go in the mind of an architect, data security and private data. Both concerns have addressed in multiple ways and I will talk about handling private data with SaaS in a different blog post in future.
With current business needs and globalization of the business units we don't find local systems every system is distributed and should access from multiple locations, so considering SaaS to use with your application architecture is a worth technical decision.

New Technical Articles on WSO2 ESB

Recently Supun has written some valuable articles about WSO2 ESB in the WSO2 OxygenTank.
First article is about Endpoint Error Handling, that talks about the configuration and monitoring details of error handling of the endpoints defined in the ESB.
Next one is about Integrating WSO2 ESB and Registry that describes how you make WSO2 Governance Registry, your ESB configuration metadata repository. Article describes on how to use a local registry and a remote registry.
Third article is about creating a simple response from WSO2 ESB for a request comes from a client. This is a very usefull feature when implementing use-cases.