Tuesday, December 16, 2008

Yet another reason to move to JDK 1.6

My first production memory leak analysis with Java 1.6 was almost a very pleasant experience.
While in previous versions of java I  needed to restart the JVM and set appropriate profiler command line option,  Java 6 comes with a built in alternative.  jmap which was not available for Windows distributions is now available for use. Taking a memory snapshot is a point and click task:
jmap -dump:format=b,file=dump.hprof
Take  the hprof dump generated and use you favorite profiler to analyze it.
If you are only interested in a short summary of memory usage by class:
jmap -histo

So, why was it only an almost pleasant experience ? Because you need to make sure that you are connected to the same windows session as the process you are trying to dump. If you are using terminal services make sure you use the /console command line option, otherwise jmap will not work. Beats me why.. 

Wednesday, December 3, 2008

10 People - a Billion USD revenue

I have been attending this week to the"World summit of cloud computing" which was quite an impressive conference compared to other Israeli conferences I have been to with representatives from Google,HP,Intel,Amazon,EBay, Yahoo,SUN, Salesforce, GridGain, Forrester,GigaSpaces, MerrilLynch and more. Each one of those vendor has a different definition and point of view so after those two days I am ready to give my own definition and what it means to me.
So, Cloud computing is a deployment option for your application which has the following four characteristics:


Your run your stuff on other people machines and infrastructures(IaaS). These resources can be conזsumed either from the the intranet for small large enterprises and government use or reside in the in the Internet for small/midsized companies. But the main issue here is that all you pay for the infrastructure in that case is money.

Using this deployment option should save you money and possibly a lot of money.
  • Reduced CAPEX:, meaning money you will need to invest upfront inoder to support the expected and unexpected changes in capacity.
  • Reduced OPEX: Let cloud providers do what they do the best, maintain large machine infrastructure. Hopefully (with the right amount of competition) that will reduce your IT OPEX.
  • New financial model: All the ?aaS concept is presuming a different(and more fair) revenue model compared to what we are used to in the traditional software industry you only pay for the resources you use no payment upfront and not commitment for long term.
You are able to adjust seamlessly the amount of infrastructure you consume. This helps you handle peaks more efficiently. You no longer need to choose between compromising on your SLA in peak times or let your servers rot in the cellars when you really don't need them.

You as a developer(and I am intentionally focusing on developers) are able to allocate and deallocate resources by yourself through an API no need to sign forms no paperwork. You can write on use software which will do the job for you.

And not to my thoughts:
So I have a crazy vision regarding this new concepts what I see in my mind is a billion USD internet company with a size of 10 people which altogether bring unique (probably patented) value and all their job is to orchestrate outsourced resources to the benefit of the company.
A CEO - orchestrating vision and execution with a set of VAs
VP sales - orchestrate sales operation through an effective network affiliation
VP infrastructure - manages the application in the cloud
VP support - orchestrate outsourced call center and
VP finance
VP R&D -
4 developers - developing only core business logic consuming open source projects for the other stuff.

I know it is a bit extreem but I don't care I am sure it will happen one day.