We announced the general availability of Splunk Mobile for Android at .conf19! This has been an 11-month long journey for the Android team, and we were extremely proud to showcase the app live during the Day Two Products Keynote.
As Splunk’s first Android team, our team of two engineers had a lot of groundwork to lay. In addition to establishing an infrastructure at Splunk for developing Android projects, we were expected to deliver a mature Android application given the learnings from the publicly available iOS app. Being a nascent team, we found it challenging to balance between not only building features for the upcoming app, but also laying the best foundation for our future team members. As we worked to ensure feature parity between the iOS and Android apps, we held a high bar for quality through rapid iterations and frequent app updates.
There were some easy (and not-so-easy) technical decisions that we made while quickly working towards our GA milestone. One initial question was deciding which programming language to use: Kotlin or Java? Since there was no legacy code, we decided to start with Kotlin from the get-go. While we were not Kotlin experts, this seemed like the right decision, since Google has been heavily investing in it for several years now. Looking back, this was indeed the right choice, as the language is much more succinct than Java, and everyone on the team loves it.
A harder decision was choosing to pay the initial technical price to set up test automation from the very beginning. Even though this painful process required many dedicated man-hours, it allowed us to identify bugs early on in the development cycle, before code got merged into the master branch. This made product releases much more rapid and helped us tremendously with code refactors and early diagnosis of issues.
Another decision that helped us stay in sync with iOS was aligning shared components between the two platforms. While we didn’t go as far as choosing cross-platform solutions, we did decide to share native artifacts like string definitions, instrumentation keys and protobuf schemas. This kept us aligned in terms of our established contracts with downstream servers and services like localization and analytics tools.
|Left to Right: Ike Huang, Nathan Argroves, Fabio Hirata, Dan Lee Jo. Nate and Fabio started the Android team, which Dan and Ike then joined.|
Halfway through the project, the Android team doubled in size. Because of our early focus on infrastructure setup, the new members ramped up quickly and could immediately start building features and integrating services. Since then, we have been adopting many of the Android platform’s latest and greatest features, including Jetpack components, AndroidX libraries, Firebase Remote Config and more. Working within the Splunk infrastructure also meant that we wanted to plug ourselves into current tools and services that other teams were using. To date, we have successfully adopted infrastructure tools such as Docker, Jenkins, Artifactory and Firebase.
Having short release cycles was essential for us to manage risk and ensure on-track app development. This rapid feedback loop allowed us to release an initial Alpha in April followed by an internal Beta in July. We announced the public Beta at the end of September and then went GA at .conf19. Throughout the process of building Splunk Mobile for Android, we have released six internal SDKs to support the main app. These SDKs have laid the foundation for all upcoming Android apps on our roadmap.
We are looking forward to Phase Two, where we will start putting our SDKs to the test as we expand the product portfolio. If you are passionate about Android development and interested in working with Kotlin and the latest Jetpack components at a massive scale, then come join our Android team! We’re just getting started with Android at Splunk, and we have many new and exciting projects in the pipeline, including Splunk TV, Splunk Phantom, Splunk Augmented Reality and more.
Also, don't forget to check out some exciting new Android Positions at Splunk!