Hi all,

After one year of negotiations (demos, quotes, etc.) and a couple of
months of development, by the end of December we released a pilot
version of our pharo based solution.
The solution consists of a native mobile app (Android), with Pharo 2.0
servers, using Seaside for the web UI, Seaside-REST for the mobile app
API and Zinc Websockets to certain "live" features of the web. The
persistence is GLORP using the native PostgreSQL driver.

I can't disclose much more about the customer or the solution yet, it
is a private solution for a multinational consumer goods company
operating in Argentina.

But I can comment on the numbers:
* The pilot will end in ~40 days
* It involves 50 mobile users of the Android app using it daily.
* An nginx frontend for static files and http proxying to the pharo app servers
* Two pharo images as servers, one for the web interface, and one for
the REST API. The image is the same, they work as two separate app
servers to make use of each server and for improved reliability (I
don't want the seaside failures, which has been none yet, to affect
the REST API).
* Everything running in DigitalOcean droplets based in NYC (they add
~180ms of latency from here but their price/value equations is
unmatched).

Some performance numbers:
* The Pharo server uptime has been no less than perfect, the first 10
days with uninterrupted uptime. Only shutdown to upgrade the image
(yesterday night).
* The load is minor, with peaks of ~30 concurrent mobile users during
a few "business" moments of the day, the server never passed 15% of
CPU use. The disk I/O is also small, but the database is small too
(growing daily).

If the pilot succeeds the plan is to extend the user base to ~1000
mobile users. But some water must pass under the bridge before
thinking of that. And if it ever happens, it is going to be gradual.

Some anecdotal info
I quit my Smalltalk full time job at InfOil (after 9 years of
employment) to dedicate 100% to my new company. So I'm betting big on
this. By now I'm the sole Smalltalk developer (devops?) of the
company. Time has never been more scarce than nowadays.

Why Pharo?
* Because it is the best open source Smalltalk ("inspired") out there.
* Because I have 10+ years of experience with Smalltalk I can't throw
away in the context of rapid prototyping and business domain modelling
(emphasis on this).
* It was a key advantage during the negotiations, we could show a
wireframed live app even before our competition prepared a PowerPoint
presentation.

The development process with Pharo has been rudimentary, only
Monticello packages and a couple of workspace scripts to provision new
images.
I still can't get my head around Metacello. But honestly I haven't
dedicated as much time as it needs to be learnt. Having used VAST
ENVY's ConfigurationMaps successfully in the past is a proof I can
learn Metacello.

During the last years at InfOil we were using git with Dolphin
Smalltalk, with CI after every git push to the main repo. This was
also linked with our issue tracking system, in order to know in which
build a certain issue was fixed. We used Dolphin's PAX's files (CVS
friendly), Gitlab, JetBrain's TeamCity and YouTrack
I'd like to do the same using Monticello's FileTree, BitBucket and
JIRA (CI server to be defined).

Hopefully with some time, I'll be able to dive deeper into this.
My learning of Pharo tooling hasn't been straightforward, but maybe
because I'm old and spoiled with other Smalltalk dialects (VSE, VAST,
Dolphin).
I was managing the Android code (java) with git branching and merging
way before I learnt how to use Monticello. Managing the code (files)
was the only advantage of working with Eclipse/Java. Everything else
was a burden compared with Pharo.

I wanted to share my experiences through a blog, but haven't had time
to set it up as I'd like, and by now this email is going to be all I
can share. After the pilot, we can talk about reporting a success
story for Pharo. I felt like this during the last week:
http://devopsreactions.tumblr.com/post/68251866244/successful-deployment-at-last


Best regards,

Esteban A. Maringolo
CTO (aka DevOps), http://trentosur.com

Reply via email to