Apa yang sebaiknya saya pilih untuk pengembangan mobile apps (khususnya dalam konteks startup)? Slide ini berisi beberapa diskusi dan cerita mengenai perjalanan Meeber dari awal hingga saat ini dan Tech-Stack apa yang dipakai
Edge Exploration of QR Code Technology Implementation
Strategi Jitu Pengembangan Mobile App untuk Startup
1. Strategi Jitu Pengembangan
Mobile App untuk Startup!
Dony Riyanto
Google I/O Extended Depok 2019
Auditorium Gedung Serbaguna PNJ
Universitas Indonesia
2.
3. Perkenalan
• Dony Riyanto
• CTO PT Meeber Teknologi Indonesia (meeberian.com)
• Sebuah platform B2B2C yang mempertemukan kepentingan Resto/Cafe dan
Pelanggannya
• Sebelumnya pernah terlibat dalam beberapa startup, antara lain Eventalent,
iJakarta/iPusnas, Moneta, Nexsi.io, Xentinel, AksiData.com, CodingCamp,
Kelase, Schoolmedia, dsb.
• Juga kolaborasi/mentoring/juri di beberapa kegiatan
hackaton/mentoring/project seperti: Fishackathon, Big Data Week Hackathon,
Sci-Fi Hackathon, Hackathon TNI AD, MASTEL, Innovesia, dsb
• Konsultan di Kemristekdikti, Balitbang Kemhan, BNN, BASARNAS, TNI AD
• Profil: vizualize.me/donyriyanto Slide: slideshare.net/donyriyanto
4. Pertanyaan
• Saya punya ide, dan saya ingin mengembangkan ide tersebut menjadi
sebuah startup. Bagaimana dan menggunakan apa sebaiknya
pengembangan aplikasi mobile untuk ide saya tersebut?
• Apakah Android saja? Atau mau iOS sekalian?
• Android nya mau dikembangkan pakai apa? “Native” Java atau Kotlin?
Atau pakai ReactNative? Atau Flutter? Atau kita bikin PWA saja dulu
nanti kita bikin Web View?
• Bagaimana dengan iOS, mau dibikin pakai apa?
5. Dialog
• Saya mulai cerita saya dari
beberapa potong screenshot
sebuah FB Group
• https://bit.ly/2SGoNdA
6. Intisari
• Bahasa asli (native)
• Tergantung backend (untuk jml
user banyak)
• Android -> native, tp iOS->
ReactNative
• Ada yang pakai ReactNative trus
berikutnya malah ga pakai
ReactNative lagi (moving off)
7. Intisari
• “sharing habis interview”
• “Bagaimana mendeteksi apps
tertentu pakai apa? Reactnative
atau native?”
8. Intisari
• ReactNative lemah di fps
• Full Android (native) tapi bagian
tertentu pakai Web View
• “Baru tau kalau sekelas xxx
(masih) menggunakan webview”
• XXX Pakai RN cuman untuk apps
A dan B aja (sisanya pakai
native?)
10. Intisari
• “Bagus RN atau Flutter?”
• “xxx komunitasnya lebih matang”
• “Performance problem” (lagi)
11. Pertanyaan
• Apakah praktik penggunaan webview untuk aplikasi
penting semacam mobile banking itu bisa dijamin
keamanannya ?
• Teknik pembuatan mobile app dengan webview memang
solusi yang terbilang cepat, mudah, dan murah, serta
cross-platform. Tetapi webview app pada dasarnya adalah
web biasa, sehingga menurut saya lebih mudah untuk
menemukan celah keamanannya dibandingkan kalau
native app.
• Sebagai perbandingan, aplikasi penting lainnya yang
membutuhkan fokus keamanan yaitu email client dari
google yang bernama Gmail itu merupakan native app,
meskipun Gmail menampilkan isi email menggunakan
webview, tetapi itu tidak bisa dikatakan webview app,
karena fitur JS nya tidak aktifkan, hanya fitur HTML+CSS
yang diaktifkan untuk menampilkan isi email di dalam
aplikasi Gmail, dan hanya itu saja penggunaan webview di
dalam aplikasi Gmail, selebihnya adalah native app.
• https://bit.ly/32RCb2U
12. Pertanyaan
• Jadi sebaiknya pengembangan aplikasi mobile sebaiknya pakai apa?
• Jika tidak pakai native, alternatifnya apa dong?
• Kapan saya perlu mempertimbangkan apakah harus pakai native,
hybrid, PWA, Ionic, ReactNative, Flutter, atau yang lain?
• Bagaimana dengan faktor lainnya, misalnya security?
13. Meeber pakai apa?
Existing:
• Ionic
• NodeJS (sebagian pakai
Loopback)
• MongoDB dan PostgreSQL
• GCP (VM)
• Crashlytics
Next release (after 2years+, 8k
downloader MeeberLite, 17k
Meeberian):
• Flutter (+webview), Ionic, Vue
• Java (Spring) + sebagian masih
NodeJS (loopback tidak dipakai lagi)
+ Python
• PostgreSQL + MySQL
• Kafka, Elastic Stack
• GCP (VM+DB+API Manager), AWS,
local server (for payment services)
• Crashlytics & AppsFlyer
14.
15. Pertimbangan
• Pada tahap inisiasi, kami memilih best available resources dan less effort. Pada
waktu itu kami memiliki resource yang ready Ionic Programmer, NodeJS
programmer. Sebelumnya sempet mencoba ReactNative, tetapi ada masalah
internal dan bahkan programmernya kabur/lepas tanggungjawab.
• Pertimbangan lain: Ekosistem meeber adalah aplikasi yang kompleks, B2B2C,
dimana kami harus bikin platform, sekaligus bikin apps pengganti apps
desktop, sekaligus harus bikin aplikasi buat customer. Aplikasi kasir apalagi
untuk FnB adalah aplikasi yang sangat kompleks secara fitur dan fungsi:
inventory, ingredient, employee management,
ordering/transaction/kitchen/receipt/refund/void/ permission, dsb. Kami
khawatir jika menggunakan Native akan memakan resources SDM yang besar
dan lama pengembangannya, khususnya pada masa inisiasi seperti ini.
16. Pertimbangan Next Relase:
• Membutuhkan tampilan yang lebih segar, performanya lebih bagus,
seligus less-effort untuk mendukung perkembangan teknologi mobile
apps kedepan. Dan pengembangan aplikasinya juga harus cepat
• Membutuhkan sistem transactional yang kokoh, rigid, kuat (setara
perbankan jika memungkinkan)
• Membutuhkan sistem monitoring yang kompleks namun skaligus
flexible
17.
18. Pro-cons
• Flutter terinspirasi dari RN
• Tetapi melakukan beberapa
perbaikan, antara lain: real native,
(optimized) real (built-in)
component/features, yang otomatis
mengatasi masalah: kompatibilitas
dan performance
• Hot reload, mempercepat
pembuatan aplikasi
• Sudah rilis dengan versi >= 1.0
• Dilahirkan dan dimaintain oleh
Google sendiri bersama komunitas
• Menggunakan bahasa baru
(Dart) yang komunitasnya masih
bertumbuh (kalah dengan
komunitas-komunitas existing)
• Pengembangan library
pendukungnya masih
bertumbuh dan sering
pertanyaan (stackoverflow)
masih sedikit/belum ada terkait
beberapa issue
19.
20. Pertimbangan
• Dibeli dari Apigee 2016 dengan
harga fantastis (625 USD)
• Apigee sendiri sudah cukup
dikenal luas dari fitur dan
performance-nya sebelum dibeli
Google
• Kami mulai membutuhkan
monitoring dan mangement
yang lebih dalam, baik dari sisi
application/sistem layer,
maupun data
• Solusi lain harganya cukup mahal.
Dan yang berbasis cloud rata-
rata ada kecenderungan vendor-
locked-in
• Environment kami banyak yang
berada di GCP
21. Backend Stack
• Kami memilih migrasi ke Java Spring
karena membutuhkan SDK/lib yang
sudah mature di kelas enterprise,
dan sudah mulai mampu untuk
merekrut programmer Java yan
handal (dan resourcenya cukup
banyak dari perusahaan2 besar
seperti
Banking/Insurance/Multifinance,
telco)
• + AppsFlyer: karena tadinya lebih
untuk kepentingan remote debuging,
saat ini lebih ke digital campaign dan
konversi leads
• Meninggalkan MongoDB karena:
kami kesulitan resources expert
mongo, bisnis kami hampir
seluruhnya adalah transactional
yang ACID-critical. Kami lebih
mudah untuk mendapatkan
expert di PostgreSQL (dari
enterprise, perusahaan multi
nasional, dsb)
• Menggunakan Kafka dan Elastic
Stack karena sudah
membutuhkan Service Bus dan
stream processing/analytics