Jan 25 2010

Force.com – Evening the score

Category: Programminglomaxx @ 9:06 pm

In my last post on Force.com vs .Net I looked at some of the areas where the Force.com platform really fails. My point in that article was to highlight some of the serious deficiencies the Force.com platform has from the point of view of a developer who has spent the last 6 months working with the platform.

To show I’m not completely biased I thought I’d look at a few areas that Force.com does a good job.

The first area is in performance. The interesting thing about the Force.com platform is that for all the negatives I had about it in my previous post, I can’t deny that it is lightning fast, which for me is it’s saving grace. As an example, we were planning to build a wizards application that would be composed of multiple steps. Our wizard engine would have to save data between each step in the wizard. In our initial prototyping, we felt that we would need to build a caching layer between the wizard engine and the database to keep the application responsive. When we built our prototype wizard engine, we were a bit worried because the Force.com platform doesn’t actually support caching. What we found though, was that the caching layer wasn’t required because we could persist the data direct to the database between steps and the server would still respond in under 200ms which was more than responsive enough for our clients.

The next area that we found Force.com provided a decent solution was for the 30 or so admin screens we had to create for our internal staff to make data changes. For our external facing site, we had to provide a rich user experience which the standard visual force pages didn’t provide, however for simple data entry and maintenance screens, we were able to easily create them and expose them internally in very little time. In general, if you’re creating data centric applications that are driven by standard CRUD operations, you’re not going to have too many problems with the Force.com platform.

The final area that the Force.com provides benefit is that there’s obviously no infrastructure involved. Force.com manages all this for you and this is where you’ll get some of your biggest wins by moving to the Force.com platform. If your applications can be structured in such a way that they can be deployed entirely inside the Force.com platform then you’re never going to have to worry about buying and configuring severs, monitoring them, keeping them up to date etc. It really starts to paint a rosy picture when you think about how spinning up a new dev or test environment is really quite simple and as long as you haven’t hit your sandbox limits. You’ll be able to setup a new environment in no time. You need to make sure you have a rock solid migration strategy for moving your applications between environments, however if all you want is a new environment for testing or doing some prototyping, it really is straight forward.

However, you need to be aware that this “no-infrastructure” situation is what will get touted by the marketing guys as where you’re going to get your ROI but you will only get that ROI if your application can be built entirely within the Force.com framework. It annoys me when I see stuff like this ROI calculator from Xceliant because it’s typical of the Force.com marketing claims that you will get 5x ROI but the reality is, any business that makes a decision based on the claims of marketing or a calculator such as this would be a bigger fool than the people that made the calculator.

An example is the situation we had where we wanted to build a dynamic templating engine which would take a user defined template and merge it with data from the database and produce a PDF report. We investigated various solutions including applications like Conga Merge however the reality was, that the limitations of Apex meant we needed to create an externally hosted service to generate the reports and then feed them back into SalesForce. As soon as we did that, we were not only back into buying hardware and infrastructure, we also needed to create an integration piece to push the data to the reporting service.

Another area we struggled with was the online analytical processing. To be clear, Force.com will not give you any benefits for OLAP type reports. Just like any OLAP process you still need to suck the data out into a warehouse, build your cubes and run your analytics off that and there are plenty of applications on the AppExchange that make this easier.

Other types of application that you will struggle to build in Force.com are:

  • Anything that needs to be performing high volumes of transactional level calculations, like calculating fees for insurance premiums. The way DML is structured means it doesn’t take advantage of set operations like a normal RDBMS
  • Any application that needs to dynamically generate reports based on the data used to render the report. For example, generating a report with a different logo for each client isn’t straight forward
  • Applications that need to manipulate images or any binary type of data like zip files because the apex BCL’s just won’t support it
  • Any application where you need to store large amounts of documents. If you’re thinking of building a Flickr clone, Force.com isn’t going to be a great platform for you
  • Any application where you want to have a “multi-tennant” environment. The security model in Force.com is heavily geared towards a single tennant style of solution. If you have multiple tennants living inside the same org, you will find you’ll need to enhance their security framework.

