top | item 6100659

Ask HN: How can I learn to architect a production web app?

19 points| rman666 | 12 years ago | reply

Hello, HN. I've been programming in a variety of languages as a hobbyist over the years. About a year ago, I started to learn Ruby, Ruby on Rails, and Sintra.

Now, I want to build a production web app. But everything I've read so far seems to be about "toy" applications (to do lists, simple blogging apps, etc.).

I'm looking for suggestions on where to turn to learn about building serious apps -- ones with proper security, admin interfaces, dashboards, analytics, etc.

Any suggestions on books, articles, blogs to follow, etc.? Thanks!

6 comments

order
[+] shailesh|12 years ago|reply
Assuming that you've found an interesting business problem to solve:

1. Write a list of desired features. Next, prioritize those features.

2. Write brief functional specifications for features of highest priority.

3. Decide on how you want to use the software stacks for different tiers, e.g.

   Browser - Bootstrap or Zurb, AngularJS

   Server stack - node.js, Ruby, Python

   Database - MySQL, Postgres

   These examples are sketchy, just to give a feel of things.
4. Research any libraries that automatically handle common functional units, such as authentication and authorization, analytics et al.

5. Some functional units might be implemented more easily by gluing together services. E.g. using New Relic for deep application monitoring, Twilio for cloud communications.

6. Design and implement all functional units.

7. Profit!

8. Write a Thank you HN note, :)

One should do this exercise for a "toy" application like "To Do List" first. It helps remarkably when we go about building serious stuff.

Books: 1. Code Complete by Steve McConnell - worth at least skimming it.

2. Design Patterns by Erich Gamma et al http://www.c2.com/cgi/wiki?DesignPatterns

Also, definitely have a look at Peter Norvig's slides: http://norvig.com/design-patterns

3. About Face 3: The Essentials of Interaction Design by Alan Cooper

4. Writing Effective Use Cases by Alistair Cockburn

Websites: 1. Obviously, HN, :)

2. http://highscalability.com/

It may look like a huge undertaking, but it really isn't. A quote from Michael Abrash seems appropriate here, "Winning a hard race prepares us for the next harder one."

This is just top of the mind; hope this helps.

Good luck.

Edit: formatting.

[+] lishy|12 years ago|reply
Although I don't have a solution to your immediate requirement, I am working on a startup aimed at solving just this kind of problem. In other words, how to go from understanding the basics of a language to using it in an enterprise environment?

The idea is that a user uploads a real working application, then provides a series of guides through the different aspects of the project; configuration, security, mvc, testing, persistence etc

For exmple, using the same application, this guide explains how to configure MVC http://www.lishman.com/project/5#card/278/file/82 and this one how to configure JPA persistence http://www.lishman.com/project/5#card/73/file/103

Unfortunately these examples use Java and Spring, but if by some miracle I can get someone to donate a ruby on rails example, you will be the first to know.

[+] LarryMade2|12 years ago|reply
There are frameworks out there geared for rapid production development, that will get you quite far on your way to that. Some may also have tutorials on how to do production ready stuff with their framework.

If you can't find a book or tutorial; next I would suggest take something that's small and meets your idea of "production" capable, and dissect it. Better is to build a similar concept app to the sample source and try to employ that code and ask questions as you go along.

[+] pastaking|12 years ago|reply
I'd like to know as well. Specifically, other than the actual web app, what proven tools do people use to monitor their service & manage their organization?
[+] michaelmior|12 years ago|reply
New Relic is amazing for monitoring if you're not familiar with setting up your own in-house solution. (Even if you are, it saves you a ton of effort and gives an amazing set of tools for doing performance analysis.)
[+] s3b|12 years ago|reply
A good book on the topic is "Web Operations: Keeping the Data On Time"