RSS
 

Archive for the ‘Amazon EC2’ Category

Microsoft’s New Cloud Strategy: Let’s Support Java

02 Nov

OK, so there was no DivConq in April 2010, but if there was, we would have posted an article about VMForce, the Java-based strategic alliance between Salesforce.com and VMware.   This move allowed developers to host Spring- and Tomcat-based Java applications on top of (Sales)Force.com services.

There’s also Amazon’s Java option, which is essentially pull up a Linux image and run your Java apps on it – now sometimes for free.

With so much of the cloud rushing to embrace Java, Microsoft took the unusual step of promising an open Java platform on its Azure cloud in 2011 at its own PDC (as reported by mul ti ple sources).

According to eWeek’s Darryl Taft, Microsoft promises that, “this process will involve improving Java performance, Eclipse tooling and client libraries for Windows Azure. Customers can choose the Java environment of their choice and run it on Windows Azure. Improved Java Enablement will be available to customers in 2011.”

Amitabh Srivastava, senior vice president of Microsoft’s Server and Cloud Division was similarly quoted. “The further we got into this journey into the cloud, we saw that more and more people were writing cloud applications in Java.  There are three things we need to do. One is tooling; we’re going to make the whole Eclipse integration with Azure be first class. Second is we’re going to expose the APIs in Windows Azure in Java. And third we’re investing in optimizing the performance of Java applications on Windows Azure.”

Java in “the .NET cloud”?  Of course, Java’s been supported in Azure for a long time, but it’s certainty not been accorded first class status.  TheRegister’s Gavin Clarke wonders if a race to the bottom in price, as well as developer accessibility, was the real driver behind this unusual move.

What’s also interesting to long time developers was that “Visual Studio” wasn’t mention in the same breath as”Eclipse”, leaving one to wonder if the “Eclipse tooling” represents a new frontier in Microsoft’s vaunted “embrace and extend” strategy.

Share
 
Comments Off

Posted in Amazon EC2, Azure, Cloud, Elastic Architecture

 

Google leader says cloud deployment is not the complete answer

21 Aug

At first I was tempted to not post the analysis performed by Google’s Vijay Gill which concludes that an on-premise deployment may be cheaper than an Amazon cloud deployment if usage is high and constant.

It’s not because I don’t agree, but because the statement seems quite obvious to anyone coming from with any operational background.

In general, if demand is constant and predictable, it makes sense to apply fixed resources such as in-house servers or full time employees against the problem.  If demand is variable or unpredictable, it makes sense to invest more in variable resources such as use-as-you-go cloud resources and seasonal employees.

But ultimately I decided to post Gill’s analysis because it allows me to remind people that most demand models have both a fixed and variable component.

Furthermore, if fixed on-premises and variable cloud deployment models are the resources of the future, doesn’t it make sense to design hybrid applications today that span across both types of resources: your in-house datacenters and the cloud?

Elastic architecture provides you the scalability you need to span; cloud escrow provides you the ability to choose your deployment model.  Stay tuned to DivConq as we continue to explore these concepts and the technologies behind them.

Share
 
Comments Off

Posted in Amazon EC2, Cloud

 

Are Amazon’s various “elastic” services elements of an elastic architecture?

17 Aug

If you’ve looked at Amazon’s published web services lately, you’ve noticed that there are a number of “elastic” services available from their cloud.  These include Elastic Block Store (EBS), Elastic Computer Cloud (EC2), Elastic MapReduce and Elastic Load Balancing.

Amazon’s definition of “elastic” centers on massive (through thousands of instances) horizontal scaling of “as many or as few compute instances running (your application) as you want.”  Startup of additional elastic instances is a manual process (which can be largely automated through APIs), and startup time can range from minutes (e.g., for EC2 and MapReduce instances) to longer periods (e.g., EBS and Load Balancing).

Unfortunately, Amazon has not been entirely consistent with their “elastic” tag.  Although all four of those services fit this definition there are several other elastic services worth mentioning in the context of elastic architecture, such as SimpleDB and Simple Queue Service (SQS).   That said, there are elastic choices at most architectural tiers of Amazon’s portfolio, from raw block access (EBS), to logical storage (S3) and database storage (SimpleDB and RDS), at the messaging layer (SQS and SNS) and at the start of the application layer (EC2).

So…if Amazon’s got a comprehensive elastic stack, what’s not to like?  Two things*:

1) The threat of vendor lock-in. If you want to move your SimpleDB-based application to Rackspace someday, how are you going to do that?  If Amazon wants to raise usage rates 50% year-over-year down the road what are you going to do about it?

2) The threat of cloud reversal.  If you get a new CIO, new regulations, acquire/divest major IT resources or just need to fill up some idle racks, how can you pull some or all of your application down from the cloud and back into on premise datacenters?

