Lotim Dev MeetUp 4
Table of Contents
Technical Feasibility : Sudaryatno as CTO at GITS Indonesia #
Gits sebuah perusahaan yang berfokus dalam bidang perkembangan software.
Technical Feasibility adalah bagimana cara membuat produk secepat mungkin.
Hal yang perlu di lakukan sebelum membuat sebuah produk :
- Memahami produknya terlebih dahulu
Engineering Manager : Harus tau tujuan dari bisnis dan perusahaan.
Design Thinking : Mempermudah untuk membuat fitur apa yang dibutuhkan
Tentukan fitur prioritas (MVP - Minimum Valuable Product)
Bisa berkomunikasi dengan tim untuk menentukan Minimum Valuable Product
List of Technology
Memilih teknologi. Cara memilih dengan cara listing.
Kemudian kategorikan :
Infrastructure
Backend
Database
Frontend
Mobile Apps
Community Technology
- Maturity Community
- Great Documentation
Strong Team
Kekuatan tim yang bisa :
- Saling menginspirasi dan memandu
- Melakukan perubahan yang cepat
- Melakukan micromanaging
Setelah itu …
Choose Infrastructure
Analisis sesuai dengan kemampuan
Server Side : Node JS
Platform : Microsoft, Firebase, ASW
Lakukan perbandingan.
Choose Mobile Technology
Memilih Flutter
Tim jhony memutuskan :
- Node JS
- Firebase
- Flutter
Timing Better than Perfect : Jangan terlalu sempurna, yang paling cepat itu paling baik.
Metrics
EM harus mempunyai tolak ukur keberhasilan
- Metrics Success Product
- Quality : Load Testing, Performance Test, Test Coverage, Customer Feedback, Production Incidents. Customer feedback untuk melihat segimana kulitas produk kita.
- Value : Berapa banyak customer yang make, segimana efisien biaya, jumlah transaksi
- Productivity : Batch size, cycle time, number of commit. Standar yang benar adalah 1 hari 1 commit.
- Metrics Success Product
Analytic
Harus tetap menganalisis
Crash Tracker
menganalisisi menggunakan
- Firebase Crashlytics
User angagement
Push notifications
Email
Repeat
Engineering Manager : Role model dalam perusahaan yang memanfaatkan teknologi, soft skill dan hard skill. Goals untuk mencapai tujuan produk / perusahaan bersama dengan team.
ASK?
Bagaimana jika sudah produksi namun ketika sudah jalan, teknologi yang digunakan itu tidak efisien dan ingin merubah teknologi. Namun developernya hanya bisa menggunakan teknologi yang sebelumnya tidak dengan teknologi yang akan di update. Jadi apakah tetap menggunakan teknologi yang lama atau bagaimana?
Jawabannya :
Lakukan metrics yang detail untuk fitur atau app tersebut. Kemudian ketika ingin upgrade. Developer juga perlu belajar technology apa yang ingin di upgrade.
Technology itu adalah tools bukan job desk.
Increase App Performance with Flutter Isolate : Nasrul Alawy as Lead Mobile Dev #
Biasa perusahaan menggunakan flutter untuk mempres cost application.
Flutter : asynchrony = Membaca codingan dari atas sampai bwah.
Bekerja dengan event loop. Meskipun tidak ada aktifitas, flutter akan terus melakukan looping.
Ketika melakukan perhitungan kompleks akan terjadi mengalag. Jadi itu fungsinya isolate.
Kalau ingin memblock error mengguakan “await”.
Sistem :
Open
Idle
Click Button
Req API
etc
Flutter Isolate : Membuat isolasi terpisah. Ketika ada sebuah event yang berat kita akan mengisolasinya, dengan proses sendiri. Memiliki ruang khusus yang di kirim melalui port.
Fungsi :
- Memperbaiki performa aplikasi dengan menjalankan kode secara paralel.
- Membagi beban kerja di antara core CPU
- Menjalan kode yang memerlukan lingkungan yang aman
- Meningkatkan stabilitas apps
Kekurangan :
- Codingan makin lebih kompleks : Cost pertambah
- Tidak semua function di jadikan isolate
ASK: Karena tadi tidak semua function bisa kita lakukan isolate. Bagaimana cara menentukan function yang akan di isolate?
Fuzzing The Rest : Rahmat Wahyu Hadi #
Critical bugs biasa menemukan 3 dari 10 bug critical.
Apa itu debugging
Mendefinisikan untuk mencari problem pada code.
Apa itu fuzzing
menginput secara automate software dengan inputan yang tidak di sangka.
pyload : apa yang dikirim dari user ke backend.
Traditional Fuzzing
Breaking things with randoms input. Melakukan testing menggunakan inputan random.
Modern Fuzing
Payloadnya sudah terstruktur. Tingkat efisiensi mencari bug sangat tinggi. Semakin kompleks payload makan semakin tinggi tingkat keberhasilan mencari bug.
Sebelum melakukan payload harus mendefinisikan payloadnya.
Apa yang bisa di fuzzing?
Semua yang ada inputan dan output.
Logger sangat penting dalam fuzzing : apa yang kita input dan output kita simpan dari hasil fuzzing. Agar bisa menganalisis masalah
Tools : bugsmith
Langkah-langkah :
- Menganalisis inputan atau parameter
- Membuat payload
- Paste pada bugsmith
- Kita lihat requestnya. (anomali)
- Lakukan eksploitas
- Decrypt requestnya
Automade Testing :
- Login pake email random dan password random
- Mengenerate untuk melakukan fuzzing
- melakukan fuzzing mengunakan nucklei
- elastic search untuk logging
- data elastic di simpan
- melakukan eksploitasi
Step :
- Fuzzing
- Debugging
- Eksploitasi
- direction
- rest condition
Agile Product Management : Ray Rizaldy as CEO Gits #
Kebanyakan konsep bisa membuat nggk perfek”.
Proses pengembangan produk
- Build
- Measure
- Learn
Agile : Kita bisa mendevelop sesuatu secepat mungkin.
Pada customer
VUCA : Harus bisa di jawab dengan prediksi, jadi kita berbicara tentang estimasi.
- Volatillity : ukuran harga
- Uncertanity : ukuran ketidak pastian
- Ambiguity : ukuran ambigu dari suatu produk
- Complexity : ukuran dari kerumitan dari sebuah produk
Dimensi dalam bidang developer : Hal yang mempengaruhi development
- Product : Banyak product yang nggk jalan
- People : Banyak pemikiran
- Technology : Bingung memilih teknologi
- Process : Bentrok memilih proses
User Story :
As a
I want
so that
Step :
- Card : Requitmen on strory card
- Conversation : Discuss all details in the team
- Confirmation : Define acceptance criteria for when a story is done
Tips :
- Pindahkan card bukan ketika sudah selesai, namun ketika ingin dikerjakan.
- Informasikan kepada tim apa yang sedang di kerjakan
Project Manager tree :
- To do
- In Progres
- Complete
- Backlog
Tools : Gunakan 1 tools
- Taiga
- Trelo
- Hasana
Estimasi : Bandingkan relatif ambil yang paling lambat. Harus dicatat.
Run Your Back End App Using Cloud Run : Ibnu Sina Wardy as Google Developer Expert Cloud #
Speed is important
- Serverless vs Traditional Architecture
Servless :
- Google Cloud Run : Deploy server apapun yang di manage oleh google.
Keuntungan :
- No server to manage
- Focus on writing code
- Scale up fast
- Scale down to zero
- pay for exact usage
- just deploy
- any staless container : Kirim code ke server lain. Jangan di tempat publish. Aman untuk menghapus aplikasi dan memindahkan data. Memisahkan data.
- any language any library
- url in second
Cloud Run Servis : Bisa gratis
Kalkulator : Google Cloud Pricing Calculator
Cloud Run Jobs :
Step :
- Build pake docker
- Upload ke google
- Deploy faster, so we can test it on production
Cara Deploy :
- Docker.file untuk resepnya : Harus paham dockerizing or docker.file
- copy file json
- tentukan home atau tempat installnya
- jalankan npm install
- copy semua source code
- gcloud run deploy :
- otomatis switch jika ada update version application
VCC
Build CI/CD with GitLab : Didiet Agus Pambudiono as Lead DevOps Gits #
Apa itu Continuous Integration (CI)?
- Developers commit code to a shared repository on a refular basis.
- Version control system is being monitored. When a commit is detected, a build will be triggered automatically.
- If the build is not green (gagal), developers will be notified immediately (maka akan ada pemberitahuan).
Kenapa ktia butuh Continuoues Integration ?
- Mendeteksi bug dan bisa dengan mudah kita deteksi lebih awal.
Development before CI :
- Release manually = semua dirilis secara manual
- Test happens late = rilis tidak secepat secara otomation
- Few releases
Publish :
Development
Staging
Production
Vibernate
Gitlabs CI, DevOps bisa memberitahu WA untuk mengetes server.
- Delivery team
- Version Control
- Build
- Automated
- User Approve
- Release
- Continuous Integration
- Continuous Delivery
- Continuous Deployment
Cara mengimplimintasi CI
- Non hosted solutions
- jenkins
- gitlab CE
- Teamcity
- Hosted Solutions
- Circle
Kenapa Gitlab CI/CD
- Integrated : Bisa digunakan gratis
- Easy to learn : Mudah untuk memulai
- Beautiful : Familiar, mudah digunakan
- Scalable : Bisa digunakan di mesin manapun
- Faster results : Buildnya bisa di split multiple jobs
- Open source :
Fitur :
- Multi Platform
- Multi language : Java, PHP, Ruby, C, etc
- Parallel build : Split build in pararel
- Docker support
- Pipeline
- Editor
- Jobs :
- Build
- Deploy
- Build arifacts
- Container Registry
- Environments
- Autoscaling
- Real Time logging
- Versioned test
Monorepo : 2 aplikasi menggunakan 1 component

