Thursday, December 18, 2008

[ Cloud Computing ] Re: Designing "Cloud-aware" Apps

The Load Balancer provided with Amazon's EC2 is an open source based simple load balancer without any of the Advanced Traffic Shaping features available in commercial hardware based appliances from F5, Citrix, CISCO and others. There is a software based load balancer from Zeus Technoliges called ZXTM that is software based, running on Linux, Windows, VMWare etc. At this time, ZXTM does not run on the Amazon EC2 platform, but if you need one give them a call http://www.zeus.com.

In ideal circumstances, I would like to see applications build with load balancing and advanced networking features, so if the need arises, the deployment should be farily easy and seemless.

On Thu, Dec 18, 2008 at 10:45 AM, Ricky Ho <rickyphyllis@yahoo.com> wrote:

Love to see the active participations in this group.

I want to see if someone can share their best practices in developing
cloud-aware applications or migrating existing apps to the cloud.  What
are the architectural considerations that is specific to the cloud ?
Which part of your existing application needs to be changed in order to run in
the cloud ?  What are the outstanding issues ? ...

I have encountered some of these issues in the context of Amazon's web
services.  I'll list in below and let me know if you encountered the
similar issues and how do you address them ...

1)  Network Configuration Changes
Lets say before the change, your AppServer talk directly to the database within
your intranet.  Now after you move the
AppServer to the cloud, how does it talk back to your database ?  What kind of network configuration changes do
you need to make ?  Firewall, VPN … etc.  What are the set of security considerations
need to go through ?
2)  Endpoint discovery
Most distributed applications are written to lookup its peers endpoint from a
configuration file which contains the node name and then make a DNS lookup for
the IP address.  However, both the
machine name and IP address of an EC2 instance are volatile in the cloud.  How does the peers discovered each other if
their name/IP address will change after a restart ?
3)  Two-addresses scenario
There is a "public" and "private" address attached to an EC2 instance, which
one should I be using to communicate with my peers ?  The discovery mechanism above need to be
aware of the location of the asker to give appropriate answers
4)  Load balancer setup
Since Amazon has no specific support in load balancing, do you use your
in-house load balancer or run a specific EC2 instance of software-implemented
load balancer ?  In both cases, how do
you notify the load balancer of the new members after you spawn more EC2
instances to deal with increased load ?
5)  VM Placement
Where should an EC2 instance being started ?  within your data center (private cloud), or which availability zone in
case of public cloud ?  What are the cost
considerations as the charge of communications across different types of
boundaries will be different ?  And what
are the fault resiliency considerations ?
6)  No Multicast
Amazon doesn't route IP multicast traffic so applications using the multicast
socket won't work.  How do you work
around this problem ?
7)  Developer Account management
Do you use one aws account for your company ? or each app has its own aws
account ?
8)  Data encryption
What kind of data that you need to encrypt when store inside the cloud ?  Is the cloud secure enough to pass PCI
compliance ?
9)  Keystore Distribution
Crypto algorithms typically requires your keystore file.  How do you securely distribute your keystore
to the running EC2 instance ?
10)  Eventual Consistency Model
Do you change your application to store data in S3 and SimpleDB ?  Where is the line drawn between a traditional
ACID consistency model and the much relaxed Eventual consistency model.  Do you need to put more integrity checking
logic in your application to compensate the lost of guarantee at the DB level ?
I'd love to hear about your experience in dealing with above
issues and let me know if you have encountered other issues that I haven't
covered.Rgds, Ricky
http://horicky.blogspot.com









--
Thanks & Regards
Raja Srinivasan

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Cloud Computing" group.
To post to this group, send email to cloud-computing@googlegroups.com
To unsubscribe from this group, send email to
cloud-computing-unsubscribe@googlegroups.com
To post job listing, send email to jobs@cloudjobs.net (position title, employer and location in subject, description in message body) or visit http://www.cloudjobs.net
To submit your resume for cloud computing job bank, send it to resume@cloudjobs.net.
For more options, visit this group at
http://groups.google.ca/group/cloud-computing?hl=en?hl=en
Posting guidelines:
http://groups.google.ca/group/cloud-computing/web/frequently-asked-qu...
This group posts are licensed under a Creative Commons Attribution-Share Alike 3.0 United States License http://creativecommons.org/licenses/by-sa/3.0/us/
Group Members Meet up Calendar - http://groups.google.ca/group/cloud-computing/web/meet-up-calendar
-~----------~----~----~----~------~----~------~--~---

No comments: