Showing posts with label WSO2. Show all posts
Showing posts with label WSO2. Show all posts

Sunday, July 31, 2016

Summer and Life Cycle

The Bahamian conch salad from the Da Fish Fry
Sri Lanka really does not have these periods. The first time "summer" made some sense or difference to me was 2009. I applied and got selected for my first Google Summer of Code as a student with AbiWord. It was so exciting, and unlike now, I was somewhat new to the open source. Not entirely new, since I had already done some localization work (I had localized Squirrelmail to Sri Lankan Tamil, along with a few of my friends). Also I was an intern at WSO2, a Sri Lankan open source company (which also mentors GSoC students these days at a large scale, as a mentoring organization). Following 2009, I was always involved in GSoC, either as a mentor or a student.

But it was 2012 when I really got to know how does a summer feel like, and was able to differentiate it with other seasons. That was when I came to Portugal for my Erasmus Mundus masters program EMDC. Coming from a hot and humid country, Lisboa's summer was mild to me and it felt comforting.

Europe always had its beauties with seasons. I did not like winter in Portugal particularly as it was too wet. Similarly, I was not a fan of Swedish' dark winters either. However, I miss the snow.

Though I did not experienced seasons beyond sunny days and rainy days, I did have the days - weekdays and weekends. During the school days, we still had tuition classes during the weekends. That effectively made us busy almost 7 days a week. So there was no real weekend till I joined the university. However, at the latter years of my bachelors, I had classes even on Saturdays, leaving us with only Sunday as a free day.  When I joined the industry, I really had the weekends off.

Crystal clear water of Nassau
Same was true with my masters too. However, with the increased autonomy I have with my PhD in Portugal, I am actually free to choose my own timing. I tend to work in weekends when I want to. On the other hand, if I decide to go for a movie, I can always go ahead any time instead of waiting for the weekend. When I had paper submission deadlines approaching, I tend to work 7 days a week, and love it!

Atlanta's summer is hot and humid. Just like Sri Lanka. When you come out of office, you will feel like entering a sauna. Also the rainy days! Coming from Portugal, it felt weird to have thunderstorms in summer. Summers are supposed to be dry. ;)

US has holidays arranged in a strategic way to have them on Mondays or Fridays to allow long weekends. During my short stay here, I have experienced 3 long weekends, if I counted it right. Weekends I often use for buying food or doing some minor fun activities - except for the long weekends - when I can go somewhere farther such as the Bahamas.

I am a proud gypsy student since 2012. It has its positives and negatives. Positives - I got to experience new places and new people, and always make me feel young. Negatives - time wasted in bureaucracies and installation costs (such as buying the basics for the new accommodation).

As I walk on the lanes from my lab in the late evening, I always think of random things. I recall many things - to be worth of blogging down - both technical and non-technical. I end up not writing majority of them. Writer's block, if I may say so. That's why I keep a list of future blog posts!

It is interesting to note that in the recent past my "thinking language" has been shifted to English from Tamil. It is because of my limited reading, writing, and communicating in Tamil in foreign lands. However, I still enjoy my Tamil songs and movies from South India! I like musics and music videos. They always bring back memories from the past - the first time I heard the song! I am sure now I have many good memories from Atlanta as well, with more music and more diverse technical experience.

Wednesday, February 24, 2016

The rise and the fall of a Facebook star

1. The Hi5 Era
It was early 2006, if I remember correctly. Hi5 was getting popular. It was a social media where each new member is encouraged to invite 5 of their friends to the platform. My friend asked me why did not I accept his invitation. I told him that I had an email account (Yahoo!), which for now was enough for me. He tried his best to convince me that Hi5 was good for sharing photos and chatting. He still failed. I did not even have a digital camera till early 2007 to share the photos. I told him that I would rather email the friends I care about, instead of joining another random platform.

2. Dawn of the Facebook
Later that year, I would join the engineering faculty, and in mid 2007 I joined the department of computer science and engineering as an undergraduate. New social media platforms were getting popular. Everyone had started talking about Facebook. At some point, a clear majority among the 100 of us in the batch had joined Facebook. I was not among them, despite having received an invite from one of my good friends. My reasoning was still valid - I had a very active Gmail account which I used for sharing photos and sharing emails (including cute pictures of cats and jokes, as well as the emails to project mailing lists and class email groups dedicated entirely for friendship and fun).

3. The Entry
In 2008, a lecturer who was teaching us Software Engineering finally managed to get me into Facebook. He asked us to create a Facebook group for his course, where he would initiate group discussions based on the lecture sessions we had. I was not impressed in the beginning by this idea. However, I eventually started to become active in Facebook by the mid of 2008. It felt great when I was able to connect to the friends from different continents. My school friends were distributed across the globe, and receiving messages and updates from them was so encouraging. Apart from the friends I already knew, I also got to know new friends from Facebook itself through mutual friends, and some online communities. My Facebook account was entirely dedicated for fun and friendship by that time.

4. Intern Diaries
I joined WSO2 as an intern in September 2008. The company encouraged everyone to be active in social media, and motivated us to collaborate and communicate in social media, spreading the word about what we do as a team. By early 2009, I had a Facebook account that also contained technology related posts in addition to that of a regular undergraduate that just had funny posts and photos. I even had friend requests from a few customers of the company. My Facebook friend list had grown above 1500 by that time, spreading across the globe. By that time, I knew that my Facebook account was a reasonably valuable asset to me, and losing it or deactivating it was never an option.

5. Professional Gangster
Around the end of 2009, I had become a professional Facebooker. I was aware of the scams of Facebook. I also knew which were the dodgy links and how viral posts were born. I never clicked or shared anything that had a hidden agenda. I carefully avoided politics. My Facebook was still in its golden era. There were even random people asking me questions through Facebook about some of the technology posts I made. As I completed my second Google Summer of Code in 2010, my Facebook had more content intense in technology with links and often content I wrote by myself. I also joined WSO2 as a software engineer later that year.

6. Social Media Pro (alias shameless promoter)
In the latter half of 2011, I was leading the social media engagement of the company and had shared massive amount of promotional material. Later in 2012, I quit my job to continue my higher studies in Europe. I eventually became a frequent traveller, and shared many of my travel stories and photos online, in Facebook, Twitter, and Blogger. Facebook became even more important to me, as I used it to connect to my friends back in Sri Lanka. It also helped me get news updates. I basically was logged in Facebook always. Never logged out.

