Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Code organization : How does Google organize it's code?

Brief history: I work for a development shop, and we do a lot of ASP.NET based products. As our company portfolio grew, we are facing a tough issue on the development side. We have about 10 modules that we sell to client(s), and we want them to be sold under one url. Consider the analogy to google's services (search/email/finance/etc.).

Each module has its own life-cycle and it's own set of updates that go as their planned releases that don't necessary have to be in sync with other modules.

So, the current structure we have been using is :

  • We have a outermost shell website that contains all the common functionality (user/menu management/roles/etc)
  • This outermost shell (mentioned above) shall have its own library to support its functionality.
  • Every individual module is split into its own web-application and a corresponding library
  • When a build takes place, right now, we write custom msbuild scripts to deploy all modules as a single website.
  • We also have scripts that shall take care of deploying individual modules if necessary without affecting the whole system.

The above setup has been working just fine, until I discovered its issues with scale...i.e., when we have 10 modules in the system, every developer has to download all 10 modules to his local system. Also, I am yet to figure out a way to be able to control the life-cycle of a particular module, while still maintaining the TFS structure intact.

The problem we have right now is to organize the code in TFS that would help us with the following :

  • smaller foot-print on a developer's machine (developer gets the modules he/she is working on) and not everything
  • Individual deployment. Deployment of a single module should not affect the others at any point of time (unless its a major release...and it shall be a planned release always)
  • Individual life-cycle management : I should necessarily have to be able to maintain multiple versions of the module in TFS and work accordingly.

Platform : TFS 2010, Visual Studio 2010, C#, jQuery, CSS

like image 658
Sash Avatar asked Jul 07 '26 20:07

Sash


1 Answers

I'm not an expert on this, but it seems to me that you need to separate your development process from your access for customers.

The website and its resources should have an independent structure and deployment from the modules.

Your build and deployment scripts should take care of constructing the new production environment from the repositories.

There should be no dependency of the development structure on the structure of the website.

like image 166
Larry Watanabe Avatar answered Jul 10 '26 14:07

Larry Watanabe