http://www.jamesward.com/2008/11/05/portable-rias-flex-apps-in-pdfs/
Thursday, April 21, 2011
Embedding flex apps with in PDF documents ( Portable RIA )
http://www.jamesward.com/2008/11/05/portable-rias-flex-apps-in-pdfs/
Tuesday, April 19, 2011
Document Databases Compared: MongoDB, CouchDB, and RavenDB
Monday, April 11, 2011
Choosing the right PAAS vendor for your application
The entire cloud ecosystem is getting too hot and crowded with various language and tool support to enable the common application to be ported easily to the cloud . If you search thru google then you find many PAAS player and they claim they are the best with lot of testimonies. Almost all popular languages are supported by most of the cloud vendors.
Notably the most popular PAAS platforms are
- Force.com from Sales force
- Windows Azure from Microsoft.
- App engine from GOOGLE.
- vFabric from VMWare
The factors influence during selection of PAAS platforms are following:
- Application type and complexity.
- Project Type ( Is it a brand new project or old project want to migrate to cloud )
- Preferred Technology Stack
- Allocated Budget
- Business goals
- . Project time line
- Developers competency
- Vendor lock in
Force.com is the leading PAAS offering for building business application from Sales force which is kind of ready to use recipe from Sales force. Simple business applications can be created with no time using Force platform.
It has a visual platform, in which the users can drag and drop different objects to construct the entire business work flow. This work flow can be readily deployed over cloud using the Force platform. There are thousands of applications using this platform. To write complex logics Force provides apex scripting for writing business logic.
Very recently Sales force upgraded the whole force platform and offers different products targeted on Force platform.
1. Appforce : For building enterprise Apps
2. Siteforce : For building data-rich web sites
3. VMforce : Building java apps
Force.com platform initially targeted towards the business users and who are not really keen on learning new languages and the most of the application built are business applications. It is easy to build and easy to host and hence attracted lot of users.
We might see some momentum in enterprise applications hosted on Force.com platform as sales force is heavily investing on this platform and continuously enriching the platform to support multiple customer’s needs.
Windows Azure is a full stack PAAS platform tries to provide end to end cloud deployment. Being it is product from Microsoft very much entitled for “Enterprise Ready Platform”.
Microsoft has tried its best to provide rich tool set for building cloud application using .Net framework. So it is very natural fit for vendors who have been already developing application using .Net.
Azure is one of the most rich and mature PAAS platform available for the developers for different type applications.
1. Azure offers two different kinds of application models: Web Roles and Worker Roles. Web roles are typical request/response HTTP model where as worker role is a generalized development model which can run in back ground.
2. Developers can use array of languages like C#, VB.Net, PHP ,Java for developing applications on .Net framework.
3. Visual studio IDE is available for building and deploying applications with ease. Most of the complex tasks like build to deploy to cloud can be done easily using simple clicks.
4. It has support for Relational database using conventional ADO.NET service and also NoSql database.
5. Azure Appfabric service bus provides secure messaging and connectivity capabilities that enable building distributed and disconnected applications in the cloud.
The above features makes it as a natural fit for existing .Net applications looking for migrating to cloud.
Google App engine ( GAE ): Google also offers all the major features provided in other PAAS platforms. Google supports very few languages like Java and python. For java developers there is very limited support on server side java but the support is pretty stable and mature.
On storage side it provides key value based no sql storage type on its proprietary Big Table database with auto-partitioning. When you consider the scalability factor, GAE is the winner as it scales automatically depends the need.
GAE platform offers one stop solutions for python users. It supports python with DJango popular web frame work. Pretty soon Google will definitely offer the entire java enterprise stack as that will be the future for GAE. There are lot of other vendors provide different tooling and web frame works on GAE to accelerate and minimize the pain involved in cloud migration.
Google also provides necessary tools for building cloud application using GAE on existing eclipsed IDE which is again favors GAE adaption.
vFabric : VFrabic is from VMWare and is a late entrant to cloud offering. Traditionally VMWare has its origin from Virtualization and virtualization is at the heart of cloud computing. Hence it is very natural for VMWare to have cloud offering. After it acquired Spring source has built the entire cloud ecosystem around it’s technology needed to push the much needed cloud envelope.
vFabric supports only java as vFabric is for purely 100% Spring Java development framework. Spring tool suite provides the best eclipsed powered development environment for building spring base applications. vFabric also supports groovy and grails as part of its offering. This is a good value proposition for vendors already using J2EE and spring frameworks for their enterprise applications. They can move their application to cloud very easily using vFabric Enterprise ready server.
Tuesday, November 16, 2010
Cloud Computing Part – II
Microsoft Azure vs. Google Apps vs. Amazon
Microsoft Azure:
The Windows Azure Service Platform from Microsoft is a unique cloud offering for the Microsoft Developer Community. If you are Microsoft based shop, then Azure is the only option as of now for developing applications using .net. Microsoft envisioned the entire cloud stack keeping in mind the entire developer ecosystem which is based on .net framework. Developers can use any language based on .net could be C#, VB .Net , Iron python, Iron Ruby and also Java currently added to the list or in future any language developed targeted on .Net . It also targets PHP and Java developer too.
Azure platform is an internet-scale cloud service platform which has the following core components: Compute, Storage and Fabric. Compute provides computation environment, storage provides scalable storage in form of Blobs, Tables, Ques, Drives where as Fabric takes care of managing the underlines host of complex network cluster and virtual instances. This helps application developer to stay focused in understanding his business problem rather the underline software and hardware architecture.
Its open architecture provides developer the choice of building various kinds of applications starting from web based applications to application that can run on other connected devices. It provides database of choice. Developers can use still the very old structure relation database like SQL server or they have choice for non SQL database which can scale for large projects like social applications.
Google App Engine:
Google app engine is a platform for developing applications using Google in house managed data centers. As Google is already uses lot of applications for its enterprise, the App Engine is primarily built on the same style.
App Engine has a more limited platform. Allows developers to build applications using python or Java and provides the storage as Google proprietary BIG Table data base. As of this writing there are many standard Java features are not yet supported.
Though it has limited offering, Hosting applications in App Engine is fairly simple and robust compared other cloud offering in the market. Google has worked very hard to make sure the developer need not to take the pain to understand the underlined architecture.
If you are a Java or python shop, the ultimate platform is App Engine. Google also recently included its popular GWT on its App Engine. For Java based applications this is an added advantage they can use built in stack for web deployment.
However Google does not support built in relational database as it only provides Big Table assess through high level APIs. There are many companies providing bridge between the relational and Non relational mapping. So this only should not be big problem while considering App Engine.
Amazon web services (AWS):
Amazon is the one of the first vendor to bring the cloud infrastructure to developer community in a big way. It has an array of technologies offered on the premise of cloud computing. It has different levels of offering for different business size.
With AWS users have the flexibility to choose whichever development platform or programming model makes the most sense for a particular business problem. AWS always maintained platform agnostic from the beginning which removes the vendor lock in. In one hand the AWS architecture provides platform neutral open architecture where the developer has complete freedom to configure his own stack on the other hand the developers have to take care the administrative tasks like managing the instances, no of instances required such as compute instances, storage instances. This needs more administrative people needed. Again all this boils down to the business requirement.
Amazon provides the following key cloud platforms:
Amazon Elastic Compute Cloud ( Amazon EC2 ): A web service that provides resizable raw computing over the cloud. The developers can define the entire stack starting from OS, services, databases and application stack. Amazon provides complete freedom to the developers to mix and match their requirement.
Amazon Relational Database Service ( Amazon RDS ): This offering is targeted the traditional relational data base community who needs to store the data in relation database. Underlined database used is MySql. These MySql databases can scale as requirements grows dynamically. All the database management related issues are taken care under the hood without really exposing to the user.
Amazon SimpleDB : Amazon SimpleDB is an answer to NO SQL, non relational kind of database users. SimpleDB is a highly scalable non relational data store is targeted for the companies which need to store and retrieve large scale data over the cloud.
Amazon Simple Storage Service (Amazon S3) – A simple web services interface that can be used to store and retrieve large amounts of data, at any time, from anywhere on the web. It gives developers and businesses access to the same highly scalable, reliable, fast, inexpensive data storage infrastructure that Amazon uses to run its own global network of web sites.
Friday, November 12, 2010
Cloud computing Part – I
SaaS, PaaS, IaaS
It’s been quite long time, we are hearing about the buzz surrounded by cloud computing and its true potential. No doubt, it is clearly a game changer from business perspective. It allows the economy of scale. There are various vendors embraced cloud computing in different architectural styles and based on different business models. The cloud providers mainly categorized under the following types based on the segment or stack they are operating. Cloud computing is broken down to three segments like software, platform, infra structure.
SaaS ( Software as a service ): This is the topmost layer in a cloud stack. In this layer typically the software is provided as service to the end user. We can think of any on premise software available to the end user over the web and the end user instead purchasing the software he is paying cost per month based on the usage of the software. In this case the traditional way of owning and purchasing of software will fade off. This is what truly called as “utility computing” and “pay as you use” model. This disruptive model helps in reducing the initial capital investment for hardware ( capex ) and operational (opex ) cost. At the end of the day the user just pays for what he uses like we pay bills for electricity. The best example of SaaS vendor is Salesforce.com which was pioneered this business model and they are truly leader in SaaS offering. Currently there are mushrooms of vendors offering SaaS applications for various needs. The cloud of companies which provides SaaS offering for end user are Salesforce , ZOHO, Net Suite, BOX.Net , DropBox, Taleo etc.
PaaS ( Platform as a service ): PaaS offers a development platform for developers. The PaaS vendors provide necessary tools for developing applications. There are vendors provide various technology stack built on to their platform. So once you choose PaaS vendor then the end user has locked down with the same platform. The best example of PaaS is Salesforce.com’s Force platform. Which allows to build applications and host on the force platforms. These vendors offering are unique. They provide the high level tools for users, who can build applications with much knowledge of programming. This makes small companies to adopt IT without really having army of developers to build their applications. OrangeScape one of Indian PaaS provider provides cross platform solutions on all the cloud offerings such as Microsoft Azure, Google App Engine, Amazon WS.
The disadvantage of PaaS is the vendor lock in. The application is completely built on the PaaS vendor software stack however the scenario is going to change. In future vendor will enhance their offering to cater different platform stacks.
There PaaS solutions can be categorized in to the following platforms based on their solutions :
1. Social application platforms
2. Web application platforms
3. Business application platform
Social applications : Face Book emerged as platform for social applications. Face book provides platform and tool on which developers can build and extend the social applications.
Web Applications : There are lot of vendors provide the basic web platform on which developer can build their web applications. Google provides lot of tools and apis for building applications.
Business Applications : The best example is Force.com from SalesForce. This provides one of the best integrated platform for business application developers.
Iaas ( Infrastructure as a Service ): The third category in the cloud computing is called Infrastructure as service.
Iaas delivers the raw computing for developers to build their application with all the freedom that used to be there while building traditional applications. They can choose the entire software and hardware stack which they wish to deploy for the application. All the big vendors like IBM, Amazon , Microsoft, Google provides IaaS solutions. The user can buy the infrastructure based on the demand on “Pay and Use” mode. In this class of computing the user has the entire control on the various instances which are running in the runtime so that the users know how to effectively control various processes. The issues in this kind of platform model is, the managing and monitoring these processes will be challenging and vendors do need administrative staff for managing and monitoring these complex processes.
The kind of cloud computing to choose from based on the customer business model and business requirement. The more granularity of cloud we need the deeper we need to go. Definitley IaaS is not for end users.
There are certain class of business problems well be suited for IaaS kind of offering. Before cloud computing hit the main stream adoption there was lot of entry barrier for startup vendors compared to the established players though they have better technology in hand. For example, if a customer wants to start a social application platform, he has to worry about upfront hardware cost and all the associated data center cost. Typically startups will not have that kind of investment. But due to cloud computing the whole game has been changed. These customers easily setup their applications on the cloud from day one and thanks to virtualization technology, the infrastructure can scale on demand. The customer is just paying what are the services he is going to use for not an upfront huge cost.
Wednesday, September 1, 2010
RIA made easy : a simple implementation of RIA using Java
There are many popular established web frameworks around us for several years and there are many more taking shape. A common list of popular web frameworks are
From Ruby world : Ruby on Rails
Python : DJango, Turbo gears
Java : enormous … Wicket , Pivot , Tapestry , Stripes , Scooter, JSF , Struts, Java FX
C# : .net and silver light
Scala : Lift
Google : GWT
I personally love to work on Rails and DJango as they are open source, flexible, abstract the internal complexity from the developer and guarded by strong communities and based on Dynamic languages. Though these frameworks simple but becomes more complex when we need to scale up and we need to learn a new jargons and way to code. Of course we need to learn the base languages on which these frame works have been built. They are extremely powerful web frame works but we need to master the craft. If I am a python or ruby guy then I would not think twice before I could use them.
I was looking very recently for one of my project to work on a simple java frame work where I need not to learn many new jargons and concepts and gone thru few of them and not much help as each one has their own yards.
I found a new Vaadin framework which is very simple to learn and gone thru their documentation and its pretty amazing and started working and it works.
The following are the features which fascinates me about Vaadin :
Enables creating Rich Internet Applications fast.
It is built on Java which most of the developers familiar with and licensed under apache.
The frame work is more like swing so it is very nearer to hearts of desktop guys.
Does not need a plug in like Java FX or flex. So it is browser agnostic.
Built on GWT based widgets. This helps in extending to write custom user controls and support from Google. Also gets App engine support is big plus.
Eclipse plugin support is available. Now a days this is very basic however.
There are many pre built UI controls ready to use with most commonly used features. Decent implementation.
The default skinning looks good. Provides user modified theaming using CSS.
Integrating Vaadin with other popular frame works from java world like Spring and hibernate.
The frame work is well documented comes with on line demo and the source code and a Book.
Backed by company called IT mills and comes with a long heritage. The project started on year 2000.
If you have time do stop by www.vaadin.com.
Tuesday, February 2, 2010
NoSQL database gaining momentum...
The next generation Non Relational, NonSQL/NoSQL databases are gaining quite a lot of popularity in the world of web scale data stores. There is an interesting shift happening from the traditional row and column based relational databases to key value pair based non sql databases. They are often called as document centric databases.
Some of the limitations of traditional relational databases are as follows:
1. The data has to be normalized and should be available in row and column format. This kind of data makes best candidate for storing in relational data store. That means relational databases are not really good candidate for string non structured data where data is not available in row and column format.
2. Normalization will reduce the performance.
3. Replication between nodes is very painful and more expensive.
4. Relational database are really very hard to scale horizontally.
In other hand the Key and Value based data stores provide the same features and flexibility and good for large amount of data to be stored and processed. They also work well with non structured or semi structured meta kind data sets.
The following are the key features of this new data stores :
1. Schema free , de-normalized document storage
2. Key/value based lookups
3. Good candidates for Horizontal scaling. ( Scales well with very large no of nodes )
4. Support for map and reduce style programming
5. Built in replication
6. Simple HTTP/REST based APIs
7. Most suitable for cloud based applications
Some of the most popular document based data stores are
1. Apache CouchDB
2. MongoDB
3. Riak
4. Redis
5. ThruDB
6. Tokyo Cabinet
7. Memcached
Apache CouchDB : Apache CouchDB is created by Damien Katz. This is a document oriented, highly distributed, schema-free database written in Erlang ideal for large concurrent applications.
The database can be queried and indexed using MapReduce style. CouchDB also offers incremental replication with bi-directional collision detection and resolution.
CouchDB provides a RESTful JSON API that can be accessed from any environment that allows HTTP requests.
This is one of the first true document oriented database is designed to scale with the web and this databases is already used by many software companies.
MongoDB : MangoDB is widely used database in this category. This is written in C++ and provides all most all the features of CouchDB. MongoDB is more matured and commercially available from a company called 10gen. The database manages collections of JSON-like document which are stored in a binary format referred to as BSON.
Riak : This one of the new entrant in this space. It combines a decentralized key-value store, a flexible map/reduce engine, and a friendly HTTP/JSON query interface to provide a database ideally suited for Web applications.
Redis : This is also a new project hosted in Google code project. Redis is also key value based database system written in ANSI C and runs much faster. The implementation is very similar to Memcached. Available in most of the platforms. Provides the most of the features like other document centric databases.
ThruDB : ThruDB is also hosted in Google code project. Thrudb is a set of simple services built on top of the Apache Thrift Framework. This offers much faster and flexible easy-to-use services that can enhance or replace traditional data storage and access layers.
Others : There are many implementation of document oriented database. Most of them try to provide the key features mentioned above. This is new way of storing and retrieving data. These data base models provide an alternate and very flexible way to solve the large scale web data problems, which was traditionally a big limitation with Relational databases and other database models.