boo-box system’s web server infrastructure

boo-box team, July 5th, 2009 - No Responses

During the last couple of years, a series of architectural patterns for web design software have consolidated and become popular through frameworks[bb] , which facilitate the development and maintenance of these systems. Simultaneously, servers had increased accessibility and reduced costs. Creating a web project became a far easier, faster and cheaper thing to do. However, for the project to succeed, there is still one obstacle that is not easy to overcome: scalability.

boo-box has successfully conquered this obstacle and currently has its infrastructure set up in layers capable of being interwoven horizontally, and that are sufficiently robust to serve thousands of requests per minute. Throughout this post we will present some of the practices currently in use to guarantee a good performance from Communications Systems for Social Media such as Ruby, MERB, CouchDB, Thin, Nginx, Beanstalkd. Screenshot do glTail rodando no server Kami

The boo-box infrastructure

Our infrastructure is a combination of different software. Open Source software that have been consolidated for years, such MySQLalong with other more recent ones, which generally speaking have fewer resources, are simpler, or simply more adequate to the specific case.

It is important to note that this post reflects the current infrastructure (May 2009). The rate of new Publishers joining the System and the growth in the number of visits by the Publishers already in the system leads to weekly changes in the structures of the servers, adding new computers or modifying application components. Infraestrutura de servidores web boo-box

Server Identification

Naming servers is always a difficult decision for the development team. Some like to use planets for names, elements of the periodic table, the Greek alphabet. We like to use characters from the anime Dragon Ball Z.

Static Files

Static files are those that do not depend on server processing, such as images, CSSs[bb], JavaScripts[bb]. At boo-box, they are located in a sub-domain that leads directly to a dedicated server, thus relieving the load from our load balancers.

Our static files are previously uploaded to the RAM memory, increasing the system’s response time. This system runs on the HTTP server nginx.

Load Balancers

Load balancers are the servers that receive user requests and redirect the load to one of the application servers. At boo-box there are two load balancers, both linked to DNS for boo-box.com. The load balancer must respond very quickly, and therefore it does not process business rulesets. Each of the servers runs on the HTTP server nginx.

Application clusters

The application cluster is composed of the group of servers that process our Business rule. It is this cluster that decides what ad will be shown in the window, what happens when there is a user click, and what to do with the data of a new Publisher registering in the system.

Each server runs roughly 100 instances do Ruby framework MERB using the HTTP server Thin (no, we do not use RubyOnRails :).

Database Cluster

When information needs to be registered in our system, such as registering a new Publisher, changes in preference settings, blocking an advertiser, and so on, this information is stored in our database.

The boo-box database cluster contains the Vegeta (Master) server, which receives information to be recorded in the database, and also secondary Bulma and Ubb (Slave) servers, where the application servers read the information stored in the database.

As a reader pointed out, the character’s name is actually Uub, but the ninja who named the server was typing with his toes because our arms were raised gathering energy for a massive Genki Dama. Typing with your toes is hard to do, and he hit the wrong key, and the server name has stuck as Ubb :)

Splitting the writing up and reading of data onto different servers was one of the most efficient solutions we took during the last few months to improve uptime performance of the boo-box system.

The database cluster runs on a MySQL base, split between the servers writing up data and those reading it.

The true story of a company contributing to the Free Software community :)

We use the Sequel as ORM in the communication between the application and the database. When we needed to duplicate the database, recreating the Master and Slave structures, the Sequel was unable to read Slave, no matter how carefully we followed protocol.

We got in touch with the ORM developers on the IRC channel, and after running tests for a few hours; we were able to solve the problem working together.

This is only the most recent example in which boo-box has contributed to the Free Software[bb] dcommunity in different ways. We are active in this area because we truly believe that our technology here at boo-box is a fruit of the labors of Open Source.

System log cluster

All operations occurring on our servers are recorded in the system log. Which windows were seen, ads clicked, actions taken on partner websites: every action is recorded on our log.

From time to time we process the log raw, we generate statistics and we create a backup. Thus we free up theo log raw to receive more data without losing past data, and simultaneously keep a good system performance.

We use Analogger as a log component. However, problems with performance and scalability led us to look for another solution. Currently the system log is being transferred to a MySQL structure, and being split between Master (data writing) and Slave (data reading) servers.

Cache Products

The majority of ads displayed on boo-box windows are for products commercialized through eCommerce. As product information does not need to be kept for a long time we create a temporary cache of product information.

The cache lends the system solidity, and allows the system to continue functioning even if the eCommerce page is slow in responding or goes out of business.

Our cache products structure is composed of two main components:

Queue