The point is that just like any technology stack, you need to make sure you do your due diligence to ensure the technology meets your needs. If the Force.com platform meets your needs, then you’ll definitely see benefits by using it, however if you’re building a class of application that doesn’t fit nicely in the Force.com platform sweet spot, then you’ll struggle to realise any real ROI.

7 Responses to “Force.com – Evening the score”

  1. David Dobrin says:

    Very interesting summary and quite consistent with what I know. I’ve been wondering since your last post what kind of app you were building that generated the kinds of problems you’re talking about. Now I have a much better idea.

    I also think you’re being somewhat too kind. Some of the faults of Force.com that you detail are faults even when you’re building an entirely native application. No debugger!! How is that a good thing even if you’re building a sales app? And arbitrarily running into Force.com limits. This introduces a really unnecessary amount of uncertainty. Can you imagine if you were using EC2 and you suddenly started getting e-mails saying, “We’re sorry, you can’t do this.” Wouldn’t happen, would it, and it shouldn’t happen with Salesforce.

    (Not that I’m against limits, just that I’m very much against limits that make almost any arbitrary programming decision into an adventure.)

    Some questions, though. I was under the impression that the Content capabilities were provided with Force.com. It’s hard for me to understand why Salesforce would do this if at the same time, you can’t store many documents. I was also under the impression that native Force.com applications could be multi-tenant without going through horrible gyrations. (I’ve been told this by several people, but not by people who have been doing as much with the platform as you have.

    In any case, bravo and thank you. You’ve really my understanding of the platform. It’s never been clear to me why Salesforce couldn’t ever have been as straightforward and fair-minded as you are when describing the pros and cons of using the app–in the long run, I think it would have helped them, not hurt them. But since they’ve chosen to be Cloudy about this subject, I’m thankful that you’ve filled in the gap.

  2. Danny says:

    i was a java developer switching to force.com. the force.com ui console for internal user is huge. it can be combined with salesforce.com’s page layout/workflow/sharing rules/profile management. i also like the ready-to-use web services API for each custom object. to think about rebuilding these from scratch, it’s a headache.

  3. Phil says:

    @David Dobson: The limitations of the content capabilities are mainly because we’re looking at storing terrabytes of documents. To store on EC2 we’re looking at ~$2500/month as opposed to ~$15,000 per month on force. The other problem is that they limit the actual filesize to ~4mb (I think) which doesn’t work for us where our documents can be in excess of 1gb.

    Multi-tenancy is an interesting problem and I’ll compose a more detailed blog post to discuss the details at a later stage

  4. Simple Cloud Apps says:

    Either come up with a financial argument against our Force.com ROI calculator or just shut the f**k up. You have absolutely no idea what you are talking about. The calculator deals with facts not opinions.

  5. Phil says:

    @Simple Cloud Apps: How about you come up with a realistic tool. Anyone can make a few sliders that toggle the numbers, but the reality is, unless your entire application is hosted within the cloud, you aren’t going to save squat.

  6. Dave says:

    Simple Cloud Apps: I would tend to agree with Phil here. In my organisation since we still require external web services to access our transactional data and do reporting we still have to pay for the cost of a Database server, Reporting Server, Software licences, and since we don’t want our users to use Salesforce usernames and password we also have a single sign on authentication server as well.

    So the reality in our case is that we save money on a few web servers, a database server, plus the data recovery systems attached to them. But the ongoing per user licensing cost of Salesforce offsets most of the hardware and deployment savings we get. So the end result is that it cost the same or slightly more to host on the cloud. Like Phil said if you can have 100% of you application in the cloud you may get some good savings but for large or complex applications this is very unlikely .

  7. Chris says:

    @Simple Cloud Apps it’s pretty clear to most people that a 100% cost reduction in storage is something that you’ve totally made up. Force.com storage is not free, and is some of the most expensive storage out there. Your ROI calculator has absolutely no facts backing it up whatsoever.

    50% saving in app dev team costs? Having a team learn a new language that has poor collaborative development features and no debugger saves $150k? I highly doubt it.

Leave a Reply