Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Android Development At Scale That Your SysOps Will Love (AnDevCon Santa Clara Dec. 2 2015)

mscheel
December 02, 2015

Android Development At Scale That Your SysOps Will Love (AnDevCon Santa Clara Dec. 2 2015)

Large software teams? Millions of users? There is no time for "works on my machine." Let's dive into professional build tools like Vagrant, Docker and Jenkins to attack the pitfalls of shipping Android at scale. Your Operations team will thank you. This class will cover real-world examples and show how the largest apps in the Play Store are built, tested and performance-enhanced.

mscheel

December 02, 2015
Tweet

More Decks by mscheel

Other Decks in Technology

Transcript

  1. Vagrant • Vagrant provides easy to configure, reproducible, and portable

    work environments built on top of industry-standard technology and controlled by a single consistent workflow to help maximize the productivity and flexibility of you and your team. • To achieve its magic, Vagrant stands on the shoulders of giants. Machines are provisioned on top of VirtualBox, VMware, AWS, or any other provider. Then, industry-standard provisioning tools such as shell scripts, Chef, or Puppet, can be used to automatically install and configure software on the machine.
  2. Vagrant • Recipe is called “Vagrantfile” • You can create

    reproducible and portable environments, excellent for experimentation AND sharing • A single file defines the machine, can be checked into source control • No more “works on my machine”
  3. Vagrant • Learn more at vagrantup.com • $ vagrant up

    • $ vagrant ssh • $ vagrant halt • $vagrant destroy
  4. Docker • Initially written in Go by Solomon Hykes •

    Docker automates the deployment of applications inside software containers, by providing an additional layer of abstraction and automation of operating-system-level virtualization on Linux. • Docker uses resource isolation features of the Linux kernel such as groups and kernel namespaces to allow independent "containers" to run within a single Linux instance, avoiding the overhead of starting and maintaining virtual machines
  5. Docker • Build, Ship, Run • Make your SysAdmin or

    Ops guy happy • Great for apps with distributed resources
  6. Docker • Won’t run on Mac out of the box,

    OS X doesn’t support system-level virtualization even though BSD has jails • boot2docker or run inside vagrant Ubuntu • Google notes • Learn more - docker.com
  7. Jenkins • Java based, forked from Hudson after Oracle drama

    • Continuous Integration software • Monitors execution of builds • Makes it easy for anyone to make a build, turn source into product
  8. Jenkins • Pro Tip: Install in a container, avoid service

    sludge • Pro Tip: Name your jobs consistently • Pro Tip: Clean your workspace! • Pro Tip: Have a process for broken builds
  9. Jenkins • Jenkins builds can be triggered by a commit

    or many other triggers (cron, etc) • Consistently and repeatedly build your project the same way • Started by Kohsuke Kawaguchi
  10. Jenkins • Plugin Support • Publish to Play Store (Google

    Publish) • Git • Gradle • Credentials Binding (secrets) • Findbugs • Android emulator • Android Lint • Checkstyle • DRY • PMD - like findbugs, analyzes byte code for potential glitches • Warnings - Displays compiler warnings • Static Code Analysis - Compiles many of above and puts into a graph
  11. Jenkins • Slaves - can be docker instances • Master

    Slave model allows many builds from one master • Slaves can be local, remote, containers etc
  12. Mark Scheel ✤ @5280mark ✤ github.com/mscheel ✤ Open Source contributions

    to Google Glass and Square ✤ stackoverflow.com/mscheel ✤ speakerdeck.com/mscheel ✤ These slides available soon ✤ lanyrd.com/mscheel ✤ December 3, 2015: AnDevCon, Santa Clara, CA ✤ Your local GDG? ✤ meetup.com/gdg-denver ✤ Visit Denver and speak! You can do it. ✤ www.digitalconstruction.com ✤ www.itriagehealth.com ✤ airbnb.com/c/mscheel ($20 travel credit from me)