At Airbnb, Building Big iOS Apps

By acquiring new tools and processes, including modern writing systems, module types, and dev applications, the Airbnb iOS team tackles the challenge of developing mobile application code and complexity. The main obstacle for the Airbnb team is to circumvent the Xcode reduction, especially when indexing files and home code, and its “incompatibility” to code publishing programs:

Not only are Xcode project files difficult to review in the drawing queries, but the incidence of general conflicts and race conditions in these project files increases with the large team of engineers going in high speed.

Xcode is very powerful and provides a level of integration that is not compatible with iOS and other devices by Apple, but lacks some key features to Airbnb engineers, such as network cache for writing, viewing requirements for a graphic designer, and a way to incorporate custom steps such as trusts.

To send all of these features to developers, Airbnb selected Facebook Buck, a writing system based on the same Starlark language used by Google’s Bazel. Buck allows you to develop Xcode workspaces from commentary graphics, thus ensuring a level of integration with the iOS development ecosystem. Instead of using the Xcode native caching program, which was not able to take advantage of the artifact caching, Airbnb expanded Buck and therefore created Xcode project projects that called Buck arbitrarily for the script. This allows writing steps up to 5-6 times faster when the Buck HTTP cache is enabled.

In addition to improving their infrastructure, Airbnb engineers designed a search-engine system for their code base by organizing modules into groups called so-called module types. Each module type has a set of visibility rules that define which dependencies are allowed within the module type.

For example, such a module is a feature, which is UIViewController, which can include child UIViewControllers but not other features. Features can communicate with each other only through the feature interface, which is another type of module with wider visibility.

According to Airbnb engineers, these types of modules act as a table of contents for all codecs and translate their definitions instantly.

The third upgrade to the Airbnb iOS infrastructure is Dev Apps, which is on demand, ephemeral Xcode workspace for a module and its reliability.

The popularity and success of Android and iOS Dev Apps derived from a simple axiom: reducing your IDE size to edited files only slows down the development loop.

Dev applications are created using a command line tool which uses Buck to find what kind of files are needed to build the required module. The tool also develops a container application that hosts the feature and lets it work. Most Dev applications can take at least two minutes, Airbnb engineers say.

This general approach, which led to the definition of nearly 1,500 modules, also made it possible to force code in the effective and advanced test environment.

Airbnb’s way of building iOS applications in size is more than you can cover here, so don’t miss the original writing if you’re interested.

We will be happy to hear your thoughts

      Leave a Reply

      AppleiPhonestop - Apple iPhone News and Rumours All Day
      Logo
      Enable registration in settings - general
      Compare items
      • Laptops (0)
      Compare
      0