7. Maturity
My Facebook started to age, along with me. :P As we grow older, it also reflects in the social media. The number of fun posts started to decline while more promotional content from companies and photos of babies started to appear more frequently. When I went to China in 2014, I made sure to install and configure the relevant proxy and VPN solutions so that I would not miss the updates when I was away, since Facebook was otherwise inaccessible from China.

8. Facebook Wars
By 2015, I knew how "visionaries" or "thought leaders" and "idols" from Sri Lanka and other countries would manipulate their follower base to get their views across. It was easy for them to sensationalize their view points than merely stating the facts. Sometimes it got annoying to see how a large base of followers fall for trivial tricks and scams. It was easy for the visionaries to provoke an unsuspecting victim for their hidden agenda. Politics - I tried my best to avoid - was not always easy to omit. I had to engage in multiple occasions, when it appeared in my feed. I started to give my voice for whatever I felt was right.

9. Getting Intense
There were some failed politicians in Sri Lanka (as well as globally) starting to use social media to spread racism in order to regain the grounds. They did not have a really huge follower base. But they did have support from some "social media stars" and "thought leaders". Racism - I loathe in any of its forms. I tried my best to voice against the online bullies and racists, without sensationalizing the view points. In my observation, the IQ or EQ of average Facebook population was very minimal. Though I had a very intelligent LinkedIn, lately I noticed that this had started to happen to my LinkedIn as well. I unfollowed bulks of people who shared irrelevant content on Facebook and LinkedIn. 

10. LinkedIn as another Facebook
I wanted my LinkedIn account to contain professional and educational material. Though not many of my contacts did that, still some irrelevant posts from the 2nd level connections ("connections of connections" or "friends or friends", though I do not usually call LinkedIn connections as "friends", unlike Facebook). Those who solve simple mathematical equations (even with the claim that only  geniuses can solve them), those who claim how a few thousands likes will help them feel happy, help them quit smoking, or even help them recover from cancer, those fake recruiters who would ask you to like or post "interested" in their post so that they can review your profile, those who posts their random cute photos, those who seek prayers in LinkedIn for themselves or their far relatives, and also those who posts photos dictating LinkedIn ≠ Facebook (quite ironically), all I had to unfollow - those who posted them, or those who interact with these posts by commenting or liking. Even if you comment "Please do not post this", it appears on your followers' feed. So somehow I managed to keep my LinkedIn clean.

11. Unfollow Marathon
However, things were different in Facebook. I did like to get updates - random updates - from Facebook. I liked political posts - but not the way they appear sensationalized. I unfollowed around 500 racists and those who simply posted spam during my almost decade long stay in Facebook. However, racists and Facebook thought leaders managed to spread their view by commenting on others' profiles. Same story with those who posted annoying posts. I realized I was spending more time managing Facebook, which was not effective and worse - counter-productive. The social media is made in a way that it promotes viral content, regardless of its lack of quality.

12. Demise of a Facebook Star
One of my close friends had deactivated his Facebook, citing similar reasons. I decided to finally deactivate my Facebook account. After 5.5 years, I did not fail to notice that the Facebook deactivate and permanent delete options remain the same, with no change in display or user experience, regardless of tens of major reformations of Facebook itself.

13. Final Good bye
I re-assigned the ownership of the Facebook groups I had created to those I trusted as suitable candidates. I also sent my contact details to my Facebook friends, who would lose contact with me otherwise. By mid-December, I deactivated my account, and kept it deactivated for 2 months successfully, without ever feeling the need to go back. I did re-activate it once in a while to send some quick messages, as required. However, I was simply able to break the habit of social media. I rather increased my updates to my blog and twitter. If in the future, a better social media platform appears, I will give it one more try. 

14. The End
This marks the end of my 8 year long Facebook life - the rise and the fall of my Facebook kingdom. :P My friend who initially deactivated his account had it reactivated though. However, looking back, I felt like I had traveled in a circle. I feel like I have come back to the period of 2006, after 10 years. I do not really feel I am missing something by not having an account in the most popular social media platform of the world. It is not to boost that I am saving more time or have become more productive. We always find ways to waste some of our time in the Internet, regardless of the existence of Facebook. Just I find that my time with Facebook has come to an end. I will continue writing in the other platforms, such as this blog and my Twitter account.

Thursday, August 30, 2012

Year 2012 - a year of changes

Opposite to IST, Alameda, Lisbon
Time has gone pretty fast. When I was selected to follow the Erasmus Mundus European Master in Distributed Computing (EMDC) in the first half of this year, going to Lisbon seems to be far away. But sorry for repeating the phrase again - time has gone pretty fast. I was selected to DMKM (Erasmus Mundus Master Course in Data Mining and Knowledge Management) as well, where the first year will be at University of Lyon Lumière Lyon 2 in France and the second at University Polithenica of Bucharest in Romania. Distributed Computing and Data Mining both are my research interests. Considering the advantages of both the courses, finally I decided to follow EMDC. I quickly accepted the offer for EMDC, and started working on that.

Getting the Portugal study visa of course needed a considerable effort. It also made me travel twice to New Delhi. I utilized my first trip to New Delhi in summer as a sight-seeing tour in New Delhi. It was a great experience, including the negotiations with the three-wheeler drivers. The second trip made me float. I was even worried whether my travel documents got wet by the heavy showers, on my way to the Portugal Embassy in Chanakyapuri. Thanks to God, my bag was strong enough not to let the water in.

I was working at WSO2 for the last 2 years, and it was my job since I graduated. Interestingly I was an intern too at WSO2. It was a great learning experience, as my first job. For some unknown reason, the Emirates decided to send me in the business class, though I had bought a ticket for the economic class. That gave me a positive feeling (Feeling lucky.. :D)

Lisbon seems pretty cool, and started to settle down here. Along with these changes, Llovizna too is facing a few changes (may I say, improvements?) I foresee, the completely new set of blog posts dominating the blog, along with my traditional mixture of technical and personal posts. I see a few posts on my experience on studying abroad, and related tours. Hope that will make Llovizna sexier. ;) To match with this, I have enabled the Google ads into my blog, as I feel they give provide some advertisements that are related and useful to the readers. For example, I could see the advertisements of the European scholarship programs in the blog post that mentions about the European Study visa. Hope the overall reader experience is made more positive.

I hope the upcoming days will be more exciting, as the course is starting on the 17th of September. I will keep the readers updated on this. Tenha um bom dia!

Tuesday, July 31, 2012

