

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

Hello, HN. I&#x27;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.<p>Now, I want to build a production web app. But everything I&#x27;ve read so far seems to be about &quot;toy&quot; applications (to do lists, simple blogging apps, etc.).<p>I&#x27;m looking for suggestions on where to turn to learn about building serious apps -- ones with proper security, admin interfaces, dashboards, analytics, etc.<p>Any suggestions on books, articles, blogs to follow, etc.? Thanks!
======
shailesh
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](http://www.c2.com/cgi/wiki?DesignPatterns)

Also, definitely have a look at Peter Norvig's slides:
[http://norvig.com/design-patterns](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/](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
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](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](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
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
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
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
A good book on the topic is "Web Operations: Keeping the Data On Time"

