Front Office - generates pages with groups and products, and also allows you to add a product to the cart and place an order. Image storage - gives photos of the goods in the right size. All other pictures are static, downloaded from the GAE server. Back office - administrative part, allows you to edit products and groups, view orders, upload photos for products, as well as upload price updates, availability and new positions.
Django templates are used to generate almost all pages. ')
In general, nothing complicated :)
Problems encountered during development.
Currently there are problems with loading / unloading a large amount of data. At the moment I use CSV to download updates (prices, products, availability). If a large amount of data is exceeded, the timeout for 30 seconds is exceeded. In addition, the GAE restriction on 30 write requests (put). Accordingly, it is impossible to update more than 30 products in one pass. This moment can be optimized and update the data is not a piece, but immediately packs because in GAE, the record in the storage can be done in whole arrays.
Data upload for Yandex.Market takes almost 10 seconds (200 products), 90% of the time is HTML generation.
Also, the problem with filters and sorting of goods by characteristics has not been solved yet. Because The database is not relational, it is difficult to attach characteristics to goods. As an option to do for each type of product manually in the code its own fixed set of characteristics, it is possible as long as the types of goods are no more than ten.
Advantages of GAE
No need to purchase / configure / maintain your own server. Automatic scaling. The same access time to the application at different loads. Ease of development.
Total
The speed of the store does not depend on the number of visitors. Currently, at 500-600 hits per day, 0.3-0.4 hours of processor time out of 6.5 is used.
After posting in the comments to the topic: “ Should you use Google AppEngine? ” Links to the store were used resources: - 0.44 CPU hours of 6.5 - 28000 requests from 1.3 million - 210 MB of 1 GB of outgoing traffic - 5.59 GB of 116 GB obtained from the API - 0,22 hours from 62,11 used by storage In just 12 hours - 700 hits (180 hosts).
This is micro-effect:
UPDATE 12.30: Pictures are push :)
Statistics for this morning
Resource consumption is indicated from 11.00 (daily statistics reset). Over the past 9 hours there were 4 errors with the opening of the main page: Timeout - 2pcs. Datastore_v3.RunQuery () - 2 pcs. And also about 20 errors with loading images. All timed out due to waiting for a response from the repository. In any case, I included billing in the morning, but I suspect that the limit of free quotas for today will most likely not be exceeded.
Secret experiment number 2
All screenshots in this topic are given from my other GAE application. Billing on it is off. The first screenshot in the topic is still on the main page of the habr. No errors have been noticed yet. 10 thousand hits per hour. - caching is not used, the image is sent directly from the repository.
UPD: 01.20.2010
Store Presentation on GDD2009
You can watch the video from GDD 2009 where I talk about our online store on App Engine.