Experience and Life with WSO2

Time has gone extremely fast, and I still recall the day that I joined WSO2 as an intern. I got to know about WSO2, when Sanjaya Karunasena did the OOP lectures at 2007. He was so passionate about open source. Eventually, I ended up applying for WSO2 for my internship, excited about the open source culture, for the very same reason at that time. If I remember correctly, Deepal and Sumedha interviewed me the 2008 for my internship. Special thanks to them for selecting me as an intern. 

It was a nice experience being mentored by Srinath for the projects with Extreme! Labs. Srinath was mentoring Supun Malinga and myself remotely from the Indiana University. Srinath made sure to get us introduced to his colleagues Thilina, Eran, Chathura, and Suresh from IU. My foundation to the open source culture was strongly built with the internship at WSO2 and my first Google Summer of Code with AbiWord in 2009. With two of our friends Denis and Buddhika, Supun and I discussed our final year project with Srinath, and Dr.Srinath who returned to Sri Lanka did an outstanding job as a mentor for our final year project. My special thanks goes to Srinath for his multiple roles in Sri Lankan higher education. He surely is a gem for WSO2 and the country.

Hasmin was the first to interact with me, even before I joined WSO2 as an intern. I recall an appointment I made with her to learn about WSO2, for a Level 3 assignment. I have learned a lot on marketing strategies from her, and my initial social media engagement efforts were strongly inherited from her. I liked her initiative of "WSO2 Member of the Month", "WSO2 evangelist of the month", "WSO2 overall award for the month" (There were three monthly awards like this in 2008/2009. I am sure that I am not mentioning the exact names though.) Hasmin leads the internal and external communications of the company. I thank Hasmin for helping me realize my other strengths in Social Media Engagement, Blogging, and Technology Evangelization. 

Though we joined WSO2 as Software engineers again in September 2010, I actually was with WSO2 since the October 2008, with an extended training for 2 more months, followed by our final year project. Samisa is not just a technical leader. There is much more that we were able to learn from him, including the soft and people skills. I always have admired the way he interacts with the team. My special thanks goes to Sanjiva for selecting us as Software Engineers of WSO2. I confidently say that I have been with WSO2 since the October 2008. It was a pleasant experience, working, learning, and knowledge sharing with the engineering team.

I have worked with Charitha and the QA team, after our six months of internship, and during the releases. I have learned a lot from him in the QA aspects and release management. Prabath, with whom I unfortunately haven't got a chance to work much with personally, was surely a motivation for me. He is well-known among the young engineers for his presentation, communication, and leadership skills.

I have been working with the cloud team lead by Shankar. I got the chance to work on all the aspects from the technology, design, research and development, product releases, customer support, and user interaction. I worked with Azeez for Load Balancer (LB-1.0.0). It was a great experience shaping it as a young product. I congratulate Sanjeewa and the Load Balancer team who are currently taking the product to higher levels, as it is going to face the major release, as LB-2.0. I love the fact that I was lucky enough to work with the cloud team, in all of its faces. I congratulate the cloud team of WSO2 in developing the cloud middleware platform of the future.

