Week 11: Endpoint after Endpoint

Ahmad Elang
println-mic
Published in
6 min readApr 17, 2018

Jadi 2 minggu terakhir ini lebih sedikit deadline dari biasanya. Jadi saya (sedikit) lebih produktif dari biasanya. Bahkan saya berhasil, saya cukup bangga akan ini sebenarnya, menyelesaikan Task saya tidak mepet deadline.

2 minggu ini saya berkutat dengan story Manage User dan Print File Backend. Disini saya mengimplement permission, authentikasi microservice, membuat search untuk backend, dan membuat endpoint seperti biasanya.

Permission

Permission adalah pembuktikan kepemilikan akses. Jadi suatu entitas tidak hanya harus memberikan identitasnya, tapi juga harus membuktikan kalau mereka berhak mengakses suatu resource. Berikut contohnya

Mengecek apakah seseorang user atau bukan

Authentikasi Microservice

Untuk mengecek apakah pengakses BE adalah microservice. Dibuat permission untuk mengecek ke-microservice-annya. Ini dibuat dengan mengecek key yang diletakkan di header yang dari request yang dikirim microservice.

Tentu saja karena ini blog publik. Saya tidak meletakkan snippet, apalagi keys microservice, disini

Search

Saya belum pernah membuat search untuk endpoint API. Oleh karena itu saya menghabiskan cukup banyak waktu mencari-cari library, karena quote bagus yang saya temukan kemarin:

good programmers write good code; great programmers steal great code.

Ada 2 yang sempat saya konsederasikan.

Haystack, yang tentunya overkill hanya untuk membuat search di satu table dengan jumlah row yang relatif sedikit.

dan django-filter. Yang sebenarnya sudah sempat saya coba

Namun karena fieldnya tidak nice, dan saya agak kesulitan mencari mengenai django-filter karena models django juga punya filternya, sehingga google sering memberikan hasil untuk filter models django. akhirnya saya membuat sendiri

Saya tahu saya tadi menulis “good programmers write good code; great programmers steal great code”. Tapi setelah saya pikir lagi, menulis kode sendiri lebih cepat ketimbang mencari library untuk kebutuhan yang kecil seperti ini

Endpoint

Saya membuat endpoint untuk GET Microservice dan untuk PUT dari Front End. Tidak ada yang spesial

Untuk apa yang ingin saya lakukan berikutnya. Saya akan melakukan refactor untuk mengintegrasi antara backend, frontend dan microservice

Selain membahas apa yang sudah saya lakukan, saya akan menuliskan apa yang sudah saya pelajari mengenai pengembangan perangkat lunak

Enviroment

Sayangi lingkungan anda

Di Software Engineering enviroment adalah suatu sistem komputer dimana program atau komponennya di deploy dan dieksekusi. Pada program sederhana seperti tugas DDP atau SDA, software enviroment tempat development dan production hanya satu. Namun untuk industri, development environment dan production environment pada umumnya dipisah dengan beberapa stage diantaranya. Hal ini untuk memudahkan testing, rollback jika ada masalah dan lain-lain

Enviroment development pada umumnya adalah mesin developer. Sedangkan production pada umumnya adalah server atau virtual machine. Untuk PPL terdapat 4 enviroment. Yakni

Development Enviroment

Mesin developer, yakni laptop/PC/mesin lainnya tempat saya atau teman saya mengerjakan task-task PPL dengan penuh semangat dan cinta.

Testing(CobaCoba) Environment

Enviroment setelah development enviroment. Software atau komponen software yang sudah dianggap siap akan di deploy dari development ke testing enviroment. Pada enviroment ini akan dilakukan testing baik secara otomatis maupun oleh tester (kalau ada).

Enviroment testing ada supaya developer tidak perlu mempertaruhkan nyawa diri sendiri, teman satu tim dan perusahaan dengan menggunakan production hanya untuk mengetest software

Data yang digunakan di enviroment testing adalah data dummy. Gunakan kreatifitas anda untuk menggenerate data

SIT/UAT Enviroment

Jika yang ada di Testing adalah komponen dari software untuk di test secara otomatis dan oleh tester (sekali lagi, kalau ada). Maka SIT/UAT adalah enviroment untuk fitur yang siap rilis dan sudah lulus uji. Tinggal menunggu persetujuan Product Owner untuk memasukkannya ke production atau tidak

Data yang di seeding di SIT/UAT adalah data-data yang terkait dengan integrasi sistem lain. Biasanya data-data pada environment SIT/UAT terkait dengan sistem lain yang untuk memastikan sistem kita dapat berinteraksi dengan sistem lain

Data juga diusahakan mirip dengan production. Lebih baik lagi juga product owner lah yang memberikan data tersebut agar dapat benar-benar mirip apabila diletakkan di production

