Rails (mixed 2.3 and 3.1, depending on when the app started) via RailsLTS (commercial fork with security patches). I personally love working in Ruby versus every other language I've ever attempted programming in, and Rails really excels at the type of CRUD apps that a) undergird large and increasing portions of the global economy and b) pay my bills. I find I'm far and away more productive at it than any other programming stack I've ever used.
I usually proxy Nginx to Mongrel, though I've got one Nginx with Phusion Passenger. In the future, there will be more of the latter and less of the former.
I use MySQL as my primary database everywhere, mostly due to familiarity. No major complaints, though sentiment among my peers is more towards Postgres.
Substantially every app I write ends up integrating Memcached for ephemeral caching. It does exactly what it says on the tin. I use Redis for permanent storage of things where the "schema" changes frequently (most commonly: per-account or sub-account-object "settings" hashes, where I might accumulate another hash key or three with every new feature I ship) or where I have intermediate results that should be semi-permanent. (e.g. I have per-week and per-month historical summary statistics in Redis, particularly when they're created as a result of querying a slow external API, which describes most of my transaction processors.)
On the front-end side of things, I used to use Prototype but have jQuery for most new projects, purely because the JS community likes it and develops all manner of useful UI widgets that interoperate well. I'm likely going to start a project to justify learning Angular or Backbone at some point, since my existing ways of keeping the UI and app in sync leave more than a little to be desired.
What else? Oh, favorite APIs. Twilio, MailChimp/Sendgrid/Postmark (I do a lot with email), Stripe, and Pin Payments (nee Spreedly).
On the more devopsy side of things: Capistrano / Deprec for deploys and server management. I use Ubuntu VPSes at Rackspace for substantially everything. I'd love to figure out Puppet/Chef/etc for server management but haven't gotten there yet -- it is on the todo list for later in the year, perhaps. I use quiet a bit of server/process monitoring, including Scout, god, Dead Man's Snitch, and a bit of custom cronjobs plus Twilio. (Which should really be PagerDuty but for some reason I never bothered to get started with it.)
For backups, I've used Rackspace Cloud Files (like S3 but on the same bill as my servers) for most things. I currently use Tarsnap for sensitive data, and will probably gradually retrofit all of my backups onto it.
Looking at Monit for handling some processes - right now I'm launching a web browser that takes a screenshot of a web page using Selenium and then kills off the browser process when complete. This takes roughly 20 seconds on a quite powerful server.
It'd be a lot quicker to keep the browser running using a daemon to poll redis for jobs. Monit could kill the browser if it started leaking memory (which always seems to happen) and restart the daemon which would launch a new browser process.
Other stacks I'm interested in:
- Play/Scala and Atmosphere
- Node, Express and Mongo (MEAN)
- Go/Exlir and some front-end framework Angular/Ember/React
Dart and AngularDart on the front end. Scala + Play! Framework in the middle tier. Scala + Akka on the back end. PostgreSQL. Jenkins for CI, Ansible for deployment.
ASP.Net mvc 4, in my opinion its the best platform at the moment. Its as easy to use as ruby on rails but the performance is much much better. C# is a great language that really hits the sweet spot in language features.
The downside is of course being tied to Microsoft but its not that big of a problem.
On the front end Durandal.js Single Page App (similar to angular but MVVM). On the back end is a Rest web service written with ASP.NET Web.Api. Octopus Deploy for deployment.
It's also based on CQRS and DDD so data storage is aggregate based.
I can agree that some of those items seem middle tier. Though the most tools to help with javascript development usually require node to be installed. Even though I won't deploy node to production. Some node modules want to be globally installed, which I'd rather avoid. Thus the use of vagrant/ubuntu to contain the global install.
ElasticSearch and Postgres for databases (it used be Mongo quite often, but I've put that on the shelf).
I would love to build something in Haskell's Snap framework (so what's stopping me? Laziness).