As I work with Stratos and StratosLive, I was managing the StratosLive project code-named as "Mars" project internally. During this, I got a chance to work closely with the devops. I will surely miss Sanjaya and Chamith, the dev-ops. :( I have learned a lot from them, from the cloud infrastructure, managing the production, staging, and dev clouds, patch maintenance, and more. I can say from my experience, that the devops are the backbone of a cloud team. I will miss the cloud room, the hottest spot during the release nights, everyone surrounding Chamith. Sanjaya silently handles an unbelievable amount of concurrent requests from the developers, always with a smile. My sincere thanks goes to the duo. 

As WSO2 was my first job, I wanted to exercise my multidimensional interests and talents in my job. Hence I was also given the opportunity to manage the social media engagement of WSO2, working on the digital marketing strategy, the latter half of 2011, including the LinkedIn, Twitter, Facebook, and other online media. I have made a few good friends, from the WSO2 user community during this. My special thanks goes to the cute little family of Marketing team.

At this moment, I wish the WSO2 team good luck, and we will keep in touch. Life is similar to a flight with multiple transits. My journey with WSO2 was remarkable, and I hope the upcoming days will be equally interesting and challenging, towards my next goal. I will keep Llovizna updated on my journey. Feel free to contact me via kk.pradeeban AT gmail.com.

Monday, May 21, 2012

Developing BPEL Processes using WSO2 Carbon Studio

The below series of screencasts depicts how to create bpel processes using WSO2 Carbon Studio. This shows invoking two services (AdderService and SquareService) that are hosted in two different tenants in StratosLive (inverse.com and sajith.org), from a process of another tenant in StratosLive (stratoslive.demo.com). Hence the process gets the input of 'a' and 'b', uses the AdderService hosted in inverse.com, gets (a+b), and using the SquareService of sajith.org, it gets (a+b)^2.

Make sure to view these screencasts in the higher resolutions to view it clearly.

Sunday, May 20, 2012

All Stuff Cloudyy - WSO2 Stratos

A quick introductory presentation on WSO2's cloud middleware platform - Stratos!

Monday, May 14, 2012

Moving from a 'Platform' to the 'Platform-as-a-Service' ~ What is it all about?

Carbon Middleware Platform for each department.
Cloud Middleware Platform
In a traditional system, we see each department is equipped with its own middleware platform, having multiple servers for each of the departments. With the Cloud Middleware Platforms (CMP), a single product which is installed and managed centrally, can replace the entire set of platforms installed separately, say for each departments. Here each department is considered a "tenant". 

Cloud Enablement
Are all the application platforms are cloud enabled? No, obviously not. The cloud enablement comes with the fruits of multi-tenancy, and the native support to be a cloud platform. An ideal example would be, WSO2 Carbon Platform, where the same platform, cloud enabled, becomes WSO2 Stratos Cloud Middleware Platform. A cloud middleware platform can usually be hosted over the cloud as a Platform as a Service. The publicly hosted Stratos Cloud Middleware Platform is StratosLive (stratoslive.wso2.com), which allows anyone to register them an account (tenant). It should be noted that not all the PaaS are provided as a fully functional cloud middleware platforms. 

Tenant Isolation
Stratos Cloud Middleware Platform
Tenants, while sharing the same resource, will not be aware of the existence of the other tenants. Here, multi-tenancy enables centrally installed/deployed and managed resources, providing an independent middleware platform virtually for each department, registered as a tenant, in the organization's cloud middleware platform. Each tenant can have multiple users.

Centrally managed!
Though it is just a single server that is running, each tenant is properly isolated, such that they will feel that they have a separate instance of the platform. The isolation is achieved at data and logic level, whilst providing the relevant security for the tenants. The security challenges are addressed by the security measures, where the tenants are not allowed to execute the privileged operations such as writing to the file system or opening up a port. A few of the management operations are limited to the administrator of the system - termed as Super tenant in WSO2 Stratos, which becomes the central point to manage all the tenants.


Bob meets Alice - Cloud Middleware Platform
SaaS Development over CMP
A cloud middleware platform, as the application platforms, can be hosted in local data centers, or even on personal computers that have the required amount of disk space and  memory. This can be used to incrementally test and develop the SaaS applications locally, than developing and hosting them directly on the cloud. 

Platform as a Service
A cloud middleware platform, when is hosted on a private, public, or a hybrid cloud infrastructure, becomes a Platform as a Service. Cloud Middleware Platform is also referred to as a cloud enabled application platform (CEAP), by Gartner, indicating that the application platform is cloud-enabled. 

WSO2 StratosLive
WSO2 StratosLive, the open java PaaS, is the publicly hosted cloud deployment of Stratos, from WSO2. Migration of your data and the applications between the PaaS, and the Cloud Middleware Platform hosted on your private data center is generally an easy job. WSO2 provides it from the bottom up - from an enterprise middleware platform named as Carbon, to the cloud middleware platform named as Stratos, and finally to the Platform as a Service - StratosLive and the other public, private, or hybrid clouds with Stratos as the Cloud Middleware Platform.

PaaS and ROI
Cloud Middleware Platform and Paa
Why should a Software as a Service developer/provider go for an PaaS provider, instead of hosting their applications directly on IaaS? The PaaS layer that stays between the applications and the infrastructure should provide value to the enterprise, to answer the above question. Moreover, a PaaS can also be hosted directly on the native hardware as opposed to hosting them on top of IaaS, as the commonly mentioned bottom up cloud architecture of IaaS -> PaaS -> SaaS. This prevents the application developer worrying about the underlying infrastructure or hardware when developing his applications.

PaaS for SMEs
For a start-ups or small and medium enterprises, a suitable PaaS provides faster time-to-market, providing higher return on investment (ROI). When you are hosting an application over the Platform as a Service, the platform should be able to handle the high-availability, fail over, auto-scaling, logging, throttling, and billing features. This eliminates the need for the application developers to code for these common requirements which to be available in the platform level. WSO2 StratosLive, as a complete middleware platform as a service, provides an entire architecture as a service. This made possible since Stratos/StratosLive is extending the WSO2 Carbon SOA enterprise middleware platform, sharing the same code base.

No Code for a platform or infrastructure!
PaaS handles them all!
An open platform as a service is committed to fight against the vendor lock-in, by adhering to the open standards. Open source technologies help a lot in being committed to being open. Being open means, the application developers should not be writing an application solely focusing a platform or the API provided by the cloud infrastructure or platform providers. WSO2 is open by design.


This blog post has been published on WSO2 Library.

Resources:
Concerns of the public cloud and how PaaS helps mitigating them...
Summer School 2011 - Platform-as-a-Service: The WSO2 Way

Wednesday, December 14, 2011

Configuring WSO2 Load Balancer for Auto Scaling

This post assumes that the reader is familiar at configuring the WSO2 Load Balancer without autoscaling, and has configured the system already with the load balancer. Hence this post focuses on setting up the load balancer with autoscaling. If you are a newbie to setting up WSO2 Servers proxied by WSO2 Load Balancer, please read the blog post, How to setup WSO2 Elastic Load Balancer to configure WSO2 Load Balancer without autoscaling.

autoscaler.xml

The autoscaling configurations are defined from CARBON_HOME/repository/deployment/server/synapse-configs/tasks/autoscaler.xml

1) Task Definition
In WSO2 Load Balancer, the autoscaling algorithm to be used is defined as a Task. ServiceRequestsInFlightEC2Autoscaler is the default class that is used for the autoscaler task.
<task xmlns="http://ws.apache.org/ns/synapse"
      class="org.wso2.carbon.mediator.autoscale.ec2autoscale.ServiceRequestsInFlightEC2Autoscaler"
      name="autoscaler">

2) loadbalancer.xml pointed from autoscaler.xml

This property points to the file loadbalancer.xml for further autoscaler configuration.
    <property name="configuration" value="$system:loadbalancer.xml"/>

3) Trigger Interval

The autoscaling task is triggered based on the trigger interval that is defined in the autoscaler.xml. This is given in seconds.
    <trigger interval="5"/>

Autoscale Mediators

autoscaleIn and autoscaleOut mediators are the mediators involved in autoscaling as we discussed above. As with the other synapse mediators, the autoscaling mediators should be defined in the main sequence of the synapse configuration, if you are going to use autoscaling. Load Balancer-1.0.x comes with these mediators defined at the main sequence, which can be found at $CARBON_HOME/repository/deployment/server/synapse-configs/sequences/main.xml. Hence you will need to modify main.xml, only if you are configuring the load balancer without autoscaling.


autoscaleIn mediator is defined as an in mediator. It gets the configurations from loadbalancer.xml, which is the single file that should be configured for autoscaling, once you have already got a system that is set up for load balancing.
        <autoscaleIn configuration="$system:loadbalancer.xml"/>

Similarly autoscaleOut mediator is defined as an out mediator.
        <autoscaleOut/>

 

loadbalancer.xml

loadbalancer.xml contains the service cluster configurations for the respective services to be load balanced and the load balancer itself. Here the service-awareness of the load balancer makes it possible to manage the load across multiple service clusters. The properties given in loadbalancer.xml is used to provide the required configurations and customizations for autoscaling and load balancing. These configurations can also be taken from the system properties as shown below.

1) Properties common for all the instances

1.1) ec2AccessKey

The property 'ec2AccessKey' is used to provide the EC2 Access Key of the instance.
    <property name="ec2AccessKey" value="${AWS_ACCESS_KEY}"/>

1.2) ec2PrivateKey
The certificate is defined by the properties 'ec2PrivateKey'.
    <property name="ec2PrivateKey" value="${AWS_PRIVATE_KEY}"/>

1.3) sshKey
 The ssh key pair is defined by 'sshKey'.
    <property name="sshKey" value="stratos-1.0.0-keypair"/>

