Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am interested in learning of the different procedures and environments it takes to maintain a large application. For example, in my case I use a CentOS local server, where I develop my applications and I use a version control system on some applications, then I upload it to my host-gator account and launch it live. It is a very simple procedure and at the moment that is the only one I know. I have only worked as a freelancer, so I would be interested in the procedures and environments of large tech companies.

What are the general do's and don'ts of development for large app? Best practices?

share|improve this question
add comment

migrated from stackoverflow.com Oct 28 '11 at 23:45

This question came from our site for professional and enthusiast programmers.

closed as not a real question by Aaronaught, ChrisF Oct 29 '11 at 17:04

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.If this question can be reworded to fit the rules in the help center, please edit the question.

3 Answers

up vote 3 down vote accepted

First and foremost you need a layered architecture design for large applications. This is going to help with maintenance the application, as well as making future changes much easier to handle for you and your development team.

Below is a basic three tired application example

  • The data layer manages the physical storage and retrieval of data
  • The business layer maintains business rules and logic
  • The presentation layer houses the user interface and related presentation code.

I would also decided what SDLC (Software Development Life Cycle) you are going to implement and stick with it.

Make sure you are consistent with documentation in the event a developer leaves. (The replacement will greatly appreciate this)

These are just some basic fundamentals. I would do a search on Enterprise applications and best practices that are associated with developing and deploying them.

share|improve this answer
add comment

Not sure if you're talking about "how to get your app from development into production and what systems or platforms are involved? " From my experience there are at least three types of systems involved, there can be many more depending on the number of test stages and teams having to perform test on the app.

  • A local dev environment where the developer can build up and tear down the app as much as he likes
  • An integration test platform (preferably a virtual box) where your builds are deployed to so testers can see how the developed pieces are fitting together
  • An acceptance test platform which should be an exact copy of your production hardware, so you can perform tests on it as if it were a production environment
  • A production environment, this is the environment where nothing gets deployed to unless all previous steps have been signed off on. This guarantees that all parties involved are aware of the transition.

These are just the platforms, usualy there is also a script required for setting up the data-tier of your app, again this may be virtualised or deliverd on the real hardware. It can be as simple as creating a new database from scratch, copying a file or migrating existing data into a new shape.

share|improve this answer
add comment

Microsoft's Patterns and Practices and Patterns of Enterprise Application Architecture by Martin Fowler would be my suggestions for starting points.

Something to consider is what are you meaning by large? Would Google, Amazon.com, Facebook or Twitter be considered large or are they too super-sized for what you mean?

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.