Production Enviroment

Adalah stage setelah SIT/UAT. Fitur yang boleh dimasukkan kesini hanyalah fitur yang sudah disetujui oleh product owner. Enviroment inilah yang digunakan oleh user. Data disini juga harus data real

Testing

Karena enviroment membahas Test Enviroment. Ada baiknya jika saya menjelaskan mengenai testing

Testing di perangkat lunak adalah proses mengeksekusi program untuk menemukan bug. Test juga dilakukan untuk memvalidasi dan memverifikasi bahwa software memenuhi requirment bisnis dan teknis. Kali ini saya akan menjalaskan 2 tipe test

Stubs

Test Stubs adalah program yang mensimulasi behaviour dari module yang merupakan digunakan oleh module lain yang sedang di test. Hal ini dilakukan agar test berfokus terhadap module yang sedang ditest, serta untuk mempercepat proses test. Stubs akan memberikan output sesuai dengan yang diekspetasi dari module yang di gunakan oleh modul yang sedang ditest

Di snippet ini, module facebook di override dengan fungsi yang mensimulasi apa yang seharusnya module facebook lakukan

Mock

Mockup adalah metode untuk mengetest UI. Mockup dapat dibuat di komputer atau secara manual di kertas. Mockup akan menampilkan UI yang direncakanan digunakan untuk program. Dan akan ditest terhadap tester manusia untuk mengecek tampilan. Akan tetapi mockup tidak akan melakukan apa-apa selain yang tester lihat

Untuk kelompok kami. Mockupnya adalah

Think Big and Daily Improvement

Sebagai seorang manusia dan software developer. Saya harus dapat berpikir dengan besar dengan melihat konteks secara keseluruhan dan apa yang kira-kira dapat terjadi jika saya melakukan sesuatu. Saya juga harus dapat meningkatkan diri setiap harinya.

Think Big

Maksud dari berpikir secara besar adalah melihat konteks dari keseluruhan masalah dan kemungkinan-kemungkinan yang akan terjadi. Berpikir dengan besar berarti mengetahui apa yang akan terjadi jika kita melakukan sesuatu, resiko serta rewardnya apabila sukses. Untuk memahami sesuatu tidak cukup dengan asumsi, diperlukan data dari dunia nyata untuk benar-benar memahami sesuatu sesuai dengan konteksnya.

Dengan berpikir secara besar, kita dapat memilih course of action yang dapat dilakukan untuk menyelesaikan suatu masalah dan membangun solusi. Apakah solusi yang kita buat dapat diimplementasikan dengan baik, realistis dan tidak menimbulkan efek samping yang malah menimbulkan masalah yang sama parahnya atau lebih parah.

Di PPL. Berpikir besar adalah melihat bagaimana kode saya akan diintegrasi dengan kode anggota tim. Sehingga dilakukan test sehingga kode saya tidak mengganggu dan terganggu oleh kode orang lain ketika proses integrasi. Saya juga harus memahami bahwa program ini tidak hanya harus selesai tapi juga harus baik agar user yang menggunakannya nyaman.

Selain di PPL, saya juga melakukannya di mata kuliah Technop. Disana saya memikirkan masalah data orang yang sudah meninggal tidak ada yang menghapus. Maka saya berusaha memikirkan beberapa solusi seperti membuat jasa semacam asuransi untuk mendatangi secara manual mesin-mesin almarhum, atau dengan menggunakan software untuk melakukan penghapusan. Saya juga memikirkan apakah solusi-solusi tersebut dapat benar-benar menyelesaikan masalah, apakah feasible untuk diimplementasi dan lain-lain.

Daily Improvement

Daily Improvement adalah meningkatkan diri menjadi lebih baik. Hal ini dilakukan karena manusia tidaklah hidup di hari ini saja. Daily Improvement menurut saya adalah sebuah investasi agar di masa depan diri saya mendapatkan reward yang lebih baik. Seperti memiliki skill yang lebih baik atau menjadi lebih kaya dan sehat.

Hal yang saya lakukan untuk daily improvement adalah mengerjakan tugas kuliah dan datang kelas. Karena dengan belajar dengan baik di kuliah, saya meningkatkan skill saya sehingga dapat mendapatkan pekerjaan yang baik ketika saya sudah lulus.

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

Selain dari kuliah. Saya juga berusaha meningkatkan skill saya dengan mendaftar magang agar mengetahui mengenai lingkungan kerja serta meningkatkan skill saya.

Pesan sponsor: saya sedang cari tempat magang untuk KP. Kalau ada yang tahu tempat magang dengan fee yang menarik atau dengan teknologi yang indah untuk dipelajari dan diletakkan di CV. Tolong beri tahu saya…

--

--