Thursday, July 17, 2014

The Technologies behind Tourismosa

Much like the photo mosaics it creates, Tourismosa is a mashup of a variety of Internet technologies. For people interested in how things work, here's a brief description of what's involved:

The website runs on a LAMP virtual server, utilizing Amazon's EC2 service. Currently, the resources available are quite modest, equivalent to a dual-core CPU with 4GB of RAM. As demand grows, I'll migrate the server to better hardware.

Submitted photos and pictures generated from them are stored on Amazon S3. S3 also stores the site's daily database backup.

Varnish is used to improve site responsiveness. Zend OPCache is present for the same reason.

Gearman is used to run time-consuming tasks such as tile-matching and mosaic rendering. Gearman Manager is used to manage worker processes.

The OAuth 2.0 client created by thephpleague is used for authentication through social login. Currently, four networks are supported: Facebook, Microsoft Live, Google Plus, and Instagram.

The GD PHP extension handles reading and writing of JPEG files as well as image scaling.

The QB PHP extension is used in computationally intensive image analyses and manipulations. QB-accelerated code also handles geo-location of IP addresses (using data files provided by MaxMind).

Mapbox is used to obtain city names from GPS coordinates (reverse geocoding). The web service is also used to parse search queries (forward geocoding).

On the frontend, JQuery is used for basic Ajax transactions.

Dropzone.js handles both “drag-and-drop” and “browse-to-file” uploads. The file submission feature is supplemented by Dropbox's Chooser API, allowing rapid transfer of already-uploaded files within the Amazon cloud.

Leaflet provides the interface for maps that appear on this website.


No comments:

Post a Comment