Week 13. Refactor

Ahmad Elang
println-mic
Published in
4 min readMay 2, 2018

Refactor

Minggu ini saya banyak melakukan refactor untuk meningkatkan integrasi dengan backend dan microservice. Berikut beberapa refactor yang saya lakukan

Menambah isOwner permission ke print history

Karena menggunakan best practice Django, menambah permission cukup menambah di permission_classes
Test apabila yang mengakses bukan ownernya
Menambah field queue
edit test untuk memastika queue berjalan

dll

Riset provider SMS

Saya melakukan beberapa riset untuk mencari provider terbaik untuk SMS. Berikut beberapa provider yang sempat saya cek

http://www.zenziva.id/

130 rupiah per sms, 10 sms gratis, API agak kurang powerfull karena tidak bisa newline pesannya

https://www.nexmo.com/

326.34 rp per sms + sewa nomor 2$ per bulan

Security concern karena takut password disimpan sebagai plain text

https://www.twilio.com

401.72 rp per sms + sewa nomor 3$

https://www.budgetsms.net:

243.16 rupiah

Namun pada akhirnya atas saran dari PO saya menggunakan layanan dari raja-sms. Dikarenakan harganya relatif murah dan APInya lebih mantap ketimbang zenziva

Memakai Raja SMS

Tembak request
Test raja sms

Software Architecture

Software architecture adalah struktur dari sebuah sistem software, didalamnya terdapat komponen dari software dan relasinya satu sama lain

Println menggunakan microservice software architecture . Microservice kami sekarang hanya 1, yakni melakukan percetakan. Karena web berbasis web, kami juga menggunakan client-server software architecture

Berikut beberapa komponen dari println

  1. Frontend, menangani semua interaksi user di web
  2. Backend, menyediakan akses data untuk frontend dan microservice. Juga melayani pengiriman notifikasi ke user
  3. Microservice (Print), mengambil data dari backend dan mengatur proses print dengan printer

Think Big & Daily Improvement

Println memiliki potensi bisnis yang besar. Dengan menggunakan sistem pembayaran di muka Println tidak akan menemui masalah seperti halnya cetakin yang sering tidak dibayar dan diambil orderan percetakkannya (di println order percetakan bisa tidak diambil, tapi tidak akan pernah tidak dibayar)

Println juga dapat mengimplementasikan dynamic pricing dan voucher dengan mudah. Sehingga admin dapat dengan mudah melakukan kampanye diskon untuk marketing. Rencananya untuk masa pameran nanti, kami akan menggunakan voucher untuk marketing kami nanti.

Menggunakan sms membutuhkan membayar service. Namun pada khalayak luas sms masih banyak digunakan, dan tidak ada kepastian dapat menggunakan bot untuk aplikasi chat seperti di line/telegram/discord/fb messanger. Selain itu sms hampir pasti menjadi push notification pada semua jenis hp, tidak seperti email yang bisa saja dimatikan push notificationnya karena storage smartphone tidak muat (cukup sering terjadi di smartphone dengan storage kecil seperti smartphone saya), dan tidak membatasi ke smartphone saja.

Di PPL. daily improvement saya adalah belajar mengenai DRF lebih dalam dan belajar mengenai pengembangan software sehingga saya memiliki skill yang berguna untuk mencari pekerjaan nanri

Refactoring & Design Pattern

Refactoring

Berikut meme curian untuk topik ini

Saya melakukan banyak refactor minggu ini. Terutama mengikuti kritik dan saran dari teman-teman. Beberapa yang saya refactor sudah saya lampirkan di paling atas. Beberapa diantaranya adalah refactor yang diakibatkan oleh perubahan requirment seperti penambahan field queue di return untuk suatu endpoint.

Saya juga melakukan refactor untuk meningkatkan kualitas dari test. Seperti dibawah ini. Karena test yang baik akan meningkatkan kepercayaan orang lain yang akan menggunakan kode anda

Design Pattern

In Println backend, kami menggunakan DRF. Django dan DRF sendiri bukan MVC, hal ini wajar karena MVC dibuat untuk GUI desktop application, sedangkan Django dan DRF untuk web aplikasi.

  • Template Pattern: ViewSet adalah template yang digunakan untuk mendefinisikan view. Viewset memberikan keseragaman dan kepraktisan
  • Facade Pattern: Serializer dapat dianggap sebagai facade dari Model. View di drf melakukan aksi ke model tanpa benar-benar menggunakan model dan hanya melalui serializer.

Design pattern adalah sebuah solusi. Apabila suatu problem akan lebih baik jika menggunakan design pattern, maka gunakan design pattern. Namun jangan mengimplementasikan design pattern hanya karena bisa. Implementasi design pattern yang berlebihan hanya akan membuat kode menjadi lebih kompleks dan sulit dibaca

--

--