Monday, March 30, 2009

Brand Bangladesh in IT - Home of Agile IT Outsourcing

It's been a while since we last posted our blog. So, you might be wondering what's going on at Code71. Are we still alive? We don't blame you, specially the way the world economy has been going. Things are pretty good at Code71. We have been heads down working on our product ScrumPad as well as client projects. We also have had some changes in our team- couple people left, but also couple people (Arif and Shaer) joined us too.

Now what is this Brand Bangladesh and Agile IT all about? We attended SoftExpo 2009 in January this year. This was our first time. We had a booth where we showcased our ScrumPad product to the local companies. We also organized a seminar on Agile/Scrum project management. The turn out at the seminar was encouraging. At the seminar, we unveiled our vision of what Bangladesh should stand for when it comes to IT outsouricing in the minds of clients. In other words, what should the Brand Bangladesh represent to the buyers of the IT services? The reason we brought it up because we are always having to answer questions like why Bangladesh when we talk with prospective clients. The struggle that we have is whether we should try to "stand out" from India or "blend in?" We could very easily blend in since we are looked at as one of the Indian companies because of our location proximity and cultural likeness to India. The danger of that is becoming "just another Indian company," and as a result forgettable. We will never be able to create a sustainable IT outsorucing industry, if we try to blend in. We must stand out. Indian companies built their brand by building expertise in CMMI among other things, we must build our brand by building expertise in Agile service delivery. We know there are other Bangladeshi companies that are practicing Agile methodologies. We need to collaborate and help each other to improve our adoption of Agile practices as well as spread the adoption among other companies.

A couple of things that we plan to initiate in the coming months. We are organizing an official "Certified Scrum Master" (CSM) training class for the first time ever in Bangladesh to be held in June (15th/16th). The class will be taught by Bas Vodde and Syed Rayhan. If you want to signup for the class, please contact us at training@code71.com.

We are also in the process of starting a local Agile/Scrum user group. The user group will provide the platform for us to share and learn how to effectively adopt and apply Agile practices in delivering IT services. The missions of the user group will be:

  1. Promote and help with adoption of Agile/Scrum through knowledge sharing
  2. Improve Bangladeshi companies' project delivery capability
  3. Increase Bangladesh's visibility in the global IT outsourcing industry
If you are working at any Bangladeshi company and using Agile/Scrum and interested to join us in our quest to promote Bangladesh as the "Home of Agile IT Outsourcing" through the Bangladesh Agile User Group, please contact us to seminar@code71.com.

There is a similar effort going on at a cross industry level to define and promote Brand Bangladesh called "Bangladesh Brand Forum." Let's make an concerted effort to establish Bangladesh as the,
"Home of Agile IT Outsourcing"

Thursday, March 12, 2009

Best Practices for Amazon Web Services (Amazon Cloud)

We run our ScrumPad (A Web-based project management tool) on Amazon cloud (AWS). We have been using Amazon cloud for last year and a half. We did not have any issue with it until recently, when we found out that we had lost shell connection to our production server. Although the application was working fine, we went into a panic mode realizing that we won't be able to do anything, should we encounter any problem. Once we calmed down from our initial panic attack, we quickly searched on the net to see if anyone experienced the same issue and how they recovered from it. We did not get any hit on it. There is always first time for everything. We thought to ourselves that the solution is easy with AWS. We would just bring up another EC2 instance and point to the new instance. Right? Not so fast. We found out that we were not using elastic IP. That means we need to make DNS change, which takes up to 24 hours to propagate and may result into some data loss and/or service downtime.

This incident helped us to think through how we should be using AWS and here is what we have come up with:

1. Always use elastic IP (behaves like a static ip) to point to your EC2 instance. You can then quickly swap instances without needing to make any DNS changes.

2. Always use EBS (elastic block storage) instead of the storage that comes with an EC2 instance to store your Database data . You can then quickly reattach your data store to a new instance as well as you will not loose your data in the event of EC2 instance failure and have your data automatically replicated.

3. Spread your EC2 instances to different availability zones and regions instead of putting them all in the same availability zone (a physical data center). You can then protect your application from single data center failure.

4. Backup (incremental snap shots) your database from EBS to S3 (Simple Storage Service), which is automatically replicated across multiple availability zones.

5. Create a custom AMI (Amazon Machine Image) for your application from a pre-configured public AMI. You can then bring up a new instance quickly (in less than 15 mins) on-demand and even completely automate server provisioning.

6. Rollout your new release to a new instance(s) when you need to change your AMI (i.e., when you upgrading your DB, OS, Application Server, etc.) and then reattach your elastic ip and EBS to this new instance. You can then quickly rollback to the old instance should you encounter any problem with the new release.
Figure: How to transparently switch to a new instance

7. If budget permits, use cloud management tool like RightScale.

With a few practices in place, you can have your own virtual data center (on Amazon cloud) that was only available to large corporations.