Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ask HN: What (enterprise-level) platform should I invest in?
14 points by joelhaasnoot on June 18, 2011 | hide | past | favorite | 20 comments
I'm the developer for a startup, and up to now our website/application was developed using CakePhp, a framework that works well but is slowish, and doesn't have a lot of momentum. We have a (M)VP, but are working on a completely new (hosted) service, targeted at medium to large enterprises, with certain pieces maybe being a installable product in the future.

What platform should I invest my time/energy in?

Node.js is interesting and has momentum, but isn't very mature (especially libraries and addons). I've played around some with Django and Ruby, but should I? What's important in choosing a platform?

EDIT: Clarified that it's mostly a service, not self-hosted product.



A lot of smart people find themselves asking this very question, and they choose a lot of different answers :)

Anyway, I vote for something in Python with SQLAlchemy and either Werkzeug (maybe Flask, if it suits you) or CherryPy. Pyramid might also be good, but I haven't used it much. I tend to avoid Django because the ORM just isn't as good as SQLAlchemy, and the template language isn't as good as Jinja.

Not sure why everyone is suggesting the standard enterprisey platforms Java and .NET. You control the server environment completely, right? Go with a dynamic language for development speed, then. The big ones for the web are Ruby, Python, and PHP. Of those: PHP is a mess of a language with no big advantages; Ruby and Python are both great languages with all the libraries you need (probably :), but I give Python the edge because things in the Python world tend to have much better documentation.


Sadly, I'm going to say MVC.NET. Simply because it's something you can bet on. And it's also something you will always find smart people be able to help you improve and fix your product.

I'd stay away from newish technologies like node.js (even though I love it), also I'd stay away from frameworks that have had their days (CakePHP). NodeJs has fell over a few times on my dev server for unknown reasons. When we talk enterprise app, that's just a big risk.

I mean you seem to know php. So maybe PHP is not bad to keep betting on. Make your own home brew of MVC framework that is lightweight and fits your needs. CakePHP comes with the sources.

Also Code Igniter is a framework I respect, once again in PHP. Developers for it seem harder to find though. Finally there is Zend. I prefer Code Igniter over Zend because I find Zend too complex, but it's also a perfectly good option.


Really? You know, I'd consider MVC.NET for my startup, but here's a few snags I keep hitting. Perhaps you can provide insight in how to get around them?

- Cost. I have found no way to accurately estimate what the development and deployment will cost me initially, nor when I need to scale. BizSpark makes it affordable for a very short time all things considered, but it's really sorta like a free crack rock. - Linux. I simply don't feel comfortable deploying anything publicly on Windows. It might be more secure now than in the past, but my experience is on Linux and I feel like it's a whole new world to come up to speed on the linux side. It's almost as if Microsoft should have a ".Net for Startups who are used to *nx OSes" class. - Linux. I develop on and am most comfortable with Linux. I'd have a hard time spending my days on Windows 7.

Other than that, certain features of .NET do indeed look interesting. At least C# as a language has improved over its parent (Java).


Amazon provide Windows hosting on the cloud.

Personally I host MVC 3 on a Windows server 2008 R2 with Hetzner for €65 per month.

The Bizspark programme will help you to keep the licensing cost down to pretty much zero in the short run so I don't think this should be a major concern.

Like another commenter suggests you can look at Mono which will let you run MVC 3 (with the Razor view engine), however note that EntityFramework isn't supported and you would be advised to start from scratch in Mono and port to .NET actual later if you chose that route rather than the other way.


Well, be sure to look at the Mono project. ASP.NET MVC ships with Mono, so a lot of it should work fine on Linux.


I ran my (slightly profitable) side project on mono and ASP.NET MVC2 for about 5 months before switching to a Windows server on EC2.

Best thing I ever did ... sure it costs 3x what I was paying for a VPS, but it has been rock solid compared to a number of resource leak issues with Mono, and the fact that I can admin a windows box with googling everything I need to do.

If you are developing a for-profit venture and the cost of deploying on Windows vs Linux is a breaking point for a .NET project then I'd suggest you look at the business plan again and decide if it has enough profit in it.


I have looked at Mono, along with MonoDevelop. I think Mono and MonoDevelop might work well for the experienced .NET developer who is interested in using his/her skills on Linux, but not for the newb .NET developer. There's just too much setup/etc to have to know in order to get going.

Also, has any startup actually deployed a large scale web app on Mono with ASP.NET?


This is an impossible question to ask. Everyone is going to simply recommend what they use. We're a Rails shop. I love Rails. I'd recommend it to anyone, but I don't think someone else is "wrong" for using Pylons/Struts/MVC.NET/etc.

Here's what I've observed about programming languages and frameworks. Each programming language has a community. The priorities of that community will dictate the direction of the framework, and to a lesser extent, the language. Frameworks seem to advance/change faster than the core language itself.

So, rather than asking what language/framework you should use, you should be considering what type of community you think fits your team/product best.

As I mentioned, we love Rails. We've been extremely happy with it, but it's a fast moving framework that requires constant learning and comes with it's fair share of drama. I'm ok with that, because our team doesn't mind the pace, and we enjoy the benefits of a stack that has strong "default opinions". I've introduced several PHP programmers to Rails, and they're constantly amazed at the broad nature of the Rails development stack. Aspects like deployment strategies with Capistrano, and now asset pipelining, are all concepts that the Rails community embrace and support. However, if you're not down with having someone else dictate these aspects of your project, Rails probably isn't a good fit for you. That doesn't make either decision wrong.

