Friday, December 16, 2011
Although, enterprise are slowly but steady adopting these services from various cloud provider, By definition, the dynamic of this model removes a lot of the friction that companies experience when adopting open source technology stacks. Think about it, would you still be concerned about using Ruby or MySQL if VMware, Red Hat provisioned, hosted, managed and scaled the technology for you in a very elastic, self-healing infrastructure?
From language to cloud services, open source adoption has almost forced companies to look beyond their umbrella of technology, tools and why not? Many companies (Facebook, Twitter etc) have proven that with only open source solution they can run their business without any issues, as they can scale on demand. I can think of one example in Enterprise Service Bus, Mule is stand out in comparison to other vendor provided ESB’s.
PaaS providers – VMWare Cloud Foundry & RedHat Open Shift Platform, can enable the foundation to host, manage, provision and scale solutions based on some of the most renowned open source technologies such as Ruby on Rails, Hadoop, MongoDb, MySQL and cassandra. Open source
PaaS platforms represent one of the fastest-growing cloud computing models. With vendors like VMware, Salesforce.com and Red Hat leading the way, open source cloud platforms enable the benefits of cloud computing on some of the most popular open source technologies in the market. By providing a model to host, deploy, scale and manage open source solutions, this model overcomes some of the major challenges that have prevented big enterprises from widely adopting open source technologies.
Tuesday, November 8, 2011
Sunday, October 16, 2011
Why we need it?
Today with industry trend changing day and night, it become so essential for every organization to understand or analyze data. Most of the IT organizations collect data or use data to predict future or growth for enterprise- it could be retail demand forecasting, supply chain inventory management or customer related data.
Great organizations - Today great organizations distinguish themselves from others as they already using Business Intelligence with their process and operations. While others organizations are getting ready or in a process of enabling BI with their IT operations, so that they can get prepared and be ready to improve their business.
So what's Analytic?
Analytics is all about gaining insights from the data for better decision making. BI is taking a big lead in IT organizations across the world using data-driven insights for strategic, financial and operational excellence. As these organization using predictive analytics to understand future growth plans for their business. There are many technology company provides tools for BI/predictive analytic.
Here's one Solution: While there are many many solutions are out there...
Recently I came across something interesting and thought of sharing- Oracle announced Exalytics Business Intelligence Machine the world’s first engineered system specifically designed to deliver high performance analysis, modeling and planning. Built using industry-standard hardware, market-leading business intelligence software and in memory database technology, Oracle Exalytics is an optimized system that delivers answers to all your business questions with unmatched speed, intelligence, simplicity and manageability. For more information: follow Oracle Exalytics
Friday, September 16, 2011
Wednesday, August 24, 2011
RDBMS: The Awesome and not to so much
Relational database (RDBMS) technology, a “scale-up” technology that has not fundamentally changed in over 40 years, continues to be the default choice for holding data behind Web applications.
Database technology has not kept pace. Relational database technology, invented in
the 1970s and still in widespread use today, was optimized for the applications, users and infrastructure of that era. In some regards, it is the last domino to fall in the inevitable march toward a fully-distributed software architecture. While a number of bandaids have extended the useful life of the technology (horizontal and vertical sharding, distributed caching
and data denormalization), these tactics nullify key benefits of the relational model while increasing total system cost and complexity.
Long story short, you could do and try many ways to scale RDBMS, like
ORM: Again better but not so much
While I’m talking about RDBMS, how can we ignore ORM frameworks. If you’re an architect/application developer, you’ll no doubt be familiar with the many object-relational mapping (ORM) frameworks that have sprung up in recent years to help ease the difficulty in mapping application objects to a relational model. Again, for small systems, ORM can be a relief. But it also introduces new problems of its own, such as extended memory requirements, and it often pollutes the application code with increasingly unwieldy mapping code.
Good luck, if you trying to achieve performance, Scalability playing with above options. If I were you and I have the power to change architecture, I would choose following option. I would like to say that may be not all the applications are fit for this, but you can design most of the applications with “NoSQL” solution.I would like to mention one Quote, I read it some where “If you can’t split it, you can’t scale it”
While implementations differ, NoSQL database management systems share a common set of characteristics:
• No schema required
Data can be inserted in a NoSQL database without first defining a rigid database schema. As a corollary, the format of the data being inserted can be changed at any time, without application disruption. This provides immense application flexibility, which ultimately delivers substantial business flexibility.
Auto-sharding (sometimes called “elasticity”). A NoSQL database automatically spreads data across servers, without requiring applications to participate. Servers can be added or removed from the data layer without application downtime, with data (and I/O) automatically spread across the servers. Most NoSQL databases also support data replication, storing multiple copies of data across the cluster, and even across data centers, to ensure high availability and support disaster recovery. A properly managed NoSQL database system should never need to be taken offline, for any reason, supporting 24x7x365 continuous operation of applications.
I think for this post, I’m going to leave it here and would come back and provide some of my favorite “NoSQL” solutions.
Till then good night folks…
Thursday, July 14, 2011
In my previous post I have written about VMware Cloud Foundry, few days back I was playing with Cloud Foundry. Again, it looks very impressive and it seems Derek (Cloud Foundry CTO) team has done a fabulous job with this first PAAS offerning with Vmware. I have used and deployed my app with Google App Engine as well, and I have to say Cloud Foundry stand right there with Google App Engine and Amazon. In my view this will take lots of industry attention as it gets more mature and more and more folks will start using.
To give you an idea, it only took me 30-40 mins from the start to deploy this application. I have used VMC CLI tool to deploy this application. Spring STS also have plugin for Cloud Foundry, I might give it a try later on sometime. Here’s my first “Hello World” kind of application, which is deployed in Cloud Foundry.
Here's my terminal output from my mac:
Vikas-Kumars-MacBook-Pro:~ Vikas$ bash
bash-3.2$ vmc target api.cloudfoundry.com
Vikas-Kumars-MacBook-Pro:~ Vikas$ bash
bash-3.2$ ruby -v
ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]
bash-3.2$ gem -v
bash-3.2$ sudo gem update --system
Successfully installed rubygems-update-1.8.5
Updating RubyGems to 1.8.5
Installing RubyGems 1.8.5
RubyGems 1.8.5 installed
=== 1.8.5 / 2011-05-31
* 2 minor enhancement:
* The -u option to 'update local source cache' is official deprecated
* Remove has_rdoc deprecations from Specification.
* 2 bug fixes:
* Handle bad specs more gracefully.
* Reset any Gem paths changed in the installer.
RubyGems installed the following executables:
bash-3.2$ sudo gem install vmc
Fetching: json_pure-1.5.3.gem (100%)
bash-3.2$ vmc target api.cloudfoundry.com
Succesfully targeted to [http://api.cloudfoundry.com]
Successfully logged into [http://api.cloudfoundry.com]
bash-3.2$ vmc push
Would you like to deploy from the current directory? [Yn]: y
Application Name: hellovikasCloudFoundry
Application Deployed URL: 'hellovikasCloudFoundry.cloudfoundry.com'? y
Detected a Sinatra Application, is this correct? [Yn]: y
Memory Reservation [Default:128M] (64M, 128M, 256M, 512M, 1G or 2G)
Creating Application: OK
Would you like to bind any services to 'hellovikasCloudFoundry'? [yN]:
Checking for available resources: OK
Packing application: OK
Uploading (0K): OK
Push Status: OK
Staging Application: OK
Starting Application: OK
Friday, June 24, 2011
This title itself says it all, “ESB in a box”. Yes, that's right and its almost true for IBM XI50 appliance. Recently, I came to know about full features of this appliance and other Data Power appliances from IBM and it looks very interesting. I’m sure it will compete with already established ESB’s in market, such as Mule, WSO2, Open ESB & Jboss ESB to name few. What makes it so compelling that it can integrate with other IBM Data power family members like XC10 to provide elastic caching with ESB. Which I think is bonus and will get more n more attention from SOA industry. Lets look at some of the feature set from XI50:
Support for direct DB connectivity including IBM DB2.
Any-to-any message transformation, such as binary, text and XML messages
Support to enable simple rules with your applications.
Support data tranformation with routing capability.
Message-level XML security and fine-grained access control.
Enables extreme reliability by securing services at the network layer with advanced XML/SOAP/WS-Web services processing and policy enforcement.
Bridges to Web 2.0 technologies with JSON filtering and validation, support for REST verbs, and converting/bridging of REST and Web services.
Integrate with other IBM WebSphere Service Registry Repository for governance capability and interoperbility and connectivity.
Integarte with other Data Power family members to make it life easy for developers.
Support JAX-WS feature pack for security, message reliability etc..
I hope this will give some idea about IBM data power world...
Saturday, May 28, 2011
In my previous post we have discussed about how to increase performace & scalability of web applications. Also, cloud based application growing day and night, I thought it would be nice to point out most of caching providing. In todays world we have different clients (web, mobile, ipad etc) for an application and as developer you have to make sure that your application handling users load, and these requirements have produced a diverse elastic caching market that includes not only the large vendors but some open source solutions:
Oracle Coherence and GigaSpaces eXtreme Application Platform (XAP) are the veterans. Oracle and GigaSpaces have the longest presences in the distributed caching market. Both offer elastic caching products today to both enterprise and Web customers, although mostly to enterprise customers. Oracle incorporates its Coherence product into two of its Fusion Middleware bundles but sells the product separately as well.
IBM and Terracotta challenge Oracle and GigaSpaces across the board. IBM and Terracotta (now Software AG) arrived later to the elastic caching platforms market but are challenging the veterans for both enterprise and Web accounts. IBM’s WebSphere eXtreme Scale will get attention as they came with XC10 device, IBM now has hit stride with the product primarily as an extension of architectures based on its WebSphere Application Server.
Terracotta makes its software available under both open source and conventional licenses, and it focuses almost exclusively on selling through developers. Terracotta expanded its offerings by buying Ehcache, a popular open source client-side product, and positioning Ehcache as the primary API to its elastic caching platform. As Amazon is one of the Elastic Caching Pioneer and they provides terracotta caching solution with EC2.
Spring GemStone is focused on big enterprise projects. GemStone has focused almost exclusively on large enterprise projects in financial services, defense, and intelligence. GemStone is a software industry veteran with a history in the Smalltalk language and object-oriented databases and has applied its expertise and technology to the problem of elastic caching. Gem Store will be integrated with other spring framework and Spring TC server (offering session replication at extreme scale), as per spring, other potential area to integrate with spring web flow to provide (transparent flow replication).
Red Hat JBoss is an emerging player. Red Hat’s JBoss middleware division has begun phasing out its distributed caching software (bundled with JBoss as JBoss Cache) and will replace it with the new Infinispan elastic cache. Infinispan is in a very early stage of commercialization, and I it to gain lots of attention from Java developers and eventually build a position in the market as a strong alternative.
Membase which is now part of CouchBase, provides distributed, key-value ("NoSQL") database management system optimized for storing data behind web applications. These applications are characterized by their need to serve many interactive users concurrently; they must create, store, retrieve, aggregate, manipulate and present data in real-time.
Now since we have listed most of the players from EC world. If I would have to choose one or two from above i'll go with terracotta or IBM as they provides more option for developer and their EC solutions seems to better compare to some other one.
Have fun with EC...
Saturday, May 14, 2011
From last few days, I have been reading a book about "Web Scalability" and some intresting articles about “scalability”. In a nut shell, how to improve performance and better scale your application. With this post today I’m going to discuss some major choices to dramatically raise the scale of applications:
Scaling option # 1: Add servers to increase capacity. Add servers or virtual machines to cache user Web sessions, execute business logic, and process transactions. Each added server carries the cost of hardware, software, electricity, and ongoing management. Even if you buy more application servers, your database may then become a new bottleneck. Databases can be redesigned to scale up or out, but it is often very costly to do so. The new buzz, Cloud computing can deliver server instances on demand, but it cannot redesign your application code and data to take advantage of additional resources. And soon or latter one will realize and say, “We can’t just keep throwing hardware at the problem.”
Scaling option # 2: Re-architect the application for greater capacity. Redesign the application for greater capacity by sharding databases, going stateless, splitting functions, improving the layering and separation of concerns, and/or adding asynchronous processing, common services, caches at every layer, single-function appliances, etc. or thorowing new pattern to re-factor some or most of code will take lots of time and money. Most organizations find this remedy too slow to deliver results and sometimes too risky and expensive. Your management and more likely users will say “We’ve got a problem now — we can’t wait a year to solve it.”
Scaling option # 3: Add caches that scale easily. Elastic caching platforms add a fast, scalable, and fault-tolerant data-access layer that can be used to cache transaction results, user session objects, shared application data and other data. Most organizations find that elastic caches easily fit into existing Web architectures and improve scale at a lower cost than the first two options. Also since mobile development is on high right now, that area can really get advantage of cachine solution, as they can choose what object, variable to cache or not to cache. Once you use this solution no one will go back to previoud options.
If you didn’t get bored so far and reached here, Congrates!!! And by now it would have been clear to most of you, that I’m going with 3rd option to gain scalability of web applications. Hopefully in coming days will post more about major caching players.
Saturday, April 30, 2011
Recently VMWare has launched Cloud Foundry, the world’s first open Platform as a Service (PaaS). Cloud Foundry is designed to help developers create applications within a "platform Cloud" or a "development Cloud."
As a developer you will be able to sign up and login and write code directly on a Spring or Rails environment. You can deploy your application on a Spring Source tcServer instance and make use of running database services like MySQL and MongoDB. For STS users, the easiest way to get started with Cloud Foundry plugin is by installing it into a pre-installed copy of Spring Source Tool Suite which can be found on the download page. For Eclipse users, Cloud Foundry plugin can quite easily be installed into plain Eclipse installations. To make sure that all dependencies can be satisfied during installation you should start installing the “Eclipse IDE for JEE Developers” package. This package can be downloaded from the Eclipse download page or from the Spring Source member distribution page.
Some benefits of Cloud Foundry might include:
· Multiple Frameworks – choices of programming models
Cloud Foundry provides a platform for building, deploying, and running cloud apps using Spring for Java developers. And support applications those are using spring framework for code wiring purpose or for resource configuration purpose, such as data source look up etc.
· Multiple Services- choices of services from VMware and third parties
o Cloud Foundry is open to multiple services including basic relational databases as well as broader choices like MongoDB, MySQL and Redis. Services provide data storage and other functions that can be leveraged by applications. Examples of additional service integrations will include VMware’s vFabric application services. The vFabric Cloud Application Platform includes open source Spring Development Framework as well as a set of application services including a lightweight application server, global data management, cloud-ready messaging, and application performance management capabilities.
· Multiple Clouds - choices of clouds for deployment
o Cloud Foundry provides choice of underlying deployment destinations including a public cloud service at Cloud Foundry. Cloud Foundry make this framework available as downloadable instance to run on other cloud providers like Amazon EC2, and other IaaS offerings technologies like Eucalyptus or OpenStack.
· Developers can deploy their applications to Cloud Foundry using their existing tools and with zero modification to their code.
· As any PaaS, Cloud Foundry allows developers to focus on applications, not machines or middleware.
· Most PaaS offerings restrict developer choices of frameworks, application infrastructure services and deployment clouds. The open and extensible nature of Cloud Foundry means developers will not be locked into a single framework, single set of application services or a single cloud.
Cloud Foundry supports:
· Node.js which is an event-driven I/O framework for V8 java script engine on Unix-like platforms.
· JVM frameworks including Grails.
Cloud Foundry Architecture
Application execution engine is one of the core building blocks of Cloud Foundry Architecture. It’s an agent that runs on each node that actually runs the application. It acts as an automation engine for application deployment and lifecycle management. Also includes scriptable command line interface (CLI) that provides access to VMWare cloud application platform. Integration with development tools such as Spring Source Tool Suite(STS), Grails and Spring Roo for development. These tools utilize the Cloud Foundry client web services API and Spring Source artifact repositories to deploy applications under Cloud Foundry.
The pieces that make up Cloud Foundry architecture are:
· At the core the Application Execution Engine is the piece that runs your application. It’s what launches and manages the Rails, Java, and other language app servers. As your application is scaled up, application engine will launch an application server with deployed code. It can be launched on any suitably configured server, which then connects to the other servers in the PaaS and starts running user applications (the application execution engines can be configured to run a single application per server or multiple).
· The Request Router is the front door to the PaaS: it accepts all the HTTP requests for all the applications running in the PaaS and routes them to the best app execution engine that runs the appropriate application code. In essence the request router is a load balancer that knows about which application is running where.
· The Cloud Controller implements the external API used by tools to load/unload applications and control their environment, including the number of application execution engines that should run each application. As part of taking in new applications it creates the bundles that application execution engines load to run an application. One aspect of the cloud controller is that it is relatively policy-free, meaning that it relies on external input to perform operations such as scaling how many application execution engines each application uses. This allows different management policies to be plugged-in.
· A set of Services which provide data storage and other functions that can be leveraged by applications. Each service tends to consist of two parts: the application implementing the service itself (e.g. MySQL, MongoDB, Redis) and a Cloud Foundry management layer that establishes the connections between applications and the service itself.
· A Health Manager responsible for keeping applications alive and ensuring that if an application execution engine crashes the applications it ran are restarted elsewhere.
Application Services allow developers to take advantage of data, messaging, and web services as building blocks for their applications. For Data Service, Cloud Foundry currently offers support for MySQL, MongoDB and Redis with other service integrations underway. For Messaging service, they will offer their own Rabbit MQ and other messaging services. Examples of additional service integrations will include VMware’s vFabric application services.
Initially they are going to provide multiple services provided by VMWare itself, and eventually, open it up to the ecosystem for third-parties (similar to Heroku Add-Ons or Salesforce.com AppExchange)
Public, Private, VMware based and non-VMware based it up to the developer and organization as to where they want to run Cloud Foundry.
Finally, you'll notice there is reference to a "Downloadable 'Micro Cloud'". Micro Cloud is a single developer instance of Cloud Foundry. It provides developers with a personal PaaS that runs on their desktop. Micro Cloud is provided as a downloadable software image for VMware Fusion or VMware Player, as well a hosted image on selected cloud partners like you can run on an(e.g. Amazon Machine Image). The idea behind the Micro Cloud is to appeal mostly to developers and let them easily do development in any physical location, as well as easily load their app to a Cloud Foundry cloud when they are ready.
Cloud Foundry’s code is open source at github under the Apache 2 License.
Friday, April 15, 2011
Ehcache is one of the widely used java distributed cache for caching purpose. As you might know that Ehcache has been aqquired by Terracotta inc. one of the pioneer for providing distributed caching funtionality.
Ehcache can serve as a local cache that the applicaitons can use to boost the performance of single node or multi-node applications.
Terracotta provides distributed object caching essential for elastic scalability and next-generation cloud environments. One of the pioneer in Cloud services, Amazon EC2 also provides Terracotta integration with their cloud instance if your application require one.
For more information on this topic please visit:
Tuesday, March 1, 2011
“Spring in Action”, as the book title suggest, this book is all about Spring and let me tell you this book is EXCELLENT for spring framework user. And if you are new spring framework user or advanced developer or has been using Spring framework. This book is perfect for you. Spring in Action 3E is new book for Spring in Action Series books. This book covers Spring framework core concept and all of the other modules from spring framework. So, if you want to be expert in using spring framework this book can help you achieve this goal. I have personally used this book for examples and for reference purpose. Thanks to manning publication also for providing such nice books.
Starting from chapter one, user get to know about spring framework concept and two very important fact of spring programming, one is DI “dependency Injection” and other is AOP “Aspect Oriented Programming”. And this books covers these concepts in great details with some very useful examples.
Second chapter will take you deep in to DI advanced concept, Wiring beans, injecting bean and how spring works with Auto Wiring. I would say these two chapter are must read to understand Spring core fundamental concepts.
Chapter three will teach you about how you can wire your bean togeather, like using XML configuration, Java Config etc…and use of different type of XML schemas..
Fourth Chapter will take you to AOP world. This is very powerful feature in todays programming model and this chapter will teach about basic features about Aspect programming language and how you can use AOP with spring framework.
Fifth chapter will teach about JDBC and other how spring take care of DB connection, exception and how you can use spring framework to connect to DB.
Chapter six will cover the most important aspect of programming “Transaction”, as how to integrate with different Transaction Manager, how to manage transaction withour relying on Container. Also, this chapter cover how to use transaction using annotation.
Chapter seven covers spring MVC framework, with very easy examples to demonstrate powerful MVC framework.
Eight chapter will extend further UI works and will cover about Web Flow framework.
Chapter ninth covers about Spring Security and how to secure your web application using servlet filters, also cover fundamental about security like authorzation and authentication.
Next two chapters are the most critial chapters from this book sa they talk about how to expose service using RMI and how to use Web Services with Spring Framework. I think in todays world using web services are important, but to use them correctly is more important. This chapter covers some good concept about using web services with Spring.
This next chapter covers how to use JMS with Spring framework. Also, covers what spring offers you for JMS APIs.
I persoanlly have used this book and would recommend every spring users to take a look at it, as this book present lots of useful example for each spring modules.
Thanks to Craig Walls for writing very nice book.