This post is for Day 12 of Mercari Advent Calendar 2023, brought to you by @fp from the Mercari Mobile Architects team.
So, you’ve probably noticed those Mercari updates popping up on your phone every week, right? Well, behind the scenes, it’s like a bustling beehive of developers, designers, and tech wizards working their magic to keep things fresh.
Picture this: teams of brainiacs tackling bugs, spicing up features, and making your Mercari experience top-notch. It’s like a non-stop party of creativity!
But here’s the kicker – getting all this awesomeness to your phone isn’t as easy as hitting the "send" button. Nope, it’s more like a high-tech dance involving rewritten apps, fancy coding languages, and this cool thing called a monorepo (think of it as the ultimate team hangout for iOS and Android).
And then there’s the drama of distribution – your Mercari updates don’t just magically appear. They make a grand entrance through the Apple App Store or Google Play Store, like VIP guests at a fancy party.
So, how do they pull off this tech extravaganza?
Three must-haves: a solid process, the right tools, and a squad of tech superheroes making sure everything runs smoothly.
It’s like orchestrating a blockbuster movie release, but for your Mercari app!
Let’s dive into the Mercari mobile release rollercoaster, and understand how the apps are delivered every week to your device.
Mobile tech stack
First, some background on Mercari mobile apps: we launched entirely rewritten apps last year, using Swift/SwiftUI for iOS, and Kotlin/Jetpack Compose for Android. You can read more details about it in this dedicated article.
We use a per-platform monorepo approach, this means all iOS teams commit in the iOS repository, and all Android teams commit in the Android repository.
Our CI/CD system leverages Bazel on iOS, and Develocity on Android, you can read more about our mobile infrastructure in this article (iOS), and this article (Android).
The process
This process has been fine-tuned over the years to handle the tech tango of updates.
Imagine a grand plan laid out in advance, complete with release dates and deadlines. But, hold on, because of holidays and events, the schedule might shimmy a bit. No worries, though – planning ahead lets each team synchronize their dance moves.
To ensure top-notch quality, each release faces the ultimate test – the "Release Judgement."
It’s a mix of cool automated tests and hands-on checks. Before this show begins, we need a release build with all the teams’ changes.
Every week, there’s a race against the clock as engineers hustle to commit their code before branch cut, hit up the CI to build and test it, and cross their fingers for a green light!
If all goes well, it’s off to the stores! But, if a glitch appears – a pesky bug or a regression – the team steps in. Options abound, from fixing on the fly to turning off feature flags. Skipping releases is a last resort – nobody wants to be left out of the release party!
Submitting to the stores is the fancy part, usually done automatically. Once approved, the release takes a leisurely stroll over the week, slowly reaching 100% rollout. We keep a close eye, ready to tackle any crashes or customer hiccups.
And just like that, when the app has conquered every corner, it’s time to hit replay for the next release!
But wait, there’s more behind the scenes – policies for rejections, handling production issues, and even a performance check to ensure the app is always in its prime.
The tooling
Now, let’s spill the beans on the tech magic behind our weekly Mercari app updates – our toolbox!
At Mercari, we’re all about using cool tools to make our app releases a breeze. This year, we added a shiny new tool to the mix called Runway. Picture it as the superhero of coordination, bringing together all the action in both iOS and Android releases.
Runway is like the backstage manager, linking different services and gathering all the juicy details in one spot. It’s not just a showstopper; it’s also a time-saver, automating bits and pieces of the process. Plus, it’s got this superpower – giving specific access to different folks. That way, everyone can pitch in without accidentally stepping on each other’s toes.
This wizardry extends to our internal scripts and CI magic, playing nice with our buddy Slack – our go-to for chit-chat. Picture this: every release gets its own secret hideout in Slack, where we track progress and dive into release gossip if needed.
But hey, we’re not resting on our laurels – we’re always jazzing up our toolbox to make the release gig even smoother. It’s like fine-tuning a favorite instrument for the perfect melody!
The team
Now, let’s shine the spotlight on the true heroes of our mobile release show – the dream team!
No doubt, the heart and soul of our smooth-as-butter release process is our fantastic squad of engineers. These aren’t just ordinary tech wizards; they’re the maestros who’ve shaped our process and tooling into what they are today.
Picture this: over the years, a bunch of these engineering legends have poured their heart and soul into setting up the gears and gadgets we rely on. And guess what? We’ve got a special A-team handling the release action.
This crew is a mix of QA engineers, Mobile Platform gurus, and rockstar Mobile engineers from different teams.
Because our releases are like a tech party for everyone, having this diverse mix is gold. The Mobile Platform team keeps the tools in tip-top shape, tweaking them for perfection. And the process gets a makeover every week, thanks to these tireless tinkers.
Now, not everyone is on stage every week – we’ve got this cool round-robin process going on. The release owners take turns, ensuring a fresh vibe each time. And to keep things in check, we’ve got our dedicated QA and Mobile Platform pals monitoring the backstage magic.
Let’s talk real talk – these champs make the magic happen every week. And if some inevitable hiccup occurs (because, let’s face it, tech has its moments), we can count on this dream team to swoop in, fix things up, and ensure the show goes on.
And hey, in the past year alone, this crew has dropped over 100 releases! Now, that’s a round of applause-worthy performance! 👏🎉
What’s next?
In the grand finale, even though our release process is like a well-choreographed dance, there’s always room for improvement. We’re on a mission to dial up the automation, kicking manual steps to the curb. Testing and some hands-on tweaks are on our hit list for full automation.
Looking ahead, our dream is a fully automated spectacle – a daily extravaganza where everything from building to testing happens like clockwork, with a bold delivery target of under an hour. It’s the next step in our tech evolution, and we’re reaching for the stars!
Tomorrow’s article will be by me again. Look forward to it!