We use Beanstalkd as a queue service for product requests. Each boo-box window has associated tags, and each new tag not yet cached is inserted into this queue. This queue will be consumed in the next few seconds, and thus will interfere with the application’s functionality.

There is an independent service that consumes the queue, going to eCommerce websites to search for products related to each tag and placing that data in the cache servers.

Product Cache cluster

Each server that stores product data runs CouchDB, a database of JSON documents.

The main resource consumed by these servers is HD space – they occupy hundreds of gigabytes in just a few days, especially because of the diverse nature of the offers displayed on the boo-box system; there are literally millions of different products.

The result

Screenshot do glTail rodando no servidor Korin

During the last few weeks boo-box’s response time and uptime has visibly improved due to the above-mentioned measures taken. These measures are the result of the hard work and experience of our ninjas.

If you have any suggestions or questions, please feel free to comment; the suggestion box is there for your use :)

Posted by Marco Gomes and Mauricio Maia.

Marco Gomes at the Prêmio Jovem Brasileiro – Young Brazilian Award – InterCon and Peixe Grande

boo-box team, September 19th, 2008 - No Responses

Marco Gomes receives the Prêmio Jovem Brasileiro – Young Brazilian Award

Marco Gomes, co-founder of boo-box, received the Prêmio Jovem Brasileiro – Young Brazilian Award, this Monday, September 22nd 2008, for his work in the corporate arena.

The Prêmio Jovem Brasileiro, presented by Serginho Groisman, is conceded based on merit and active participation of the youth in society. The nomination is awarded after an in-depth selection, performed by a committee formed by journalists, columnists, critics and research conducted with the young users on the event’s official website.

Marco Gomes, the Director of Technology at boo-box, receives this award for his performance as an entrepreneur, helping transform what was a late-night project into an innovative and successful company, well placed in the Internet Marketing sector.

Musicians CéU, Ivete Sangalo, Teatro Mágico and Negra Li, the films Cidade Dos Homens and Cidade de Deus, comedians Rafinha Bastos and Rodrigo Scarpa (o Repórter Vesgo) and athletes Sandro Dias and Karen Jones are some of the people who have been previously honored with this Award.

Marco Gomes at FF’08 (part of the InterCon)

Marco Gomes will be one of the lecturers at FF’08, an event happening within the Intercon 2008.

IMAGINE A CYCLE OF LECTURES IN RAVE FORMAT. HAVE YOU IMAGINED IT? WELL, FORGET IT. IT’S SO MUCH MORE. FF’08. THE INNOVATIVE IMASTERS INTERCON 2008 EVENT.

The FF’08 is a series of fast, provocative, and intelligent lectures pertaining to the digital revolution in Brazil, no beating around the bush. They will be 35 minute lectures, moderated by Luli Radfahrer, PhD in Digital Communication.

The event also will also witness the participation of other Brazilian Internet Greats, such as Cris Dias (our partner with Vilago), Fábio Seixas, Ariel Alexandre, Manoel Lemos and Frederick van Amstel.

Jury Member at the Peixe Grande Award

Marco Gomes was also invited to be a member of the jury at the Peixe Grande competition, run by the WebDesign Magazine, to elect the best Brazilian digital cases.

How to use the booboxfy plugin to earn more with boo-box

Marco Gomes, August 12th, 2008 - No Responses

How to Install

Download the .zip file from the booboxfy plugin.

Unzip the file.

file.png

Using an FTP software, place the Folder in the WordPress plugins directory: wp-content/plugins

window.png

Head to the plugins administration page and activate booboxfy.

picture-45.png

Open the boo-box plugin settings page.

picture-46.png

First fill out your boo-profile email. Then edit the options by filling in your chosen partner, your affiliate code (in the case of BuscaPé it’s the site_origem code), and maximum limit of products for each widget. The width field is optional.

picture-47.png

Congratulations! Your booboxfy plugin is configured and working!

How it works

To insert offers for contextualized products into your content, open a Post edit page.

There are two ways to add offers to your content once you are on this page:

picture-48.png

Adding Offers Inserted into Content

Click on the “Monetize” button to see examples of images and videos that can be monetized trough boo-box.

wp5.png

Fill out the required fields with commercial tags, which will associate products to related images or videos. Sort multiple tags using commas to display more than one type of product. Click on the “Apply” button on the bottom of the screen.

picture-49.png

From now on, once and image or video is clicked on, it will display the products contextualized in your content.

boo-boxcom.jpeg

Adding a contextualized widget at the end of a post

Fill out the required “tags to boo-box widget” field with the key-words that will link to the best products related to your content. Sort multiple tags using commas to display more than one type of product.

picture-50.png

Save the post

wp5.png

