Anyone who has looked for a cheaper alternative to hotels or hostels while traveling around the world has probably looked into Airbnb. Having just spent a month in Italy using only Airbnb, I have become very familiar with the entire process, as well as the web application.

Airbnb allows users to input the location they wish to visit, the price range, the dates they wish to stay in that location, and a variety of other filters, which are then aggregated into a map with all of the options that fit their criteria.
The Colosseum was a five minute walk from our Airbnb apartment in Rome
The Colosseum was a five minute walk from our Airbnb apartment in Rome
View from our Airbnb in Portovenere, near Cinque Terre
View from our Airbnb in Portovenere, near Cinque Terre

Users can choose from renting entire houses and apartments, to sharing an apartment with a host or host family.
Selfies with our host family’s cat in Venice
Selfies with our host family’s cat in Venice

After utilizing Airbnb for an entire month, it finally piqued my curiosity as to how Airbnb developed it’s web application. With the simple layout and emphasis on quality images, Airbnb attracts just as much attention in terms of its web development as it does bringing in paying customers. In fact, Airbnb released their JavaScript standards on GitHub in 2012, and it has become one of the most popular and most followed projects on the site.

One of the most interesting aspects of Airbnb is its transformation from a simply stacked JavaScript platform to a more complex stack, as JavaScript expands into new frameworks and libraries and here’s a quick analysis of the overall stack utilized during Airbnb’s evolution and some insights into the changes made for each update.

2009 – The Starting Point
2009
1

Back-End
Rails 2.x is a common MVC web app framework written in Ruby. Rails was a perfect fit for Airbnb, as it encouraged the use of HTML, CSS, and JavaScript for user interfacing. Overall a decent framework for the fledgling Airbnb.
MySQL, an application that is frequently seen in the e-commerce and web database space, is a necessary tool for any back-end developer. It’s the second most popular RDBMS in the world, ergo, a good fit for a company whose main business is ecommerce.

Front-End
Vanilla CSS once a sought after CSS, compared to today’s modernized stylesheets, is repetitive to the point of making it only worthwhile for small projects. Also, its plain approach to CSS makes large projects sloppy and time-consuming. Therefore, not exactly a good fit for a company with a growing audience and an eye for aesthetics.
Prototype.js a JavaScript framework that goes well hand-in-hand with Ruby on Rails. Downside? Prototype extends the DOM.

Overall, not a bad starting point for a brand new company, but on receiving crucial funding from investors and with an easy availability of better web app components, Airbnb was able to developed further.

2012 – Development Phase l
2012
2

Back-End
Alongside a Rails update from 2.x to 3.x, Airbnb added the structural support of Java as a class-based and object-oriented language. This allowed Airbnb to compile their Java code, and the lack of dependencies allowed for the code to run on any platform that supported Java. It’s no surprise that 2012 was also the year that Airbnb launched fully-fledged versions of its iOS and Android applications.
Redis a data structure server that supports both strings and abstract data types, allowing Airbnb to transfer data faster.
HDFS, a scalable and portable file system written in Java that can store large files across multiple machines and it runs concurrently with the user’s operating system, thus allowing Airbnb adaptability across a variety of different operating systems.
Postgres, a standards-compliant ORDBMS that provides another layer of security to Airbnb’s data and its ability to handle heavy traffic on web applications well makes it perfect for Airbnb’s growing number of users utilizing the application.
DynamoDB, a NoSQL database offered by Amazon that rolled out in early 2012, which states that Airbnb picked this one up almost immediately upon its release! DynamoDB’s pricing plan works on a scalable level, thus, allowing Airbnb to pay per throughput rather than per storage.

Front-End
Sass, a dual syntax style sheet language that was a huge upgrade from the tedious Vanilla CSS gives Airbnb the ability for nesting, mixins and variables. A HUGE upgrade from Vanilla, and a good move on Airbnb’s part to move towards smarter code!
O2 is Airbnb’s own bootstrapped CSS framework. Plus side? O2 completely redesigned their webpage. Down side? O2 killed almost all of the old CSS code.
jQuery, the most popular JavaScript library, jQuery is intended to allow developers to write more and do less and also offers an in-library search engine called Sizzle, making it easier to search and select specific items within the code. A good pick by Airbnb, as jQuery’s popularity ensues that regular updates and improvements are made to it.
Backbone, a lightweight JavaScript templating library designed to keep multi-client applications running smoothly. Although it is a good fit for Airbnb, it doesn’t offer data-binding
Handlebars, an another templating library, another case of no data-binding. It’s contribution to Airbnb’s web app is extensibility.

Overall, a huge improvement from the original website. Airbnb adds on a slew of new languages, style sheets, frameworks, and libraries to their tool kit, making for a more responsive and dynamic web app and its update to Postgres to handle heavier site traffic allows for more users to book trips and enjoy views such as this from their accommodations!

Sunrise over the Apennine Mountains in Portovenere.
Sunrise over the Apennine Mountains in Portovenere

2015 – Development Phase ll
2015
3
Back-End
Node.js, an event-driven platform used for real-time web apps, Node.js has been implemented by several heavyweights such as IBM, LinkedIn, Walmart, and Microsoft. Therefore, it’s no surprise that Airbnb decided to add this server-side platform to their stable. Node.js employs modules to handle functionality. A perfect choice for this upcoming e-commerce powerhouse!
Kafka, a real-time data feed message broker, brought on to overhaul Airbnb’s message translation program.
RabbitMQ, forms the message middleware foundation that Kafka resides upon. Rabbit and Kafka together were necessary for this stage in Airbnb’s growth, as they have recently acquired several other companies. Rather than deconstruct and rebuild each acquisitions infrastructure, messaging programs allow for seamless communication between software components that were developed separately.

Front-End
React is a JavaScript library that only handles the user interface in an MVC pattern and is a perfect addition to Airbnb due to its ability to handle high volumes of constantly changing data. React is evident on Airbnb’s homepage, where the data is being manipulated and changed constantly. An excellent choice of library.
CommonJS provides module paths for Node.js, so this was an obvious addition alongside the implementation of Node.js.
ES6 is ES5’s bigger and badder younger sister, adding a slew of new features to the JavaScript-based language. Airbnb is one of the first companies to really jump on ES6, as they are using it to start phasing out Coffeescript from their syntax. For more about Airbnb’s Front-End evolution, refer https://www.slideshare.net/spikebrehm/the-evolution-of-airbnbs-frontend

Conclusion? Airbnb has gone from a simple toolkit to a full tool shed in a matter of just six years, adopting some of the best front- and back-end tools available to developers. Thanks to Airbnb I was able to have the trip of a lifetime simply by utilizing their booking service. Even before I left for Italy, I was able to find unique places to stay in cities such as Cinque Terre, Venice, Florence, and Amalfi.
Overlook next to our Airbnb location on the Amalfi Coast, in Conca dei Marini

Overlook next to our Airbnb location on the Amalfi Coast, in Conca dei Marini

Ultimately, Airbnb’s structural changes over the past six years have shown that the company is striving for greatness. They are making leaps and bounds in terms of adding speed, storage space, security, and scalability into their back end and front end stacks. I will certainly be keeping an eye on the rise of this company, who started with just simple air beds in an apartment to a large scale enterprise worth millions. I would recommend more people to use Airbnb in the future, because they certainly know how to deliver, both through their software and their accommodations! Without Airbnb, I would not have had been able to find such unique accommodations, nor access to the knowledge that our hosts provided us with.