Parse Launches Web Apps with the Express Web Framework
blog.parse.com
blog.parse.com
Until then, they will continue to pay crazy markups to Heroku or live with limitations like with the new Parse service that doesn't let you install any Node packages (there are 31000 and counting now in the npm registry https://npmjs.org/).
Linode even has a StackScript that sets up Node for you. And AWS has something similar with a Node AMI (in the marketplace at least). Or you could just copy paste like 10 lines of code from the Node.js wiki. Or find a script online to do it.
I would honestly like to know what is it that, say for example Parse, has done with their VM configuration that is so much more sophisticated than what people could get from following a few wiki pages on the web, or just getting a good bash script. Because I doubt that there are a lot of extra security or performance features or anything like that.
Configuring and running an Ubuntu server is not that hard.
But maybe it is. Maybe I am just really ignorant and there is some kind of complex configuration or tuning or firewall or daily task that Parse or some other Node.js hosting company is running on their servers that is completely beyond me or that I would never be able to find out about from the web. But I think that for 95% of people nothing complicated is really required.
I really appreciate any hints about Linux server management to clue me in if there are a lot of commands that I should be running on my servers that I am not aware of.
What I know is that my Ubuntu Node servers get running and stay up without me entering a lot of commands or doing a lot of monitoring or anything else.
If you go with AWS, they have a built in interface for the firewall in the browser. You don't even have to use a command line. Although honestly in Ubuntu how hard is sudo ufw enable; sudo ufw allow [port]
What on earth are you talking about? Maybe you are kidding.
But if you're not kidding.. are you saying that those VPS providers like AWS, Digital Ocean and Linode are not 'event-driven asynchronous'? Wat?? VMs run whatever code you want, asynchronous or synchronous or whatever.
I think you must be messing with me. Especially since you put 'webscale' on the end of that.
HAHA.
All of those things are just distractions from whatever your project really is. Are you building software or are you dicking around with servers?
And I bet that most of the Heroku apps on Node that use multiple dynos really only need multiple dynos because Heroku's dyno isn't giving them realistic resources on the dynos, i.e. less than one small AWS or Linode or whatever.
Forever will not keep your Node application running. If you Node application crashes, forever will let it crash, and then run it again, and if it crashes again, it will run it again, and it will crash again.
There used to be basic gotchas in HTTP/Express that made it really easy to have an exception thrown that would take down a Node web server. I am not sure those are already there, but anyway I do what every Node expert advises against and include and uncaughtException handler in my Node web servers. That keeps them running. If I take it out, the effect is that they go down briefly, and forever restarts them. So honestly I see no benefit in most cases to using forever except to make it a little bit harder to figure out how launch your application.
And the thing with automatically restarting when a server reboots, honestly my servers very rarely reboot. If they are going to reboot then the VM (VPS) provider gives me warning and lets me control it. So for 99% of applications out there, an upstart or whatever to restart your Node application really isn't that important.
Contrary to popular belief, you do not need to install nginx in front of every Node application.
I will give you the SSL one, that could easily take a good UI developer 2 or 3 days to find the right instructions on Google.
Unrelated to the core argument, I think much of what you just posted is bad advice - forever will restart your app above and beyond uncaughtException, nginx or haproxy let you add redundancy on independent processes if not machines, and restarting your site manually on reboot is ludicrous.
In other words, it's like the game of Othello - a minute to learn, a lifetime to master. Some people just want to develop.
Do you really think that Parse is doing all of the security updates that come through Ubuntu or CentOS? Is Heroku doing all of them? I doubt it.
And if someone needs to do a security update on Ubuntu, its a one liner.
99% of the Node apps out there will not need more than one VM or any complicated scaling. Or they can scale horizontally at the application level using more VMs, or vertically by just upgrading their VM to have more RAM/VCPUs.
From Heroku's site: "New systems are deployed with the latest updates, security fixes, and Heroku configurations and existing systems are decommissioned as customers are migrated to the new instances. This process allows Heroku to keep the environment up-to-date. Since customer applications run in isolated environments, they are unaffected by these core system updates."
Which means they do not apply security updates. They decommission servers if they think its necessary. How many times has Heroku actually done this? I am sure it is not with every security update.
Yes. Yes I do.
This whole line of argument is one I typically hear from folks who've never had to deal with a Sev 1 incident in the middle of the night. If your argument holds, sysadmins and DevOps teams are essentially pointless.
Moreover, even a developer confident handling both maintenance and incident response should value his or her time more than zero. Given that, presumably there is a price point at which it makes sense to simply pay a platform provider or hire dedicated DevOps. There may be varying opinions as to what that price point is, but it does exist if the developer has the cash.
Plus you need to know a bunch of stuff about sysadmining to properly secure the server, stay on top of security patches, etc.
Also if you just had a good bash script from somewhere, that would be easier than Heroku too.
Just basically saying that the right script or server image is all you need rather than paying twice or 10x as much money for something you can't control.
I mean for prototypes, proof of concepts, and maybe 2 man fly by night 'startups' trying to get initially backing to hire backend engineers, great idea. I can even see certain 'startups' may be profitable and sustainable and just never need to invest in 'custom' backend code.
But as a general rule of thumb, in no way should software startups that base their existence on client server software possibly think its a good idea to have no one in house who actually knows how to do server software.
EDIT: For the record, I really like Parse, and am a paying customer for two CRUD mainly products.
Its just not that hard to do a 'serviceable' back-end behind a simple rest API. I mean how many hours is that really going to take you, especially when you consider in the case of parse users they already know what data entities their application uses? A REST API for a dozen or so already defined entities, maybe a weeks worth of work? And then look at what it buys you, actual control over your data, ability to move from parse and pursue cost cutting alternatives, ability to do in depth analysis of your data...
I absolutely think Parse has great value, but when the statement is made that in general it might replace back end engineering for startups... its just wow man. This is precisely why a person who understands the server side of a client server application should in general always be involved if the business is based around client server applications.
The only thing that matters for a young startup is finding product-market. Parse makes that process more efficient than ever.
A person who understands backend engineering would understand the value that Parse provides.
Experienced developers are often much faster and more efficient. This is especially true if they're using a language like Python that is quite suited to prototyping, and already offers so much pre-made functionality in the form of libraries and frameworks.
Many of us have learned to be very skeptical of these services that claim to allow software systems to be build rapidly. This often only holds true in a very, very small set of cases. Otherwise, the moment you try to do something unique or unusual, you'll hit one roadblock after another. It doesn't take long before the supposed "time-saving" or "effort-saving" service has wasted more time and effort than it would have taken to develop everything from scratch.
There was all this hype about how they were going to render C, C++, Pascal and COBOL programmers obsolete, because they'd let non-technical folks build production-grade software systems with ease in record time.
Of course, what ended up happening is that this didn't hold true at all. Most apps developed by non-programmers were quite limited and terrible. Anyone stuck with such apps often had to bring in actual developers anyway. Unfortunately, the developers were now stuck using rather limited technologies that often took longer to develop with than if C or C++, for example, had just been used in the first place.
Any serious software system will require lots of custom code, and this only comes about through the efforts of actual software developers.
Parse takes that model another step forward and just addresses the most common use case - CRUD applications that an experienced developer could create in their sleep but haven't we done that enough times already?
There will still be occasion when your own server/s are the best or only option but fewer than today's developers want to admit.
Of course, they all do is slightly differently, and there is generally more sandboxing than what you would expect from a traditional PaaS like Heroku. The danger is that by being more complete, they lose focus on their original mission: to bring powerful app-centric functionality to traditional client-side developers.
[1]:http://devcenter.kinvey.com/nodejs/guides/business-logic
[2]:http://msdn.microsoft.com/en-us/library/windowsazure/jj55422...
Unworkable because of security you say? Add encryption.
I actually think that not too many years down the line this type of thing will be common.
http://blog.nitrous.io/2013/06/04/build-parse-web-apps-in-th...
We're still in private beta, but we will be moving to public beta very soon. If you want an invite sooner, ping us on Twitter at @NitrousIO.
They're coming out with all these interested disparate services, they need to provide a coherent story for how developers can use them together. Maybe a sample app or two.
AnyBlog: http://www.anyblog.co
Source: https://github.com/ParsePlatform/AnyBlog
AnyMeme: http://www.anymeme.org
There does not seem to be support for anything like Procfile or package.json / npm, though.