1.4) instanceMgtEPR
'instanceMgtEPR' is the end point reference of the web service that is called for the management of the instances.
    <property name="instanceMgtEPR" value="https://ec2.amazonaws.com/"/>

1.5) disableApiTermination
The 'disableApiTermination' property is set to true by default, and is recommended to leave as it is. This prevents terminating the instances via the AWS API calls.
    <property name="disableApiTermination" value="true"/>

1.6) enableMonitoring
The 'enableMonitoring' property can be turned on, if it is preferred to monitor the instances.
    <property name="enableMonitoring" value="false"/> 

2) Configurations for the load balancer service group

These are defined under
<loadBalancer> .. </loadBalancer>

2.1) securityGroups
The service group that the load balancer belongs to is defined by the property 'securityGroups'. The security group will differ for each of the service that is load balanced as well as the load balancers. Autoscaler uses this property to identify the members of the same cluster.
        <property name="securityGroups" value="stratos-appserver-lb"/>

2.2) instanceType
'instanceType' defines the EC2 instance type of the instance - whether they are m1.small, m1.large, or m1.xlarge (extra large).
        <property name="instanceType" value="m1.large"/>

2.3) instances
The property, 'instances' defines the number of the load balancer instances. Multiple load balancers are used to prevent the single point of failure -  by providing a primary and a secondary load balancer.
        <property name="instances" value="1"/>

2.4) elasticIP
Elastic IP address for the load balancer is defined by the property, 'elasticIP'. We will be able to access the service, by accessing the elastic IP of the load balancer. The load balancer picks the value of the elastic IP from the system property ELASTIC_IP.
        <property name="elasticIP" value="${ELASTIC_IP}"/>

In a public cloud, elastic IPs are public (IPV4) internet addresses, which is a scarce resource. Hence it is recommended to use the elastic IPs only to the load balancer instances that to be exposed to the public, and all the services that are communicated private should be associated to private IP addresses for an efficient use of this resource. Amazon EC2 provides 5 IP addresses by default for each customer, which of course can be increased by sending a request to increase elastic IP address limit.

2.5) availabilityZone
This defines in which availability zone the spawned instances should be.
       <property name="availabilityZone" value="us-east-1c"/>

2.6) payload

The file that is defined by 'payload' is uploaded to the spawned instances. This is often a zip archive, that extracts itself into the spawned instances.
        <property name="payload" value="/mnt/payload.zip"/>

payload.zip contains the necessary files such as the public and private keys, certificates, and the launch-params (file with the launch parameters) to download and start a load balancer instance in the spawned instances.

The launch-params includes the details for the newly spawned instances to function as the other instances. More information on this can be found from the EC2 documentations.

Sample Launch Parameters
Given below is a sample launch-params, that is used in StratosLive by the load balancer of the Application Server service.
AWS_ACCESS_KEY_ID=XXXXXXXXXXXX,AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,
AMI_ID=ami-xxxxxxxxx,ELASTIC_IP=xxx.xx.xxx.xxx,
PRODUCT_MODIFICATIONS_PATH_S3=s3://wso2-stratos-conf-1.5.2/appserver/,
COMMON_MODIFICATIONS_PATH_S3=s3://wso2-stratos-conf-1.5.2/stratos/,
PRODUCT_PATH_S3=s3://wso2-stratos-products-1.5.2,PRODUCT_NAME=wso2stratos-as-1.5.2,
SERVER_NAME=appserver.stratoslive.wso2.com,
HTTP_PORT=9763,HTTPS_PORT=9443,STARTUP_DELAY=0;60

We will look more into these launch-params now.

Credentials
The credentials - access key ID and the secret access key are given to access the aws account.

S3 Locations
The service zip and the common modifications or patches are stored in an S3 bucket. The locations are given by a few properties in the launch-params shown above.
  • PRODUCT_MODIFICATIONS_PATH_S3 - Points to the product specific changes, files, or patches are uploaded to a specific location.
  • COMMON_MODIFICATIONS_PATH_S3 - Points to the patches and changes common to all the servers.
  • PRODUCT_PATH_S3 - Points to the location where the relevant Stratos service zips are available.
  • STARTUP_DELAY - Given in seconds. Provides some time to start the service that is downloaded on the newly spawned instance, such that it will join the service cluster and be available as a new service instance.
Apart from these, PRODUCT_NAME, SERVER_NAME, HTTP_PORT, and HTTPS_PORT for the application are also given.

 

3) Configurations for the application groups

These are defined under
<services> .. </services>

These too should be configured as we configured the properties for the load balancers above.

We define the default values of the properties for all the services under
<defaults> .. </defaults>

Some of these properties - such as the payload, host, and domain - will be specific to a particular service group, and should be defined separately for each of the services, under
<service> .. </service>

Properties applicable to all the instances
payload, availabilityZone, securityGroups, and instanceType are a few properties that are not specific to the application instances. We have already discussed about these properties when setting the load balancer properties above.

Properties specific to the application instances
These properties are specific to the application clusters, and are not applicable to the load balacer instances. We will discuss about these properties now.

3.1) minAppInstances
The property 'minAppInstances' shows the minimum of the application instances that should always be running in the system. By default, the minimum of all the application instances are set to 1, where we may go for a higher value for the services that are of high demand all the time, such that we will have multiple instances all the time serving the higher load.
            <property name="minAppInstances" value="1"/>

3.2) maxAppInstances
'maxAppInstances' defines the upper limit of the application instances. The respective service can scale up till it reaches the number of instances defined here.
            <property name="maxAppInstances" value="5"/>

3.3) queueLengthPerNode
The property 'queueLengthPerNode' provides the maximum length of the message queue per node.
            <property name="queueLengthPerNode" value="400"/>

3.4) roundsToAverage
The property 'roundsToAverage' indicates the number of attempts to be made before the scaling the system up or down. When it comes to scaling down, the algorithm makes sure that it doesn't terminate an instance that is just spawned. This is because the spawned instances are billed for an hour. Hence, even if we don't have much load, it makes sense to wait for a considerable amount (say 58 minutes) of time before terminating the instances.
            <property name="roundsToAverage" value="10"/>

3.5) instancesPerScaleUp
This defines how many instances should be scaled up for each time. By default, this is set to '1', such that a single instance is spawned whenever the system scales. However, this too can be changed such that multiple instances will be spawned each time the system scales up. However it may not be cost-effective to set this to a higher value.
            <property name="instancesPerScaleUp" value="1"/>

