advertise
« Architecture Template Advice Needed | Main | Yandex Architecture »
Monday
Feb252008

Any Suggestions for the Architecture Template?

Here's my template for describing the architecture of a system. The idea is to have people fill out this template and that then becomes the basis for a profile. This is how the Friends for Sale post was created and I think that turned out well. People always want more detail, but realistically you can only expect so much.

The template is definitely too long, but it's more just a series of questions to jog people's memories and then they can answer whatever they think is important.

What I want to ask is if you can think of any things to add/delete/change in the template? What do you want to know about the systems people are building? So if you have the time, please take a look and tell me what you think.

Getting to Know You



* What is the name of your system and where can we find out more about it?
* What is your system is for?
* Why did you decide to build this system?
* How is your project financed?
* What is your revenue model?
* How do you market your product?
* How long have you been working on it?
* How big is your system? Try to give a feel for how much work your system does.
* Number of unique visitors?
* Number of monthly page views?
* What is your in/out bandwidth usage?
* How many documents, do you serve? How many images? How much data?
* How fast are you growing?
* What is your ratio of free to paying users?
* What is your user churn?
* How many accounts have been active in the past month?

How is your system architected?



* What is the architecture of your system? Talk about how your system works in as much detail as you feel comfortable with.
* What particular design/architecture/implementation challenges does your system have?
* What did you do to meet these challenges?
* How does your system evolve to meet new scaling challenges?
* Do you use any particularly cool technologies are algorithms?
* What do you do that is unique and different that people could best learn from?
* What lessons have you learned?
* Why have you succeeded?
* What do you wish you would have done differently?
* What wouldn't you change?
* How much up front design should you do?
* How are you thinking of changing your architecture in the future?

How is your team setup?



* How many people are in your team?
* Where are they located?
* Who performs what roles?
* Do you have a particular management philosophy?
* If you have a distributed team how do you make that work?
* What skillets does your team possess?
* What is your development environment?
* What is your development process?
* Is there anything that you would do different or that you have found surprising?

What infrastructure do you use?



* Which languages do you use to develop your system?
* How many servers do you have?
* How is functionality allocated to the servers?
* How are the servers provisioned?
* What operating systems do you use?
* Which web server do you use?
* Which database do you use?
* Do you use a reverse proxy?
* Do you collocate, use a grid service, use a hosting service, etc?
* What is your storage strategy? DAS/SAN/NAS/SCSI/SATA/etc/other?
* How much capacity do you have?
* How do you grow capacity?
* Do you use a storage service?
* Do you use storage virtualization?
* How do you handle session management?
* How is your database architected? Master/slave? Shard? Other?
* How do you handle load balancing?
* Which web framework/AJAX Library do you use?
* Which real-time messaging frame works do you use?
* Which distributed job management system do you use?
* How do you handle ad serving?
* Do you have a standard API to your website? If so, how do you implement it?
* If you use a dynamic language which instruction caching product to use?
* What is your object and content caching strategy?
* What is your client side caching strategy?
* Which third party services do you use to help build your system?

How do you manage your system?



* How do check global availability and simulate end-user performance?
* How do you health check your server and networks?
* How you do graph network and server statistics and trends?
* How do you test your system?
* How you analyze performance?
* How do you handle security?

How do you handle customer support?



How do you decide what features to add/keep?



* Do you implement web analytics?
* Do you do A/B testing?

! How is your data center setup?

* How many data centers do you run in?
* How is your system deployed in data centers?
* Are your data centers active/active, active/passive?
* How do you handle syncing between data centers and fail over and load balancing?
* Which firewall product do you use?
* Which DNS service do you use?
* Which routers do you use?
* Which switches do you use?
* Which email system do you use?
* How do you handle spam?
* How do you handle virus checking of email and uploads?
* How do you backup and restore your system?
* How are software and hardware upgrades rolled out?
* How do you handle major changes in database schemas on upgrades?
* What is your fault tolerance and business continuity plan?
* Do you have a separate operations team managing your website?
* Do you use a content delivery network? If so, which one and what for?
* How much do you pay monthly for your setup?

! Miscellaneous

* Who do you admire?
* Have you patterned your company/approach on someone else?
* Are there any questions you would add/remove/change in this list?

Reader Comments

There are no comments for this journal entry. To create a new comment, use the form below.

PostPost a New Comment

Enter your information below to add a new comment.
Author Email (optional):
Author URL (optional):
Post:
 
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>