If you have an MVP, take your time. Short-list three or four languages/frameworks and do the following:

* Run through the "hello world" tutorials for each.

* Have a look at the documentation for each. How well does the documentation read.

* Pick a component of each framework, like the ORM, and dig in to the documentation a bit. How detailed is it? Documentation that looks good at first may turn out to be not-so-great when you get in to the details.

* Drop by the IRC channel for each. What kind of discussion is happening? How are new members treated?

* Look for mailing lists related to the language/framework. What types of problems are being solved? What's the focus of the list?

At the end of the day, you're the only one who can tell you what is the right fit for your organization. Hell, it might be PHP. Don't fall in to the trap of believing that the right language/framework is going to make your product a winner. It's the people, not the tools, that make the product go.


I still recommend Node.js.

Reasons:

1. Node.js is maturing and growing by the day

2. You want to invest in something that becomes better [more reliable, mature, documented etc.] over time, and the Node.js community is going to be great over the next few years

3. You don't want to invest in the technology of the previous decade, you want to invest in the technology of the next decade. Node.js is that technology.

4. Building on Node.js lets you have an advantage in hiring because developers that know Node.js tend to be very good hackers [they were curious enough to learn something new].

5. My company, Flotype, is taking Node.js to enterprise with our NowJS offering. Every single major corporation out there, such as Zynga, Google, HP etc. are all working on Node.js right now. Enterprises are looking into the future and are betting on Node.js.

Honestly, there are benefits of sticking with something like Rails, but you should be looking into the future, and the future is Node.js


1. I don't see how this is better than using a system that already has a mature language and libraries. Java, .NET, Python, Ruby, Perl, PHP, et al have that. Yes, Node is catching up very quickly. But how is catching up better than being ahead?

2. This is a restatement of the first reason.

3. How do you know that popular technologies right now are going to decline? Java was popular ten years ago, and it's still popular. Python was not popular ten years ago, and now it is. I don't expect either to decline in the next ten years. Node, on the other hand, could very well stop growing, or even recede.

4. Why would you require Node experience? A good web developer should be able to pick it up quickly. That allows you to work with the same general talent pool as if you were hiring for Rails or whatever.

5. This is a restatement of reasons one and two.


Can you point out some substantial applications which have been written with node?


Yes, take a look at Yammer, Voxer, Gilt Groupe's Hummingbird, Etsy etc.

The list goes on!


Making assumptions here. Since yours is a "hosted" service, then your "enterprise-level" clients/users have no bearing on what platform you choose, right?. What platform do you have expertise in? Sounds like you already have something working on PHP, so I take it you know it already, on it there are plenty of alternatives to CakePHP, from Fuel, CI, Zend (ooh, enterprisey!) and others. Have you heard that Facebook uses PHP? Do you need to handle hundreds of millions of users? If not, just about any platform you choose and have in-house expertise in should be able to handle it.

Get the volume first, and when the platform becomes a problem, you should be really happy then, while crying all the way to the bank, worry about maybe hiring some experts in another, more scalable one?


If you are developing an application that you will host then your customers are unlikely to care what it is written in (although lots of other factors then become important).

However, if it is an application that the customers will host internally on their own servers then they will care about the following things:

- What web/application server is used

- Whether there is any integration with management/monitoring tools

- What kind of integration is supported with internal directories (particularly Microsoft Active Directory) - for authentication and authorization

- What database engines are supported and whether you make any "unreasonable" requests (e.g. not being able to share the database server/cluster with any other applications)

What kind of application are you thinking of building?


I clarified above, but we would be hosting it. Pieces might be self hosted, but that would only be to integrate internal directories. That's something I'm going to have to look into.


If you're already comfortable with PHP, I'd probably focus on symfony2, ZF2 or Lithium (zf2 is certainly not stable yet, but might be worth investigating anyway).

I've worked with Grails a lot and like it. Been working with Rails some and while many principles are the same, there's a lot of differences (from grails, php frameworks, and others) which have not really endeared it to my heart. But it certainly fits some peoples' style.

Most modern frameworks are probably worth getting your head around - it comes down to personal preference in the end.

I'd also suggest spending more time getting good with a JS framework, and if there's some good interop between that framework and your server framework of choice, all the better.


I'd recommend Spring (framework). It's java but it doesn't get in they way or require you to type excessively. Really handy to annotate your controllers. You can easily have unit testing and CI server. It's open source but VMWare backs it.


Find out what your customers have. I'd expect them to be old, fuddy-duddy, with Php 4, but some of them might have up to date people like you. I've been taught this is the time to do a survey of your target buyers.


Enterprises? Most are quite conservative. Try .Net or Java and try to make it possible to deploy on Windows if needed; PHP is okay-ish (and you already know it). node.js is probably not going to fly.


Don't get me wrong, but this question is too naive. So the honest answer to your question is "C".

But let me tell you why I still like you asking this kind of question, sir. You've tracked down that your shoes don't to your roadmap anymore. And you've tried out new shoes. But it looks like you are looking for boots.

So the simple fact that you don't get blinded by a trademark of shoes is making you 'sympathic'.

Shouts .X4




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: