This is a great overview, thanks for sharing. On Mon, Oct 17, 2016 at 3:05 PM, Masashi UMEZAWA <[email protected]> wrote:
> Hi all, > > From Torsten, I've received a request to post about some technical > details of ALLSTOCKER (http://pharo.org/success/AllStocker) . > I hope these notes will be interesting to Pharo web developers. > > - Seaside / Teapot > We are using Seaside as a main framework for ALLSTOCKER marketplace. > Seaside's component architecture is great for extending application in > an organized way. > ALLSTOCKER prototype was originally composed of only 3 class > categories. Now these were gradually grown to 70 categories. But we > still feel that they are manageable. > We also use Teapot for building Web-based API in a quick way. Recently > we've built webhook handlers for integration with other services. > > - Templating with Mustaside > We need a lot of responsive-design web pages for supporting various > mobile devices. (It is important especially for Southeast Asian > countries, where tablets are popular than PCs). > We would like to adopt existing Twitter Bootstrap templates for saving > time. So, Mustaside was our choice. > http://smalltalkhub.com/#!/~MasashiUmezawa/Mustaside > Before Mustaside, there were a lot of noisy #div: sends in our code. > Now they are gone. > > - Localization > Our business target is world-wide. So localization is very important > topic. Currently ALLSTOCKER supports 4 languages and we will add > Chinese languages soon. > Translation strings are not only in Smalltalk code, but also in > Mustache templates. So we selected Soup for extracting translatable > strings in those templates. > http://smalltalkhub.com/#!/~PharoExtras/Soup > For managing translations, we use Gettext package. > http://smalltalkhub.com/#!/~PharoExtras/Gettext > > - Databases > For transactional data, we chose Glorp. Although there are mapping > costs, we prefer RDB (Postgres). It is reliable for handling precious > order-related data. > However, for supporting complex search of machines, we use Neo4j - a > graph database. It supports very powerful query language called > Cypher. > We can avoid complex table joins and get aggregated results faster. > http://smalltalkhub.com/#!/~MasashiUmezawa/Neo4reSt > > - Keyword search > ALLSTOCKER supports free keyword search. We selected Elasticsearch for > search-engine. Elasticsearch has elaborated searching facilities and > those are easily accessible via REST API. > We have extended the existing Elasticsearch client for Pharo 5. > https://github.com/newapplesho/elasticsearch-smalltalk > > - Deployment > We are using AWS Elastic Load Balancer and running Nginx as a > front-end web server. Two back-end Pharo images are running and > load-balanced with sticky sessions. > It was sort of difficult to find the appropriate simultaneous number > of database connections and Pharo processes. We feel ALLSTOCKER is > pretty stable for now, but we need to adjust more for expanding our > services. > > Best regards, > -- > [:masashi | ^umezawa] > >
