SlideShare a Scribd company logo
1 of 75
Download to read offline
Marcos Barreto
Mobile Project Leader @ MercadoLivre
Scaling the Mobile Development
Android DevConference 2016 - São Paulo
This is our vision
Building the foundation to Build a 3B Company by FY20
Context
How it all started… ?
This is our vision
Building the foundation to Build a 3B Company by FY20
Context
Nowadays...
❖ +52.000 live only from Mercado Livre
❖ +15 countries
❖ ~ 3 sales per second
❖ ~100 MM registered users
❖ 15% to 40% of SI are from Mobile!
❖ +16 MM downloads
Publicidade
This is our vision
Building the foundation to Build a 3B Company by FY20
From an old world to a new world
Publicidade
This is our vision
Building the foundation to Build a 3B Company by FY20
This is our vision
Building the foundation to Build a 3B Company by FY20
Microservices
http://developers.mercadolibre.com/
This is our vision
Building the foundation to Build a 3B Company by FY20
Microservices
https://www.acamica.com/mercadolibre
Publicidade
Desktop
Search Team
Desktop
VIP Team
Desktop
MyML Team
iOS Team
Home
Search
VIP
MyML
Desktop
Home Team
Android Team
Home
Search
VIP
MyML
Desktop iOS
Android
Home Team
Desktop iOS
Android
Search Team
Desktop iOS
Android
VIP Team
Desktop iOS
Android
MyML Team
Android Architecture
Team
iOS Architecture
Team
This is our vision
Building the foundation to Build a 3B Company by FY20
Context
What we wanted to do?
❖ Different teams collaborating in the development of
mobile apps.
❖ Improve code quality & reduce bugs.
❖ Facilitate the mobile development.
❖ Support new teams in the native app development.
❖ Agile development, new features to prod faster.
Scaling the
Mobile Code2
This is our vision
Building the foundation to Build a 3B Company by FY20
Scaling the Mobile code
Status
● Tightly coupled code
● Constant merge and rebase problems
● Manual and unstable testing
● Difficult coordination between teams.
● Publishing to the store: manually, error prune
This is our vision
Building the foundation to Build a 3B Company by FY20
From an old world to a new world
This is our vision
Building the foundation to Build a 3B Company by FY20Componentization
How did we do it ?
3
This is our vision
Building the foundation to Build a 3B Company by FY20
Componentization
MELI APP
Shared Libs & SDKs
Navigation Module
Home
Module
Search
Module
VIP
Module
Legacy
App
CHO
Module
This is our vision
Building the foundation to Build a 3B Company by FY20
Componentization
Characteristics
❖ Each module is a repository in Github
❖ Different Front-Ends are build based on the OS
(Android,iOS) and our MELI SDK (set of libraries).
❖ Each module is an application that works on its own
(with a TestApp).
This is our vision
Building the foundation to Build a 3B Company by FY20
Componentization
iOS Android OS
Core Libs
ML APP
MELI SDK
Home Search VIP
Commons UI Rest Client
Authentication Networking
Track lib 3
Track lib 1 Track lib 2
Track lib 4
Notifications
CHO SI . . .
How do the modules
communicate ?4
This is our vision
Building the foundation to Build a 3B Company by FY20
How do the modules communicate ?
This is our vision
Building the foundation to Build a 3B Company by FY20
How do the modules communicate ?
Navigation
● Modules don't know each other and the navigation is
through predefined URLs
● 100% decoupled and each module is “Deep Linking” Ready
Intent intent = new Intent(this);
intent.setData(
Uri.parse("myscheme://myhost/segment1?queryparam1=val1&queryparam2=val2"));
startActivity(intent);
This is our vision
Building the foundation to Build a 3B Company by FY20
How do the modules communicate ?
Navigation
● Parameters are passed by query string or path params.
○ Pro: Simple and known.
○ Con: The Uri has to be parsed.
mycompanydeeplink://item/meuItemId
This is our vision
Building the foundation to Build a 3B Company by FY20
Navigation Example
...
<activity
android:name=".activities.MyActivity"
android:launchMode="singleTop"
android:theme="@style/Theme.MLTheme">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="myhost"
android:scheme="myscheme" />
</intent-filter>
</activity>
...
This is our vision
Building the foundation to Build a 3B Company by FY20
Navigation Example
public class MyActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
…
// myscheme://myhost/segment1?queryparam1=val1&queryparam2=val2
if (getIntent().getData() != null) {
Uri deeplink = getIntent().getData();
List<String> segments = deeplink.getPathSegments();
String queryparam1 = deeplink.getQueryParameter("queryparam1");
String queryparam2 = deeplink.getQueryParameter("queryparam2");
…
Wrapper 2.0
5
This is our vision
Building the foundation to Build a 3B Company by FY20
Wrapper
Meli API
Mobile
Middleware
(Wrapper)
This is our vision
Building the foundation to Build a 3B Company by FY20
Wrapper
Meli API
Mobile
Middleware
(Wrapper)
text
translations
behaviour
This is our vision
Building the foundation to Build a 3B Company by FY20
Wrapper
Meli API
Mobile
Middleware
(Wrapper)
text
translations
behaviour
This is our vision
Building the foundation to Build a 3B Company by FY20
Wrapper 2.0
This is our vision
Building the foundation to Build a 3B Company by FY20
Wrapper 2.0
{
id: "sign_up",
title: "Ainda não tem conta?",
button:
{
text: "Cadastre-se grátis",
text_color: "#666666",
background_color: "#ffffff"
},
action: "meli://register",
image: "http://static.ml.com/2b7c0ecb042a5.png",
background_color: "#ffffff"
}
This is our vision
Building the foundation to Build a 3B Company by FY20Wrapper 2.0
❖ The backend response can change based on the App version
(design the frapi with that in mind).
❖ The backend is easily modified, the apps are not.
❖ Backend changes must always be backward compatible.
Quality assurance
6
This is our vision
Building the foundation to Build a 3B Company by FY20
Quality assurance
A successful
Git Branching
Model
masterdevelop release
This is our vision
Building the foundation to Build a 3B Company by FY20
Quality assurance
Release Process
❖ We didn't have a clear process.
❖ Releases were made when we thought it was a "good time".
❖ With many teams working with us, that needed to change.
This is our vision
Building the foundation to Build a 3B Company by FY20
Quality assurance
Agile Release Trains
❖ Every 2 weeks a new version is released.
❖ Every 2 weeks, the train passes by and takes with it all
merged PRs.
❖ A release train is implemented with
a Milestone in Github.
This is our vision
Building the foundation to Build a 3B Company by FY20
Quality assurance
Agile Release Trains
This is our vision
Building the foundation to Build a 3B Company by FY20
Quality assurance
Agile Release Trains
❖ The release is defined by a Milestone in Github.
➢ The tag is created with the Changelog.md file.
➢ The "train" is created with everything merged to
develop.
❖ After the release, a manual regression is run, and if no issues
are found ⇒ Progressive Rollout
This is our vision
Building the foundation to Build a 3B Company by FY20
Agile Release Trains
Release Manager
❖ Assigning Pull Requests.
❖ Tests for manual regression.
❖ Checking if everything is ok.
❖ Creating the "What's New"
❖ Creating the APK and rolling it out.
❖ Following issues.
This is our vision
Building the foundation to Build a 3B Company by FY20
Quality assurance
How to I add a new Feature ?
❖ Must have:
➢ Unit tests
➢ Screenshots of the changes
➢ Changes for the What's New
➢ New Regression tests
➢ Dependencies declaration.
This is our vision
Building the foundation to Build a 3B Company by FY20
Quality assurance
How to I add a new Feature ?
❖ Will my feature be added ?
➢ Only if the PR was made with time.
➢ Code quality is up to the standards.
➢ Doesn't have bugs.
➢ CR was made and changes were made.
➢ Dependencies are met.
❖ The feature will be added only if it's merged
This is our vision
Building the foundation to Build a 3B Company by FY20
Agile Release Trains
Agile Release Trains
★ Better communication.
★ Different teams can estimate based on this schedule.
★ New versions are better tested and controlled.
This is our vision
Building the foundation to Build a 3B Company by FY20
Quality assurance
Status: Testing Automation
❖ Tests were ran manually in the developer machine.
❖ Unstable tests.
❖ Each team added new tests, increasing a lot the number of
tests.
❖ To scale ⇒ everything must be automated.
This is our vision
Building the foundation to Build a 3B Company by FY20
Quality assurance
Android Testing Pyramid
This is our vision
Building the foundation to Build a 3B Company by FY20
Quality assurance
Testing Automation
This is our vision
Building the foundation to Build a 3B Company by FY20
This is our vision
Building the foundation to Build a 3B Company by FY20
Quality assurance
Continuous Integration
❖ Tests were ran manually by the developer.
❖ Hard to tell when the tests were green or not.
❖ The work of the Release Manager was nearly impossible!.
This is our vision
Building the foundation to Build a 3B Company by FY20
Continuous Integration in Github
One pull request to fix X
One pull request to fix Y
One pull request to fix Z
This is our vision
Building the foundation to Build a 3B Company by FY20
Continuous Integration in Github
One pull request to fix X
One pull request to fix Y
One pull request to fix Z
This is our vision
Building the foundation to Build a 3B Company by FY20
Quality assurance
Continuous Integration
This is our vision
Building the foundation to Build a 3B Company by FY20
Quality assurance
Continuous Integration
This is our vision
Building the foundation to Build a 3B Company by FY20
Quality assurance
Continuous Deployment
❖ The APK is generated in Travis
❖ How ?
● If the last commit to release or master contains [ci deploy].
● A tag and a release is created in github using as changelog
the Changelog.md file.
● The APK is automatically published to HockeyApp and to
the PlayStore in Alpha.
This is our vision
Building the foundation to Build a 3B Company by FY20
This is our vision
Building the foundation to Build a 3B Company by FY20
Quality assurance
Code Review
❖ Code standards.
❖ Improve code quality and documentation.
❖ Share good practices.
❖ Reduce bugs.
❖ Accept constructive comments.
Well… how that
worked out ??6
We had one big-fat-repo
Distributed development
This is our vision
Building the foundation to Build a 3B Company by FY20Pull Request of a new feature...
This is our vision
Building the foundation to Build a 3B Company by FY20Reduced crashes
● App crashes down from ~10.000/day to less than 1000/day
Challenges
7
Distributed bugs
Evangelize good practices
This is our vision
Building the foundation to Build a 3B Company by FY20
Mercado Livre Experience
http://mercadolivreexperience.com.br/2016/
cupom AndroidDev 20% desconto tem comida gratis!!
Marcos Barreto
@marbarfa

More Related Content

What's hot

Salesforce developer
Salesforce developerSalesforce developer
Salesforce developershanthi priya
 
Constantly Contributing Pretty Patches FLCD
Constantly Contributing Pretty Patches FLCDConstantly Contributing Pretty Patches FLCD
Constantly Contributing Pretty Patches FLCDMark Casias
 
Don't use create react app
Don't use create react appDon't use create react app
Don't use create react appNikhil Kumaran S
 
Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...
Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...
Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...Matt Raible
 
DevOps + MongoDB Realm Serverless Functions = 🤩
DevOps + MongoDB Realm Serverless Functions = 🤩DevOps + MongoDB Realm Serverless Functions = 🤩
DevOps + MongoDB Realm Serverless Functions = 🤩Lauren Hayward Schaefer
 
Automating the API Product Lifecycle
Automating the API Product LifecycleAutomating the API Product Lifecycle
Automating the API Product LifecyclePronovix
 
API Developer Experience: Why it Matters, and How Documenting Your API with S...
API Developer Experience: Why it Matters, and How Documenting Your API with S...API Developer Experience: Why it Matters, and How Documenting Your API with S...
API Developer Experience: Why it Matters, and How Documenting Your API with S...SmartBear
 
What's This React Native Thing I Keep Hearing About?
What's This React Native Thing I Keep Hearing About?What's This React Native Thing I Keep Hearing About?
What's This React Native Thing I Keep Hearing About?Evan Stone
 
Get Hip with JHipster - Colorado Springs Open Source User Group 2021
Get Hip with JHipster - Colorado Springs Open Source User Group 2021Get Hip with JHipster - Colorado Springs Open Source User Group 2021
Get Hip with JHipster - Colorado Springs Open Source User Group 2021Matt Raible
 
Evolving Mobile Architectures
Evolving Mobile ArchitecturesEvolving Mobile Architectures
Evolving Mobile Architecturessgleadow
 
API Design first with Swagger
API Design first with SwaggerAPI Design first with Swagger
API Design first with SwaggerTony Tam
 
Amazon Final internship presentation
Amazon Final internship presentationAmazon Final internship presentation
Amazon Final internship presentationSteven Nguyen
 
Leaping Forward: Finding The Future of Your API Docs
Leaping Forward: Finding The Future of Your API DocsLeaping Forward: Finding The Future of Your API Docs
Leaping Forward: Finding The Future of Your API DocsPronovix
 
Hello PhoneGap
Hello PhoneGapHello PhoneGap
Hello PhoneGapmwbrooks
 
ApacheCon 2011
ApacheCon 2011ApacheCon 2011
ApacheCon 2011mwbrooks
 
Going Native With React
Going Native With ReactGoing Native With React
Going Native With ReactEric Nograles
 
Git with t for teams
Git with t for teamsGit with t for teams
Git with t for teamsSven Peters
 
The Hitchhiker's Guide to Building a Progressive Web App
The Hitchhiker's Guide to Building a Progressive Web AppThe Hitchhiker's Guide to Building a Progressive Web App
The Hitchhiker's Guide to Building a Progressive Web AppChristopher Nguyen
 

What's hot (20)

Salesforce developer
Salesforce developerSalesforce developer
Salesforce developer
 
Constantly Contributing Pretty Patches FLCD
Constantly Contributing Pretty Patches FLCDConstantly Contributing Pretty Patches FLCD
Constantly Contributing Pretty Patches FLCD
 
Don't use create react app
Don't use create react appDon't use create react app
Don't use create react app
 
Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...
Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...
Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...
 
DevOps + MongoDB Realm Serverless Functions = 🤩
DevOps + MongoDB Realm Serverless Functions = 🤩DevOps + MongoDB Realm Serverless Functions = 🤩
DevOps + MongoDB Realm Serverless Functions = 🤩
 
Are you ready to adopt GraphQL?
Are you ready to adopt GraphQL?Are you ready to adopt GraphQL?
Are you ready to adopt GraphQL?
 
Automating the API Product Lifecycle
Automating the API Product LifecycleAutomating the API Product Lifecycle
Automating the API Product Lifecycle
 
API Developer Experience: Why it Matters, and How Documenting Your API with S...
API Developer Experience: Why it Matters, and How Documenting Your API with S...API Developer Experience: Why it Matters, and How Documenting Your API with S...
API Developer Experience: Why it Matters, and How Documenting Your API with S...
 
What's This React Native Thing I Keep Hearing About?
What's This React Native Thing I Keep Hearing About?What's This React Native Thing I Keep Hearing About?
What's This React Native Thing I Keep Hearing About?
 
Get Hip with JHipster - Colorado Springs Open Source User Group 2021
Get Hip with JHipster - Colorado Springs Open Source User Group 2021Get Hip with JHipster - Colorado Springs Open Source User Group 2021
Get Hip with JHipster - Colorado Springs Open Source User Group 2021
 
Evolving Mobile Architectures
Evolving Mobile ArchitecturesEvolving Mobile Architectures
Evolving Mobile Architectures
 
API Design first with Swagger
API Design first with SwaggerAPI Design first with Swagger
API Design first with Swagger
 
Cake Php Consultant
Cake Php ConsultantCake Php Consultant
Cake Php Consultant
 
Amazon Final internship presentation
Amazon Final internship presentationAmazon Final internship presentation
Amazon Final internship presentation
 
Leaping Forward: Finding The Future of Your API Docs
Leaping Forward: Finding The Future of Your API DocsLeaping Forward: Finding The Future of Your API Docs
Leaping Forward: Finding The Future of Your API Docs
 
Hello PhoneGap
Hello PhoneGapHello PhoneGap
Hello PhoneGap
 
ApacheCon 2011
ApacheCon 2011ApacheCon 2011
ApacheCon 2011
 
Going Native With React
Going Native With ReactGoing Native With React
Going Native With React
 
Git with t for teams
Git with t for teamsGit with t for teams
Git with t for teams
 
The Hitchhiker's Guide to Building a Progressive Web App
The Hitchhiker's Guide to Building a Progressive Web AppThe Hitchhiker's Guide to Building a Progressive Web App
The Hitchhiker's Guide to Building a Progressive Web App
 

Similar to Android DevConference - Scaling Mobile Development

Introducción a Open Platform - La API Rest de Mercado Libre
Introducción a Open Platform - La API Rest de Mercado LibreIntroducción a Open Platform - La API Rest de Mercado Libre
Introducción a Open Platform - La API Rest de Mercado Libremelidevelopers
 
Introducción a Open Platform - La API Rest de Mercado Libre.
Introducción a Open Platform - La API Rest de Mercado Libre. Introducción a Open Platform - La API Rest de Mercado Libre.
Introducción a Open Platform - La API Rest de Mercado Libre. melidevelopers
 
Herramientas para sacar el mayor rendimiento de tu app por Google
Herramientas para sacar el mayor rendimiento de tu app por Google	Herramientas para sacar el mayor rendimiento de tu app por Google
Herramientas para sacar el mayor rendimiento de tu app por Google melidevelopers
 
A Day in the Life of a HipChat Developer
A Day in the Life of a HipChat DeveloperA Day in the Life of a HipChat Developer
A Day in the Life of a HipChat DeveloperAtlassian
 
Benvenuti nella “API Economy”
Benvenuti nella “API Economy”Benvenuti nella “API Economy”
Benvenuti nella “API Economy”Codemotion
 
Scaling & Aligning Mobile Product Management / ProductTank Lisbon February 2016
Scaling & Aligning Mobile Product Management / ProductTank Lisbon February 2016Scaling & Aligning Mobile Product Management / ProductTank Lisbon February 2016
Scaling & Aligning Mobile Product Management / ProductTank Lisbon February 2016Arne Kittler
 
CWIN17 telford api management, practical implementation experience - david ru...
CWIN17 telford api management, practical implementation experience - david ru...CWIN17 telford api management, practical implementation experience - david ru...
CWIN17 telford api management, practical implementation experience - david ru...Capgemini
 
Fast Delivery DevOps Israel
Fast Delivery DevOps IsraelFast Delivery DevOps Israel
Fast Delivery DevOps IsraelAdrian Cockcroft
 
Intro to Hybrid Mobile Development && Ionic
Intro to Hybrid Mobile Development && IonicIntro to Hybrid Mobile Development && Ionic
Intro to Hybrid Mobile Development && IonicFioriela Bego
 
Intro to Hybrid Mobile Development && Ionic
Intro to Hybrid Mobile Development && IonicIntro to Hybrid Mobile Development && Ionic
Intro to Hybrid Mobile Development && IonicCommit Software Sh.p.k.
 
Mobile first index webinar
Mobile first index webinarMobile first index webinar
Mobile first index webinarBotify
 
TDX19 - Accelerate DevOps with GitLab and Salesforce
TDX19 - Accelerate DevOps with GitLab and SalesforceTDX19 - Accelerate DevOps with GitLab and Salesforce
TDX19 - Accelerate DevOps with GitLab and SalesforceDoug Ayers
 
InterCon 2016 - SLA vs Agilidade: uso de microserviços e monitoramento de cloud
InterCon 2016 - SLA vs Agilidade: uso de microserviços e monitoramento de cloudInterCon 2016 - SLA vs Agilidade: uso de microserviços e monitoramento de cloud
InterCon 2016 - SLA vs Agilidade: uso de microserviços e monitoramento de cloudiMasters
 
MobiSiteGalore - Now any one can build a mobile website
MobiSiteGalore - Now any one can build a mobile websiteMobiSiteGalore - Now any one can build a mobile website
MobiSiteGalore - Now any one can build a mobile websiteAkmin Technologies Pvt Ltd
 
Building serverless apps with Go & SAM
Building serverless apps with Go & SAMBuilding serverless apps with Go & SAM
Building serverless apps with Go & SAMLeon Stigter
 
How to feature flag and run experiments in iOS and Android
How to feature flag and run experiments in iOS and AndroidHow to feature flag and run experiments in iOS and Android
How to feature flag and run experiments in iOS and AndroidOptimizely
 
Matteo Santagata - Is your project scaling right? The BEE case study - Codemo...
Matteo Santagata - Is your project scaling right? The BEE case study - Codemo...Matteo Santagata - Is your project scaling right? The BEE case study - Codemo...
Matteo Santagata - Is your project scaling right? The BEE case study - Codemo...Codemotion
 
AWS 如何協助客戶建立 DevOps 流程
AWS 如何協助客戶建立 DevOps 流程AWS 如何協助客戶建立 DevOps 流程
AWS 如何協助客戶建立 DevOps 流程Amazon Web Services
 

Similar to Android DevConference - Scaling Mobile Development (20)

Introducción a Open Platform - La API Rest de Mercado Libre
Introducción a Open Platform - La API Rest de Mercado LibreIntroducción a Open Platform - La API Rest de Mercado Libre
Introducción a Open Platform - La API Rest de Mercado Libre
 
Introducción a Open Platform - La API Rest de Mercado Libre.
Introducción a Open Platform - La API Rest de Mercado Libre. Introducción a Open Platform - La API Rest de Mercado Libre.
Introducción a Open Platform - La API Rest de Mercado Libre.
 
Herramientas para sacar el mayor rendimiento de tu app por Google
Herramientas para sacar el mayor rendimiento de tu app por Google	Herramientas para sacar el mayor rendimiento de tu app por Google
Herramientas para sacar el mayor rendimiento de tu app por Google
 
A Day in the Life of a HipChat Developer
A Day in the Life of a HipChat DeveloperA Day in the Life of a HipChat Developer
A Day in the Life of a HipChat Developer
 
Benvenuti nella “API Economy”
Benvenuti nella “API Economy”Benvenuti nella “API Economy”
Benvenuti nella “API Economy”
 
Scaling & Aligning Mobile Product Management / ProductTank Lisbon February 2016
Scaling & Aligning Mobile Product Management / ProductTank Lisbon February 2016Scaling & Aligning Mobile Product Management / ProductTank Lisbon February 2016
Scaling & Aligning Mobile Product Management / ProductTank Lisbon February 2016
 
WhiteLotusCorpPresentation
WhiteLotusCorpPresentationWhiteLotusCorpPresentation
WhiteLotusCorpPresentation
 
Getty/IO - Business Presentation 2017
Getty/IO - Business Presentation 2017Getty/IO - Business Presentation 2017
Getty/IO - Business Presentation 2017
 
CWIN17 telford api management, practical implementation experience - david ru...
CWIN17 telford api management, practical implementation experience - david ru...CWIN17 telford api management, practical implementation experience - david ru...
CWIN17 telford api management, practical implementation experience - david ru...
 
Fast Delivery DevOps Israel
Fast Delivery DevOps IsraelFast Delivery DevOps Israel
Fast Delivery DevOps Israel
 
Intro to Hybrid Mobile Development && Ionic
Intro to Hybrid Mobile Development && IonicIntro to Hybrid Mobile Development && Ionic
Intro to Hybrid Mobile Development && Ionic
 
Intro to Hybrid Mobile Development && Ionic
Intro to Hybrid Mobile Development && IonicIntro to Hybrid Mobile Development && Ionic
Intro to Hybrid Mobile Development && Ionic
 
Mobile first index webinar
Mobile first index webinarMobile first index webinar
Mobile first index webinar
 
TDX19 - Accelerate DevOps with GitLab and Salesforce
TDX19 - Accelerate DevOps with GitLab and SalesforceTDX19 - Accelerate DevOps with GitLab and Salesforce
TDX19 - Accelerate DevOps with GitLab and Salesforce
 
InterCon 2016 - SLA vs Agilidade: uso de microserviços e monitoramento de cloud
InterCon 2016 - SLA vs Agilidade: uso de microserviços e monitoramento de cloudInterCon 2016 - SLA vs Agilidade: uso de microserviços e monitoramento de cloud
InterCon 2016 - SLA vs Agilidade: uso de microserviços e monitoramento de cloud
 
MobiSiteGalore - Now any one can build a mobile website
MobiSiteGalore - Now any one can build a mobile websiteMobiSiteGalore - Now any one can build a mobile website
MobiSiteGalore - Now any one can build a mobile website
 
Building serverless apps with Go & SAM
Building serverless apps with Go & SAMBuilding serverless apps with Go & SAM
Building serverless apps with Go & SAM
 
How to feature flag and run experiments in iOS and Android
How to feature flag and run experiments in iOS and AndroidHow to feature flag and run experiments in iOS and Android
How to feature flag and run experiments in iOS and Android
 
Matteo Santagata - Is your project scaling right? The BEE case study - Codemo...
Matteo Santagata - Is your project scaling right? The BEE case study - Codemo...Matteo Santagata - Is your project scaling right? The BEE case study - Codemo...
Matteo Santagata - Is your project scaling right? The BEE case study - Codemo...
 
AWS 如何協助客戶建立 DevOps 流程
AWS 如何協助客戶建立 DevOps 流程AWS 如何協助客戶建立 DevOps 流程
AWS 如何協助客戶建立 DevOps 流程
 

More from iMasters

O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani MonteiroO que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani MonteiroiMasters
 
Postgres: wanted, beloved or dreaded? - Fabio Telles
Postgres: wanted, beloved or dreaded? - Fabio TellesPostgres: wanted, beloved or dreaded? - Fabio Telles
Postgres: wanted, beloved or dreaded? - Fabio TellesiMasters
 
Por que minha query esta lenta? - Suellen Moraes
Por que minha query esta lenta? - Suellen MoraesPor que minha query esta lenta? - Suellen Moraes
Por que minha query esta lenta? - Suellen MoraesiMasters
 
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...iMasters
 
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalvesORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalvesiMasters
 
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...iMasters
 
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
Arquitetando seus dados na prática para a LGPD - Alessandra MartinsArquitetando seus dados na prática para a LGPD - Alessandra Martins
Arquitetando seus dados na prática para a LGPD - Alessandra MartinsiMasters
 
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...iMasters
 
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana ChahoudDesenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana ChahoudiMasters
 
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
 Use MDD e faça as máquinas trabalharem para você - Andreza Leite Use MDD e faça as máquinas trabalharem para você - Andreza Leite
Use MDD e faça as máquinas trabalharem para você - Andreza LeiteiMasters
 
Entendendo os porquês do seu servidor - Talita Bernardes
Entendendo os porquês do seu servidor - Talita BernardesEntendendo os porquês do seu servidor - Talita Bernardes
Entendendo os porquês do seu servidor - Talita BernardesiMasters
 
Backend performático além do "coloca mais máquina lá" - Diana Arnos
Backend performático além do "coloca mais máquina lá" - Diana ArnosBackend performático além do "coloca mais máquina lá" - Diana Arnos
Backend performático além do "coloca mais máquina lá" - Diana ArnosiMasters
 
Dicas para uma maior performance em APIs REST - Renato Groffe
Dicas para uma maior performance em APIs REST - Renato GroffeDicas para uma maior performance em APIs REST - Renato Groffe
Dicas para uma maior performance em APIs REST - Renato GroffeiMasters
 
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
7 dicas de desempenho que equivalem por 21 - Danielle MonteiroiMasters
 
Quem se importa com acessibilidade Web? - Mauricio Maujor
Quem se importa com acessibilidade Web? - Mauricio MaujorQuem se importa com acessibilidade Web? - Mauricio Maujor
Quem se importa com acessibilidade Web? - Mauricio MaujoriMasters
 
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da SilvaService Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da SilvaiMasters
 
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto PascuttiErros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto PascuttiiMasters
 
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...iMasters
 
Construindo aplicações mais confiantes - Carolina Karklis
Construindo aplicações mais confiantes - Carolina KarklisConstruindo aplicações mais confiantes - Carolina Karklis
Construindo aplicações mais confiantes - Carolina KarklisiMasters
 
Monitoramento de Aplicações - Felipe Regalgo
Monitoramento de Aplicações - Felipe RegalgoMonitoramento de Aplicações - Felipe Regalgo
Monitoramento de Aplicações - Felipe RegalgoiMasters
 

More from iMasters (20)

O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani MonteiroO que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
 
Postgres: wanted, beloved or dreaded? - Fabio Telles
Postgres: wanted, beloved or dreaded? - Fabio TellesPostgres: wanted, beloved or dreaded? - Fabio Telles
Postgres: wanted, beloved or dreaded? - Fabio Telles
 
Por que minha query esta lenta? - Suellen Moraes
Por que minha query esta lenta? - Suellen MoraesPor que minha query esta lenta? - Suellen Moraes
Por que minha query esta lenta? - Suellen Moraes
 
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
 
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalvesORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
 
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
 
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
Arquitetando seus dados na prática para a LGPD - Alessandra MartinsArquitetando seus dados na prática para a LGPD - Alessandra Martins
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
 
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
 
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana ChahoudDesenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
 
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
 Use MDD e faça as máquinas trabalharem para você - Andreza Leite Use MDD e faça as máquinas trabalharem para você - Andreza Leite
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
 
Entendendo os porquês do seu servidor - Talita Bernardes
Entendendo os porquês do seu servidor - Talita BernardesEntendendo os porquês do seu servidor - Talita Bernardes
Entendendo os porquês do seu servidor - Talita Bernardes
 
Backend performático além do "coloca mais máquina lá" - Diana Arnos
Backend performático além do "coloca mais máquina lá" - Diana ArnosBackend performático além do "coloca mais máquina lá" - Diana Arnos
Backend performático além do "coloca mais máquina lá" - Diana Arnos
 
Dicas para uma maior performance em APIs REST - Renato Groffe
Dicas para uma maior performance em APIs REST - Renato GroffeDicas para uma maior performance em APIs REST - Renato Groffe
Dicas para uma maior performance em APIs REST - Renato Groffe
 
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
 
Quem se importa com acessibilidade Web? - Mauricio Maujor
Quem se importa com acessibilidade Web? - Mauricio MaujorQuem se importa com acessibilidade Web? - Mauricio Maujor
Quem se importa com acessibilidade Web? - Mauricio Maujor
 
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da SilvaService Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
 
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto PascuttiErros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
 
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
 
Construindo aplicações mais confiantes - Carolina Karklis
Construindo aplicações mais confiantes - Carolina KarklisConstruindo aplicações mais confiantes - Carolina Karklis
Construindo aplicações mais confiantes - Carolina Karklis
 
Monitoramento de Aplicações - Felipe Regalgo
Monitoramento de Aplicações - Felipe RegalgoMonitoramento de Aplicações - Felipe Regalgo
Monitoramento de Aplicações - Felipe Regalgo
 

Recently uploaded

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 

Recently uploaded (20)

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 

Android DevConference - Scaling Mobile Development

  • 1. Marcos Barreto Mobile Project Leader @ MercadoLivre Scaling the Mobile Development Android DevConference 2016 - São Paulo
  • 2. This is our vision Building the foundation to Build a 3B Company by FY20 Context How it all started… ?
  • 3. This is our vision Building the foundation to Build a 3B Company by FY20 Context Nowadays... ❖ +52.000 live only from Mercado Livre ❖ +15 countries ❖ ~ 3 sales per second ❖ ~100 MM registered users ❖ 15% to 40% of SI are from Mobile! ❖ +16 MM downloads
  • 5. This is our vision Building the foundation to Build a 3B Company by FY20 From an old world to a new world
  • 6.
  • 8. This is our vision Building the foundation to Build a 3B Company by FY20
  • 9. This is our vision Building the foundation to Build a 3B Company by FY20 Microservices http://developers.mercadolibre.com/
  • 10. This is our vision Building the foundation to Build a 3B Company by FY20 Microservices https://www.acamica.com/mercadolibre
  • 12.
  • 13. Desktop Search Team Desktop VIP Team Desktop MyML Team iOS Team Home Search VIP MyML Desktop Home Team Android Team Home Search VIP MyML
  • 14. Desktop iOS Android Home Team Desktop iOS Android Search Team Desktop iOS Android VIP Team Desktop iOS Android MyML Team Android Architecture Team iOS Architecture Team
  • 15. This is our vision Building the foundation to Build a 3B Company by FY20 Context What we wanted to do? ❖ Different teams collaborating in the development of mobile apps. ❖ Improve code quality & reduce bugs. ❖ Facilitate the mobile development. ❖ Support new teams in the native app development. ❖ Agile development, new features to prod faster.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23. This is our vision Building the foundation to Build a 3B Company by FY20 Scaling the Mobile code Status ● Tightly coupled code ● Constant merge and rebase problems ● Manual and unstable testing ● Difficult coordination between teams. ● Publishing to the store: manually, error prune
  • 24. This is our vision Building the foundation to Build a 3B Company by FY20 From an old world to a new world
  • 25. This is our vision Building the foundation to Build a 3B Company by FY20Componentization
  • 26. How did we do it ? 3
  • 27. This is our vision Building the foundation to Build a 3B Company by FY20 Componentization MELI APP Shared Libs & SDKs Navigation Module Home Module Search Module VIP Module Legacy App CHO Module
  • 28. This is our vision Building the foundation to Build a 3B Company by FY20 Componentization Characteristics ❖ Each module is a repository in Github ❖ Different Front-Ends are build based on the OS (Android,iOS) and our MELI SDK (set of libraries). ❖ Each module is an application that works on its own (with a TestApp).
  • 29. This is our vision Building the foundation to Build a 3B Company by FY20 Componentization iOS Android OS Core Libs ML APP MELI SDK Home Search VIP Commons UI Rest Client Authentication Networking Track lib 3 Track lib 1 Track lib 2 Track lib 4 Notifications CHO SI . . .
  • 30. How do the modules communicate ?4
  • 31. This is our vision Building the foundation to Build a 3B Company by FY20 How do the modules communicate ?
  • 32. This is our vision Building the foundation to Build a 3B Company by FY20 How do the modules communicate ? Navigation ● Modules don't know each other and the navigation is through predefined URLs ● 100% decoupled and each module is “Deep Linking” Ready Intent intent = new Intent(this); intent.setData( Uri.parse("myscheme://myhost/segment1?queryparam1=val1&queryparam2=val2")); startActivity(intent);
  • 33. This is our vision Building the foundation to Build a 3B Company by FY20 How do the modules communicate ? Navigation ● Parameters are passed by query string or path params. ○ Pro: Simple and known. ○ Con: The Uri has to be parsed. mycompanydeeplink://item/meuItemId
  • 34. This is our vision Building the foundation to Build a 3B Company by FY20 Navigation Example ... <activity android:name=".activities.MyActivity" android:launchMode="singleTop" android:theme="@style/Theme.MLTheme"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="myhost" android:scheme="myscheme" /> </intent-filter> </activity> ...
  • 35. This is our vision Building the foundation to Build a 3B Company by FY20 Navigation Example public class MyActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); … // myscheme://myhost/segment1?queryparam1=val1&queryparam2=val2 if (getIntent().getData() != null) { Uri deeplink = getIntent().getData(); List<String> segments = deeplink.getPathSegments(); String queryparam1 = deeplink.getQueryParameter("queryparam1"); String queryparam2 = deeplink.getQueryParameter("queryparam2"); …
  • 37. This is our vision Building the foundation to Build a 3B Company by FY20 Wrapper Meli API Mobile Middleware (Wrapper)
  • 38. This is our vision Building the foundation to Build a 3B Company by FY20 Wrapper Meli API Mobile Middleware (Wrapper) text translations behaviour
  • 39. This is our vision Building the foundation to Build a 3B Company by FY20 Wrapper Meli API Mobile Middleware (Wrapper) text translations behaviour
  • 40. This is our vision Building the foundation to Build a 3B Company by FY20 Wrapper 2.0
  • 41. This is our vision Building the foundation to Build a 3B Company by FY20 Wrapper 2.0 { id: "sign_up", title: "Ainda não tem conta?", button: { text: "Cadastre-se grátis", text_color: "#666666", background_color: "#ffffff" }, action: "meli://register", image: "http://static.ml.com/2b7c0ecb042a5.png", background_color: "#ffffff" }
  • 42. This is our vision Building the foundation to Build a 3B Company by FY20Wrapper 2.0 ❖ The backend response can change based on the App version (design the frapi with that in mind). ❖ The backend is easily modified, the apps are not. ❖ Backend changes must always be backward compatible.
  • 44. This is our vision Building the foundation to Build a 3B Company by FY20 Quality assurance A successful Git Branching Model masterdevelop release
  • 45. This is our vision Building the foundation to Build a 3B Company by FY20 Quality assurance Release Process ❖ We didn't have a clear process. ❖ Releases were made when we thought it was a "good time". ❖ With many teams working with us, that needed to change.
  • 46.
  • 47. This is our vision Building the foundation to Build a 3B Company by FY20 Quality assurance Agile Release Trains ❖ Every 2 weeks a new version is released. ❖ Every 2 weeks, the train passes by and takes with it all merged PRs. ❖ A release train is implemented with a Milestone in Github.
  • 48. This is our vision Building the foundation to Build a 3B Company by FY20 Quality assurance Agile Release Trains
  • 49. This is our vision Building the foundation to Build a 3B Company by FY20 Quality assurance Agile Release Trains ❖ The release is defined by a Milestone in Github. ➢ The tag is created with the Changelog.md file. ➢ The "train" is created with everything merged to develop. ❖ After the release, a manual regression is run, and if no issues are found ⇒ Progressive Rollout
  • 50. This is our vision Building the foundation to Build a 3B Company by FY20 Agile Release Trains Release Manager ❖ Assigning Pull Requests. ❖ Tests for manual regression. ❖ Checking if everything is ok. ❖ Creating the "What's New" ❖ Creating the APK and rolling it out. ❖ Following issues.
  • 51. This is our vision Building the foundation to Build a 3B Company by FY20 Quality assurance How to I add a new Feature ? ❖ Must have: ➢ Unit tests ➢ Screenshots of the changes ➢ Changes for the What's New ➢ New Regression tests ➢ Dependencies declaration.
  • 52. This is our vision Building the foundation to Build a 3B Company by FY20 Quality assurance How to I add a new Feature ? ❖ Will my feature be added ? ➢ Only if the PR was made with time. ➢ Code quality is up to the standards. ➢ Doesn't have bugs. ➢ CR was made and changes were made. ➢ Dependencies are met. ❖ The feature will be added only if it's merged
  • 53. This is our vision Building the foundation to Build a 3B Company by FY20 Agile Release Trains Agile Release Trains ★ Better communication. ★ Different teams can estimate based on this schedule. ★ New versions are better tested and controlled.
  • 54. This is our vision Building the foundation to Build a 3B Company by FY20 Quality assurance Status: Testing Automation ❖ Tests were ran manually in the developer machine. ❖ Unstable tests. ❖ Each team added new tests, increasing a lot the number of tests. ❖ To scale ⇒ everything must be automated.
  • 55. This is our vision Building the foundation to Build a 3B Company by FY20 Quality assurance Android Testing Pyramid
  • 56. This is our vision Building the foundation to Build a 3B Company by FY20 Quality assurance Testing Automation
  • 57. This is our vision Building the foundation to Build a 3B Company by FY20
  • 58. This is our vision Building the foundation to Build a 3B Company by FY20 Quality assurance Continuous Integration ❖ Tests were ran manually by the developer. ❖ Hard to tell when the tests were green or not. ❖ The work of the Release Manager was nearly impossible!.
  • 59. This is our vision Building the foundation to Build a 3B Company by FY20 Continuous Integration in Github One pull request to fix X One pull request to fix Y One pull request to fix Z
  • 60. This is our vision Building the foundation to Build a 3B Company by FY20 Continuous Integration in Github One pull request to fix X One pull request to fix Y One pull request to fix Z
  • 61. This is our vision Building the foundation to Build a 3B Company by FY20 Quality assurance Continuous Integration
  • 62. This is our vision Building the foundation to Build a 3B Company by FY20 Quality assurance Continuous Integration
  • 63. This is our vision Building the foundation to Build a 3B Company by FY20 Quality assurance Continuous Deployment ❖ The APK is generated in Travis ❖ How ? ● If the last commit to release or master contains [ci deploy]. ● A tag and a release is created in github using as changelog the Changelog.md file. ● The APK is automatically published to HockeyApp and to the PlayStore in Alpha.
  • 64. This is our vision Building the foundation to Build a 3B Company by FY20
  • 65. This is our vision Building the foundation to Build a 3B Company by FY20 Quality assurance Code Review ❖ Code standards. ❖ Improve code quality and documentation. ❖ Share good practices. ❖ Reduce bugs. ❖ Accept constructive comments.
  • 67. We had one big-fat-repo
  • 69. This is our vision Building the foundation to Build a 3B Company by FY20Pull Request of a new feature...
  • 70. This is our vision Building the foundation to Build a 3B Company by FY20Reduced crashes ● App crashes down from ~10.000/day to less than 1000/day
  • 74. This is our vision Building the foundation to Build a 3B Company by FY20 Mercado Livre Experience http://mercadolivreexperience.com.br/2016/ cupom AndroidDev 20% desconto tem comida gratis!!