A boo-widget with products related to your content will be inserted at the end of the post.

widget.png

See an example of a post using booboxfy: I’m part of the Revolution.

Softpedia 100% clean

Kamila Brenha, August 7th, 2008 - No Responses

Boo-box has received the 100% Clean seal from the website Softpedia.

Softpedia is an online library that contains in its archives over 70,000 free software’s. All the library’s software’s are periodically tested and analyzed to guarantee the quality of their code.

Softpedia’s 100% Clean seal is just one more guarantee that the boo-box plugin for firefox does not contain viruses, malware or adware, and can be installed in any computer, without restrictions.

To earn this seal we performed important updates to our tagging-tool, such as:

a. improving security
b. correcting bugs
c. checking compatibility with Firefox 3

softpedia_clean.gif

boo-box always aims to improve the quality of the service it renders, and this seal is a just reward for the excellent wok done by the ninjas!

boo-box, an example of successful business entrepreneurship!

Kamila Brenha, June 6th, 2008 - No Responses

boo-box has been cited in several publications as an example of successful entrepreneurship that is increasingly conquering more and more devotees around the globe each day.

One of the first magazines to mention boo-box was Webdesign. In an interview with them, Marco Gomes outlined his reasons for leaving behind a successful career at AgênciaClick to invest in boo-box, launching a new phase in his own career. As a good entrepreneur, he states:

(…) I was seeking new challenges. When the boo-box project began to gain momentum, I began to understand the scope of what we could really do based on the concepts we had created, and I was really, really excited by the prospect. I wanted to dedicate myself full time to the project.” The rest of the interview goes on to detail the company’s first steps, seeking out the investment partner Monashees, and following through to the goals and dreams boo-box foresees in its future.

Você S/A magazine also cited boo-box in their April 2008 edition, in an interview with Marcos Tanaka, the company’s CEO, who declares having a “taste for risk-taking” as he, just like Marco Gomes, left behind a successful career as a consultant to associate himself to boo-box, even knowing that this would mean radically altering his lifestyle. He concludes with:

(…) I wanted to be a pioneer, an entrepreneur, I wanted to create more.

Marcos Tanaka –CEO of boo-box

Marcos Tanaka –CEO of boo-box

boo-box’s most recent venture into printed press was in Exame magazine. In a recent article about the internet, the publication cites boo-box as one of the many examples of successful businesses. In the article, Marco Gomes presents relevant data on boo-box’s performance and asserts that it was the interest and coverage of specialized media that drew the attention of investor partners Monashees.

The Ikwa Team — a company in which Monashees have chosen to invest as well — was also cited in the interview as an example of successful business entrepreneurship.

The Ikwa Team — a company in which Monashees have chosen to invest as well — was also cited in the interview as an example of successful business entrepreneurship.

boo-box’s first television apparition was on the news interest segment Mundo S/A, on GloboNews channel, in a very interesting bulletin featuring Marco Gomes (founder) and Marcos Tanaka (CEO), who explained the emergence of boo-box in the market and as well as the company’s expectations for the future. Eric Acher, managing partner of Monashees, also spoke about their investment in the company, citing the reasons why boo-box drew their attention, and which of their characteristics were vital to the final decision of investing.

(…) we saw young entrepreneurs with enormous potential, who are entrepreneurs by choice. They could be following careers in more established corporations but instead chose to go out on a limb and face the challenge of following their own vision.

boo-box has been earning a name for itself, slowly working its way towards its main goal: Enriching your content!

News in search of products and API!

Dirceu Pauka, June 4th, 2008 - No Responses

Hi! My name is Dirceu and as a boo-box ninja I’ve come to announce some big news:

It is now possible to use more than one tag in our product search system. This was already possible with the widget on the fixed list, but now the function is available both in the virtual shopping window and directly through the API. The tags need to be separated by commas, for example:

wii, lcd tv 52

Our API now has the limit parameter to define the maximum number of products that will be returned. The new URLs for API access look like this:

http://boo-box.com/api/format:json/aff:amazonid/uid:boobo-20/tags:book+javascript/limit:6

Or, for use with jQuery JSONP:

http://boo-box.com/api/format:json/aff:amazonid/uid:boobo-20/tags:book+javascript/jsonp:jsonp123/limit:6

In the event that this parameter is not defined, the pattern will be for 6 products. Our API users please note: update your applications.

Recently the widgets also underwent some changes. Back when we launched, the search product happened simultaneously in the same script call and would end up slowing down the entire page’s loading. Now the product search is asynchronous, and therefore should no longer interfere with loading and annoy the users on your website.

We hope that with these innovations it will be easier to use our tools to increase your profits and offer increasingly better recommendations for your users!