What’s the answer to these threats?  First, understand the concept of “cloud escrow“.  Second, learn how to build around a cloud-portable elastic architecture and how that helps you negotiate with cloud vendors.  Third, keep reading DivConq.com as we continue to explore these issues!

* = OK, in the “not to like” department, there’s also manual start-up of elastic instances and a weak application/presentation layer – but there are ways around those – we’ll cover these on DivConq in a future article.

Share
 

Why Cassandra

09 Jul

In my previous two posts – Simple, Secure and Speedy part one and part two – I pointed out that one of the most limiting factors in scaling web applications is the database. So while we could keep it simple and reasonably secure using commonly used components (PHP, MySQL, lighttpd, Nginx), the scalability story is where the issues begin. In part two I pointed out that both the application servers and the reverse proxy servers could scale fairly well. But what about the database?

Architecturally there are three topics worth considering when looking to scale a database. First is performance, second is local availability, and third is global availability. Clustering a relational database, such as MySQL, does provide performance and local availability – but it does not provide global availability. In other words, it does not span data centers and geography.

There are solutions for spanning data centers with relational databases – SQL Server has some replication features to help, as do a few other projects. From a cloud perspective Amazon Relational Database Service is an interesting solution to the problem.

While I’m glad there are possible solutions out there, my main issue is that relational databases really are not designed to be distributed. I think we can do better. As a veteran of nosql (aka post-relational) database development I think that ‘nosql’ style databases will be easier to develop on and deploy/manage in a distributed (multi-data center / global) world. Especially if you want to maintain provider neutrality or if you want on-premises (or hybrid) deployments.

BTW, if you think nosql hasn’t been around long – think again – MUMPS was an excellent example of nosql concepts and is alive and well in the form of GT.M and at the roots of InterSystems Caché®. There is even multi-data center support. As much as I appreciate these projects, and the many other nosql projects out there, at the end I think Apache Cassandra has some of the best ideas in terms of balance of speed and accuracy and overall good design.

As such, you’ll be seeing more many blogs about Cassandra. Do I see any drawbacks to Cassandra? Well yes, biggest of which is secondary index support is all manual – but that is par for the course with nosql. And lack of stored procedures, though Hadoop and Pig kind of address that. Other than that my biggest gripe if the poor naming of the data model. The words ‘columns’, ‘rows’ and ‘super’. If you feel this way too and are still trying to get Cassandra’s data model then consider this revised naming scheme – once you get it then moving back to the columns/super columns terminology may be easier.

Here is the short and sweet intro to Cassandra with the revised names:

Cassandra can hold one or more data stores per node. Each data store is named. Each data store has one or more families of data. Each family contains zero or more family keys. A family key is always a string value. When present a family key contains one or more field keys. The data stores and the families they contain must be given a name in the storage-conf.xml file. Furthermore the data type of the field key must be declared.

There are two kinds of families: Standard and Extra. Using the Cassandra CLI you can interact with the two families as such:

Standard Family

set <store_name>.<family name>['<family key>']['<field key>'] = '<value>'

Extra Family

set <store_name>.<family name>['<family key>']['<extra key>']['<field key>'] = '<value>' 

Again – the ‘<store_name>.<family name>’ part needs to be declared in the config. The data type of the family key is always string. The data type of the field key (and the extra key, if present) must also be declared.

The definitions look something like this:

<Store Name="<your store name>">
<Family Name="<your family name>" CompareWith="<field key type>" />
<Family Name="<your family name>" Type="Extra" CompareWith="<extra key type>" CompareSubcolumnsWith="<field key type>" />
</Store>

That’s it. There are no other family types, no other configuration to worry about – very simple once you take the words ‘column’, ‘super’ and ‘row’ out of the mix. Look back at the various descriptions of the Cassandra data model and see if there is more clarity now.

Also, these diagrams might help with the terminology – thanks to Chaker Nakhli for that helpful article.

On this blog we will provide some real world examples of smallish applications modeling data in Cassandra.

Share
 

Simple, Secure and Speedy – Part Two

05 Jul

Amazon’s EC2 (Elastic Compute Cloud) enables an user to deploy a fully customized Linux or Windows server in the Amazon cloud. Beyond the security provided by the built-in (Windows or Linux) firewall, EC2 provides another layer of firewall called a security group.

A security group may be configured to filter IP traffic – to allow access to only certain ports from certain Internet address ranges. IP traffic that does not pass the filter rules will never even touch the server. All servers running in a security group assume the same filter rules.

Furthermore, a security group may be configured to allow access only from another security group. Thus enabling very secure multi-tier deployments in Amazon’s EC2.

private tier in Amazon's EC2

Read the rest of this entry »

Share