3.6) messageExpiryTime
messageExpiryTime defines how long the message can stay without getting expired.
            <property name="messageExpiryTime" value="60000"/>

Properties specific to a particular service group
Properties such as hosts and domain are unique to a particular service group, among all the service groups that are load balanced by the given load balancer. We should note that we can use a single load balancer set up with multiple service groups, such as Application Server, Enterprise Service Bus, Business Process Server, etc.

Here we also define the properties such as payload and availabilityZone, if they differ from the default values provided under
<defaults> .. </defaults>

Hence these properties should be defined under
<service>.. </service>
for each of the services.

3.7) hosts
'hosts' defines the hosts of the service that to be load balanced. These will be used as the access point or url to access the respective service.
Multiple hosts can be defined under
<hosts> .. </hosts>
Given below is a sample hosts configurations for the application server service
            <hosts>
                <host>appserver.cloud-test.wso2.com</host>
                <host>as.cloud-test.wso2.com</host>
            </hosts>

3.8) domain
Like the EC2 autoscaler uses the security groups to identify the service groups, 'domain' is used by the load balancer (ServiceDynamicLoadBalanceEndpoint) to correctly identify the clusters of the load balanced services.
            <domain>wso2.manager.domain</domain>
Once you have configured the load balancer as above, with the product/service instances, you will have the system that dynamically scales.

Auto Scaling with WSO2 Load Balancer

How Auto Scaling works with WSO2 Load Balancer

The autoscaling component comprises of the synapse mediators AutoscaleInMediator and AutoscaleOutMediator and a Synapse Task ServiceRequestsInFlightEC2Autoscaler that functions as the load analyzer task. A system can scale up based on several factors, and hence autoscaling algorithms can easily be written considering the nature of the system. For example, Amazon's Auto Scaler API provides options to scale the system with the system properties such as Load (the timed average of the system load), CPUUtilization (utilization of the cpu at the given instance), or Latency (delay or latency in serving the service requests).

Autoscaler Components

  • AutoscaleIn mediator - Creates a unique token and puts that into a list for each message that is received.
  • AutoscaleOut mediator - Removes the relevant stored token from the list, for each of the response message that is sent.
  • Load Analyzer Task - ServiceRequestsInFlightEC2Autoscaler is the load analyzer task used for the service level autoscaling as the default. It periodically checks the length of the list of messages based on the configuration parameters. Here the messages that are in flight for each of the back end service is tracked by the AutoscaleIn and AutoscaleOut mediators, as we are using the messages in flight algorithm for autoscaling.


ServiceRequestsInFlightEC2Autoscaler implements the execute() of the Synapse Task interface. Here it calls sanityCheck() that does the sanity check and autoscale() that handles the autoscaling.

Sanity Check

sanityCheck() checks the sanity of the load balancers and the services that are load balanced, whether the running application nodes and the load balancer instances meet the minimum number specified in the configurations, and the load balancers are assigned elastic IPs.

nonPrimaryLBSanityCheck() runs once on the primary load balancers and runs time to time on the secondary/non-primary load balancers as the task is executed periodically. nonPrimaryLBSanityCheck() assigns the elastic IP to the instance, if that is not assigned already. Secondary load balancers checks that a primary load balancer is running periodically. This avoids the load balancer being a single point of failure in a load balanced services architecture.

computeRunningAndPendingInstances() computes the number of instances that are running and pending. ServiceRequestsInFlightEC2Autoscaler task computes the running and pending instances for the entire system using a single EC2 API call. This reduces the number of EC2 API calls, as AWS throttles the number of requests you can make in a given time. This method will be used to find whether the running instances meet the minimum number of instances specified for the application nodes and the load balancer instances through the configuration as given in loadbalancer.xml. Instances are launched, if the specified minimum number of instances is not found.

Autoscale

autoscale() handles the autoscaling of the entire system by analyzing the load of each of the domain. This contains the algorithm - RequestsInFlight based autoscaling. If the current average of requests is higher than that can be handled by the current nodes, the system will scale up. If the current average is less than that can be handled by the (current nodes - 1), the system will scale down.

Autoscaling component spawns new instances, and once the relevant services successfully start running in the spawned instances, they will join the respective service cluster. Load Balancer starts forwarding the service calls or the requests to the newly spawned instances, once they joined the service clusters. Similarly, when the load goes down, the autoscaling component terminates the under-utilized service instances, after serving the requests that are already routed to those instances.

StratosLive - A case study for WSO2 Load Balancer

In a cloud environment such as WSO2 StratosLive, auto-scaling becomes a crucial functionality. The system is expected to scale up and down with the dynamically changing load. Auto-scaling capabilities are sometimes provided by the Infrastructure as a Service provider themselves, such as the Autoscaling from Amazon. However, autoscaling is not necessarily a requirement that to be fulfilled by an IaaS. Say, you are providing Platform as a Service (PaaS) that is hosted over the pure native hardware, instead of an IaaS. In that case, your PaaS should be able to provide the required autoscaling and load balancing capabilities to the applications that are hosted on top of your platform. WSO2 Load Balancer is such a software load balancer, that handles the load balancing, fail over, and autoscaling functionalities.

WSO2 Load Balancer is used in production as a dynamic load balancer and autoscaler, as a complete software load balancer product. It is a stripped down version of WSO2 Enterprise Service Bus, containing only the components that are required for load balancing. WSO2 StratosLive can be considered a user scenario with WSO2 Load Balancer in production.


Multiple service groups are proxied by WSO2 Load Balancers. Some of the services have more than one instances to start with, to withstand the higher load. The system automatically scales according to the load that goes high and low. WSO2 Load Balancer is configured such that the permanent or the initial nodes are not terminated when the load goes high. The nodes that are spawned by the load balancer to handle the higher load will be terminated, when the load goes low. Hence, it becomes possible to have different services to run on a single instance, for the instances that are 'permanent', while the spawned instances will have a single carbon server instance.

Tuesday, November 22, 2011

Auto Scaling with WSO2 Load Balancer


Load Balancer is a crucial component in scalable architectures. WSO2 Load Balancer not only balances the load across the application instances, but also scales the system automatically to cater the dynamically changing load. WSO2 Load Balancer is a WSO2 Carbon based product. In this post, we will look how autoscaling works with the Load Balancer.

WSO2 Load Balancer ensures high availability and scalability in the enterprise systems. WSO2 Load Balancer is used in cloud environments to balance the load across the server instances. An ideal use case of the Load Balancer is WSO2 StratosLive, where the service instances are fronted with the load balancers and the system scales automatically as the service gets more web service calls. Having the Apache Tribes Group management framework, Apache Axis2 Clustering module, Apache Synapse mediation framework, and autoscaling component as the major building blocks, WSO2 Load Balancer becomes a complete software load balancer that functions as an autoscaler and a dynamic load balancer.

Architecture

WSO2 Load Balancer can be configured to function as a load balancer with autoscaling on the supported infrastructure. Currently the autoscaler supports EC2 API. Thus the Load Balancer can be configured as a dynamic load balancer with autoscaling, on Amazon EC2 and the other infrastructures compatible with the EC2 API. The autoscaling component uses ec2-client, a Carbon component that functions as a client for the EC2 API and carries out the infrastructure level functionalities. Spawning/starting a new instance, terminating a running instance, managing the service groups, and mapping the elastic IPs are a few of the infrastructure related functionalities that are handled by the autoscaling component.


The autoscaling component comprises of the synapse mediators AutoscaleInMediator and AutoscaleOutMediator and a Synapse Task ServiceRequestsInFlightEC2Autoscaler that functions as the load analyzer task. A system can scale up based on several factors, and hence autoscaling algorithms can easily be written considering the nature of the system. For example, Amazon's Auto Scaler API provides options to scale the system with the system properties such as Load (the timed average of the system load), CPUUtilization (utilization of the cpu at the given instance), or Latency (delay or latency in serving the service requests).

NEXT >>
Now you know the basics of the WSO2 Load Balancer. You might now want to learn,
1) How Auto Scaling works with WSO2 Load Balancer?

Resources
Blog posts
WSO2 StratosLive - An Enterprise Ready Java PaaS
Summer School 2011 - Platform-as-a-Service: The WSO2 Way

Friday, October 7, 2011

WSO2 flag flies high at NBQSA-2011

WSO2 team members with the awards
13th National Best Quality ICT Awards, commonly known as NBQSA 2011 Awards ceremony was held at Hotel Galladari Ballroom, today 7th of October 2011. WSO2 had submitted its products WSO2 Identity Server, WSO2 Governance Registry, WSO2 Application Server, and WSO2 Carbon for the awards. As the award ceremony began, everyone was eagerly awaiting the final results under the each category, among the nominees, who have been chosen among several rounds. 

WSO2 Identity Server won the Gold Winner under the Research & Development category. Then was announced the Application & Infrastructure tools category. WSO2  Carbon Platform won a merit award, WSO2 Governance Registry won the silver, while WSO2 Application Server secured the Gold.

The award winners with their awards
Remaining was the mostly awaited overall winners. We were quite confident that the overall Gold will go to either WSO2 Identity Server or WSO2 Application Server, as they had already secured their Gold under their respective categories. The result was announced! And the overall Gold goes to WSO2 Application Server and the bronze goes to WSO2 Governance Registry!

With this results, WSO2 Application Server, WSO2 Identity Server, and WSO2 Governance Registry are nominated for The Asia Pacific ICT Awards (APICTA), which is scheduled to be held sooner in Thailand. WSO2 flag was flying high this night, with 6 awards received for the products of WSO2.

WSO2 showed its colours in the NBQSA-2011. WSO2 showed a similar victory on NBQSA-2010 as well, with WSO2 Enterprise Service Bus securing the Gold under Application & Infrastructure tools category, while WSO2 Data Services Server securing a Bronze under the same category. WSO2 Enterprise Service Bus was the overall gold winner last year.

Wednesday, September 14, 2011

WSO2Con 2011

‎~ Last year Sep̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̸̨̨̨̨̨̨̨̨17th, we were at Water's edge, Battaramulla marking the 5th year of WSO2. Now after almost 1 year, we are at the same place for WSO2Con 2011 - Sri Lanka. As an interesting co-incident, today I (along with 20+ of my friends) marked my first year at WSO2 as a Software Engineer.
WSO2Con 2011 started in style today (Sep 13th), with the flavor and cultural touch of Sri Lanka. [13th, 14th, and 15th of Sep - WSO2Con Plus 12th and 16th Pre- and Post- Conference tutorials.]

The session was also live webcast through OxygenTank. The event was also actively tweeted by the audience and the event's official twitter page. There are a series of blog posts around the talks by the presenters and the audience. The presentation slides have already been shared by the speakers.

Cultural events and entertainment followed the technical sessions. WSO2Con proves that it is not a tech-only/geeky session. Rather it is a technology and networking event for the architects, intellectuals, technologists, researchers, entrepreneurs, and evangelists.

I summarize some of my favorite discussions from the WSO2Con 2011 below.

A Dynamic Telecommunications SOA platform - A WSO2 and 2° Co-creation

"A Dynamic Telecommunications SOA platform - A WSO2 and 2degrees Mobile Ltd Co-creation" was presented by Neeraj Satija, Software Development Manager, Two Degrees Mobile Limited, New Zealand, at WSO2Con 2011. It was one of the most interesting case studies from the users of WSO2 products, IMO. 2Degrees mobile has done quite an intensive research and has implemented lots of novel mobile services.

2degrees Mobile has 25% of the market of New Zealand. Neeraj started his session by presenting a brief history of wireless Telco Landscape in New Zealand and the 2degrees - WSO2 Alliance. Neeraj explained the rigorous evaluation and supplier selection approach of 2°. and how and why WSO2 was chosen among the other vendors including IBM, Oracle, and Mule, using a Capability Matrix.

The decision was to adopt SOA and light, flexible, scalable, technology stack - Hence the solution was Web Services and ESB. "Small company, open source, relatively newer, and from Sri Lanka - still had what is needed," Neeraj says ,"For us, WSO2 was the best among the all. Satisfied with WSO2, my trust and faith in WSO2 is justified. WSO2 is proved to be Scalable, light weight, and reliable."


Building a MobilePOS Solution with WSO2 Carbon and Apple iPod Touch

"Building a Mobile POS Solution with WSO2 Carbon and Apple iPod Touch" was presented by Thilanka Kiriporuwa, Head of Human Resources and Operations, Odel in the WSO2Con 2011, day-2. Kasun Indrasiri, Associate Technical Lead,  WSO2 joined Thilanka in this session. This session speaks something about ODEL which is one of the best shopping destinations in Sri Lanka and online. Hence it naturally grabbed most of our interests (as Sri Lankans).

In this session Thilanka explained how the MobilePOS application will be used in ODEL outlets, specifically the one in Alexandra Place, Colombo-07. WSO2 Mobile Application runs on Apple iPod touch and helps credit card swiping. The next time we go to ODEL, we will see this in action, providing improved user experience, eliminating those long queues during the busy Sundays.

On the other hand, Kasun was explaining the architecture of the Mobile POS solution, the technology behind it, and how WSO2 helped to achieve that. ODEL MobilePOS is exposed to the backend using JSON. The MobilePOS application was developed using Objective C. It talks to barcode scanner and credit card readers using APIs by LineaPro. Apple iPod is only the front end providing a JSON interface, where teh JSON is transformed into SOAP using WSO2 ESB. There is much more happening with the mobile gateway with WSO2 products at ODEL. Bar code scanning and credit card reading was supported by the iPod application 22 million sales have been done over the WSO2 Mobile Services Gateway solution at ODEL, so far.

"Even if you want to change the app to run on Android, nothing to change in code level for ODEL MobilePOS app, thanks to JSON," said Kasun, when answering one of the questions from the audience regarding why Apple iPhone was chosen over other mobile platforms such as Android. He also explained how the reporting component from WSO2 is used to generate various reports at ODEL. A white paper on this ODEL case study can be downloaded from the ODEL Case Study page in wso2.com.


Using WSO2 as a Mobile Services Platform

"Using WSO2 as a Mobile Services Platform" was a session presented by Simon Bilton, Head of Professional Services, Gödel Technologies Europe at WSO2Con 2011, which was yet another interesting user story of WSO2. In this session, Simon discussed how 'Transport for London' uses WSO2 ESB as the main platform for mobile services.

"Schematic of ESB solution with WSO2 ESB and WSO2 BAM as the core components..", Simon explained the architecture. Simon also showed a mini-version of the deployment diagram with WSO2 Components drawn on a paper, to the audience. He mentioned, "It is really huge to include all of them." Simon also foresees that WSO2 BAM2 will eliminate the remaining issues that the current system has.

"Open Source to the Rescue!", Simon points to the pure open source nature nature of WSO2, and how it was extended to meet the specific needs of their enterprise. "Why think outside the box, if the box can think itself?" asked Simon.

Quality - The key to successful SOA

Charitha Kankanamge, Senior Technical Lead and Manager, WSO2 did a session on "Quality - The key to successful SOA" at WSO2Con 2011. The session mainly discussed about the differences between the traditional QA and QA for SOA, and the challenges faced. The talk was followed by an interactive Q/A, where the audience shared their opinions regarding the talk, and discussed them with Charitha. Charitha didn't fail to point out that unlike the traditional testing, SOA testing requires serious research itself. Azeez pointed out that this enables the QA engineers in SOA to switch to development easily, and vice versa.

"When defining a testing methodology for your SOA, you should have a good understanding of services, mediation, and composition." pointed out Charitha. He mentioned that the complexity of SOA should not let the quality to be compromised. "Your QA team and Dev team should work together for your SOA testing. Everyone is responsible for the quality". You need a proper unit tests, integration tests, and end-to-end tests, where some of them are automated, and SOA testing. Charitha also pointed out that there is no "automated manual tests". SOA testing over the cloud produces additional set of complexity.

"Discussing Testing is atleast a 10 hours task," Charitha announced after running out of time badly at his session, which everyone was actively involved.


Engineering to take over the world 
"Engineering to take over the world" by Samisa Abeysinghe, Vice President, Engineering, WSO2 was surely the best among the WSO2Con sessions, I would say. Samisa started his talk with a caution "This is just from my head and only from my head, and the definitions are not from Wikipedia or elsewhere." The talk was mostly the words of wisdom from his experience at WSO2.

Engineers are known for their analytical skills too, apart from the technical skills. I recall, during my level2, someone from the industry (sorry, I can't recall his name exactly) recommended engineers to follow an M.A in Economics degree. He suggested that only engineers can be good economists. 

We learn a lot of pure science in school and university. The applications of the science starts when we are at work. It is not just for engineering, I feel. It can be even marketing, sales, . You can learn 'Marketing Strategy' in school. But the 'Applied Marketing Strategy' starts when you apply the concepts and the theory in practice to the industry.

Samisa explained the support model of WSO2. As a pure open source company, WSO2 gains the revenue from the paid customers, who pay for the support. ""Feel their pain - Go to them; Listen to them; See what they do; Deal with what they deal," Samisa explained the secret of delivering the best support." "We do not just do what users want. Rather we invent solutions for their real problems." Users are not always correct. This was also mentioned in the key note of Sanjiva.

"One product - One build command - One team." We have the Carbon platform, and many products built on top of that. Also the products as services over the cloud, where Stratos becomes the cloud middleware platform. "One" is important. "It is one team with many sub teams. But the whole is greater than the sum" Samisa explained the synergy of the WSO2 team. We have the Team - "WSO2 Team", and we just have sub teams, and no departments. "At WSO2 we don't refer to the people as #resources. People are people."

"Our way is Apache way - Open - Passion & Commitment, Community, Respect, and Meritocracy." "In engineering, everyone can design, code, and test" Our inspiration comes from 'the team' itself. Existing and potential clients, academia, and competitors too inspire us. Samisa's talk was really interesting, with loads of photos taken from WSO2 and the team, giving a snapshot of the life of WSO2ers' life to the audience.
 

Wednesday, September 7, 2011

OGSA-DAI over WSO2 Application Server

Web Applications list - WSO2 Application Server
Open Grid Service Architecture - Data Access & Integration (OGSA-DAI) is an innovative open source data access and management solution for the real use cases, maintained by EPCC, The University of Edinburgh. It is developed with multiple presentation layers, where you can extend it to use your preferred presentation layer, let it be SOAP or ReST such as the presentation layers built using Axis, Axis2, CXF, Jersey (An open source, production quality, JAX-RS (JSR 311) Reference Implementation for building RESTful Web services), or GT.





OGSA-DAI Services



I recently tried deploying a current version of OGSA-DAI with CXF presentation layer over WSO2 Application Server. It went pretty well. OGSA-DAI is often deployed on Apache Tomcat. Some of the screenshots showing OGSA-DAI/CXF deployed on WSO2 Application Server are shown here.





Web Application Dashboard (/dai)