BAB II LANDASAN TEORI
2.1. Usaha Mikro, Kecil Dan Menengah (UMKM) Berdasarkan data dari Kementerian Koperasi dan UMKM, UMKM merupakan kelompok usaha yang memiliki jumlah paling besar di Indonesia, dimana sekitar 99,9% unit bisnis di Indonesia merupakan UMKM dan telah menyerap hampir 97% tenaga kerja Indonesia. Tabel 1. Data perkembangan UMKM tahun 2012-2013 No
Indikator
Satua n
Tahun 2012 **) Jumlah
(1) 1
2
3
(5) 100.00
(6) 57,900,787.00
(7) 100.00
(8) 1,361,227.00
(9) 2.41
A. UMKM
Unit
56,534,592.00
99.99
57,895,721.00
99.99
1,361,129.00
2.41
B. Usaha Besar
Unit
4,968.00
0.01
5,066.00
0.01
98.00
1.97
Tenaga Kerja
Orang
110,808,154.00
100.00
117,681,244.00
100.00
6,873,090.00
6.20
A. UMKM
Orang
107,657,509.00
97.16
114,144,082.00
96.99
6,486,573.00
6.03
B. Usaha Besar
Orang
3,150,645.00
2.84
3,537,162.00
3.01
386,517.00
12.27
PDB Atas Dasar Harga Berlaku A. UMKM
Rp. Milyar Rp. Milyar Rp. Milyar Rp. Milyar Rp. Milyar Rp. Milyar Rp. Milyar Rp. Milyar Rp. Milyar Rp. Milyar Rp. Milyar Rp. Milyar Rp. Milyar Rp. Milyar Rp. Milyar
8,241,864.20
100.00
9,014,951.20
100.00
773,086.20
9.38
4,869,568.10
59.08
5,440,007.90
60.34
570,439.00
11.71
3,372,296.10
40.92
3,574,943.30
39.66
202,647.20
6.01
2,525,120.30
100.00
2,670,314.85
100.00
145,194.40
5.75
1,451,460.20
57.48
1,536,918.80
57.56
85,458.50
5.89
1,073,660.10
42.52
1,133,396.05
42.44
59,735.90
5.56
1,185,391.00
100.00
1,161,327.50
100.00
(24,063.40)
(2.03)
166,626.50
14.06
182,112.70
15.68
15,486.30
9.29
1,018,764.50
85.94
979,214.80
84.32
(39,549.70)
(3.88)
2,283,873.00
100.00
2,609,778.70
100.00
325,905.90
14.27
1,250,801.10
54.77
1,655,233.50
63.42
404,432.50
32.33
1,033,071.90
45.23
954,545.20
36.58
(78,526.60)
(7.60)
583,426.40
100.00
607,879.30
100.00
24,452.90
4.19
300,175.70
51.45
341,341.60
56.15
41,165.90
13.71
283,250.70
48.55
266,537.70
43.85
(16,713.00)
(5.90)
PDB Atas Dasar Harga Konstan 2000 A. UMKM
Total Ekspor Non Migas (A+B) A. UMKM
Investasi Atas Dasar Harga Berlaku (A+B) A. UMKM B. Usaha Besar
7
Pangsa (%)
(4) 56,539,560.00
B. Usaha Besar 6
Jumlah
(3) Unit
B. Usaha Besar 5
Pangsa (%)
Perkembangan Tahun 2012-2013 Jumlah %
(2) Unit Usaha
B. Usaha Besar 4
Tahun 2013 ***)
Investasi Atas Dasar Harga Konstan (A+B) A. UMKM B. Usaha Besar
Sumber: Kementerian Koperasi dan Usaha Kecil dan Menengah
Keberadaan UMKM memberikan kontribusi 57,6% terhadap PDB Indonesia dan 15,7% terhadap total ekspor non migas Indonesia (Kemenkop-UKM, 2013-2014). Oleh sebab itu, keberadaan UMKM menjadi sangat penting dalam menjaga stabilitas perekonomian nasional. Sejarah perjalanan Bangsa Indonesia telah membuktikan bahwa UMKM memiliki ketahanan yang kuat terhadap berbagai goncangan krisi ekonomi dan dapat
6 http://digilib.mercubuana.ac.id/
menjadi katalis pemulihan ekonomi ketika kondisi perekonomian mengalami tekanan, seperti yang terjadi pada tahun 1997 1998 (Agus D.W. Martowardojo, 2). Pengelolaan dan pengembangan UMKM di Indonesia berada di bawah koordinasi Kementerian Koperasi dan UKM dan telah diatur di dalam Undang-undang Nomor 20 Tahun 2008 Tentang Usaha Mikro, Kecil dan Menengah. Undang-undang tersebut menyebutkan bahwa yang dimaksud dengan Usaha Mikro, Usaha Kecil dan Usaha Menengah adalah sebagai berikut : Usaha Mikro adalah usaha produktif milik orang perorangan dan/atau badan usaha perorangan yang memenuhi kriteria Usaha Mikro yaitu memiliki kekayaan bersih paling banyak Rp50.000.000,00 (lima puluh juta rupiah) tidak termasuk tanah dan bangunan tempat usaha; atau memiliki hasil penjualan tahunan paling banyak Rp300.000.000,00 (tiga ratus juta rupiah). Usaha Kecil adalah usaha ekonomi produktif yang berdiri sendiri, yang dilakukan oleh orang perorangan atau badan usaha yang bukan merupakan anak perusahaan atau bukan cabang perusahaan yang dimiliki, dikuasai, atau menjadi bagian baik langsung maupun tidak langsung dari Usaha Menengah atau Usaha Besar yang memenuhi kriteria Usaha Kecil yaitu memiliki kekayaan bersih lebih dari Rp50.000.000,00 (lima puluh juta rupiah) sampai dengan paling banyak Rp500.000.000,00 (lima ratus juta rupiah) tidak termasuk tanah dan bangunan tempat usaha; atau memiliki hasil penjualan tahunan lebih dari Rp300.000.000,00 (tiga ratus juta rupiah) sampai dengan paling banyak Rp2.500.000.000,00 (dua milyar lima ratus juta rupiah). Usaha Menengah adalah usaha ekonomi produktif yang berdiri sendiri, yang dilakukan oleh orang perorangan atau badan usaha yang bukan merupakan anak perusahaan atau cabang perusahaan yang dimiliki, dikuasai, atau menjadi bagian baik langsung maupun tidak langsung dengan Usaha Kecil atau Usaha Besar dengan jumlah kekayaan bersih atau hasil penjualan tahunan yang memenuhi kriteria Usaha Menengah yaitu memiliki kekayaan bersih lebih dari Rp500.000.000,00 (lima ratus juta rupiah) sampai dengan paling banyak Rp10.000.000.000,00 (sepuluh milyar rupiah) tidak termasuk tanah dan bangunan tempat usaha; atau memiliki hasil penjualan tahunan lebih dari Rp2.500.000.000,00 (dua milyar lima ratus juta rupiah) sampai dengan paling banyak Rp50.000.000.000,00 (lima puluh milyar rupiah).
7 http://digilib.mercubuana.ac.id/
2.2. UML Dalam menggambarkan perilaku dan struktur dari aplikasi, penulis menggunakan notasi UML yang menyediakan beberapa bahasa visual untuk menunjukan aspek-aspek di dalam sistem aplikasi, diantaranya : Use Case Diagram, Activity Diagram, Sequence Diagram, State Machine Diagram, Class Diagram, dsb. 2.2.1. Use Case Diagram Use Case Diagram menggambarkan interaksi antara sistem dengan user dan juga sistem lainnya yang terhubung ke dalam sistem utama. Interaksi ini menggambarkan fungsi sebuah sistem dari perspektif penggunanya. Setiap pengguna terhubung dengan sebuah fungsi yang menggambarkan interaksinya dengan sistem (Alan Denis et al 174) Tabel 2. Simbol Use Case Diagram
Aktor: -
Merupakan orang atau sistem yang memiliki peran sebagai subjek eksternal
-
Aktor diberikan label sesuai dengan perannya
-
Dapat diasosiasikan dengan aktor lain menggunakan asosiasi specialization/superclass
-
Aktor ditempatkan di luar batas sistem
Use Case: -
Menggambarkan fungsi utama suatu sistem
-
Dapat meng-extend use case lain
-
Dapat meng-include use case lain
-
Use case ditempatkan di dalam batasan sistem
-
Use diberikan label menggunakan kata kerja atau benda
Subject Boundary: -
Nama subjek dituliskan di dalam atau di bagian atasnya
-
Menggambarkan ruang linkup dari suatu subjek seperti sistem maupun individual business process
Association Relationship: -
Menghubungkan aktor dengan use case yang saling berinteraksi
Include Relationship:
8 http://digilib.mercubuana.ac.id/
-
Menggambarkan fungsi use case yang menjadi bagian dari use case lainnya
-
Ditunjukan menggunakan panah dari base use case ke use case yang digunakan
Extend Relationship: -
Menggambarkan perpanjangan dari suatu use case untuk menggunakan fungsi opsional lainnya
-
Ditunjukan menggunakan panah dari use case ke base use case
Generalization Relationship: -
Menggambarkan hubungan dari specialized use case ke general use case
-
Ditunjukan menggunakan panah dari specialized use case ke base use case
Gambar 1. Model Use Case (Alan Denis et al 157)
2.2.2. State Machice Diagram State machine merupakan model dinamis yang menggambarkan kondisi/status yang dilalui suatu object sebagai response dari suatu event. Tabel 3. Simbol State Machine Diagram
State: -
Digambarkan menggunakan persegi empat dengan sudut tumpul
9 http://digilib.mercubuana.ac.id/
-
Memiliki name yang menggambarkan kondisi suatu objek
Initial State: -
Ditunjukan menggunakan lingkaran kecil yang terisi penuh
-
Menggambarkan titik awal kondisi objek
Final State: -
Ditunjukan menggunakan lingkaran kecil yang tidak terisi penuh
-
Menggambarkan titik akhir kondisi suatu objek
Event: -
Menggambarkan hal yang menjadi pemicu perubahan kondisi suatu objek
-
Digunakan sebagai label di dalam transition
Transition -
Menggambarkan perubahan kondisi objek dari kondisi awal ke kondisi lainnya
-
Dipicu oleh event sebagaimana dituliskan sebagai label di dalam transition
-
Digambarkan menggunakan simbol panah dengan garis penuh
Frame: -
Menggambarkan konteks dari suatu state machine
Gambar 2. Model State Machine (Alan Denis et al 254)
2.3. Location Based Service GSM Assosiation, yang merupakan konsorsium dari 600 Operator jaringan GSM mendefinisikan Location Based Service sebagai layanan yang memanfaatkan lokasi dari target untuk memberikan nilai tambah ke dalam layanannya. Target dimaksud merupakan
10 http://digilib.mercubuana.ac.id/
suatu entitas yang akan dideteksi lokasinya dan target tersebut tidak terbatas hanya berupa pengguna layanan tersebut. Axel Küpper (2) menyatakan bahwa Location Based Service juga dianggap sebagai bagian atau subset dari Context Aware Service. Context Aware Service merupakan layanan yang dapat beradaptasi secara otomatis menyesuaikan dengan konteks informasi di sekitarnya. Konteks tersebut diklasifikasikan menjadi primary context dan secondary context. Primary Context merupakan segala jenis data yang didapatkan melalui penggunaan sensor, seperti sensor cahaya, suhu, microphone, accelerometer, lokasi dan sebagainya (Schmidt and van Laerhoven 2001), sedangkan secondary context merupakan pengolahan data mentah dari primary context melalui proses kombinasi, deduksi atau filtering untuk menghasilkan informasi konteks yang lebih detail.
Gambar 3. Context aware dan location based service
2.4. Agile Software Development Di tahun 2001, Kent Beck dan beberapa orang ahli di bidang pengembangan perangkat lunak,
penulis,
dan
konsultan
berkumpul
untuk
mendirikan
Agile
Alliance
(www.agilealliance.org) yang merupakan organisasi nirlaba dengan skala global yang memiliki tujuan untuk mengembangkan prinsip-prinsip dan best practices dalam pengembangan perangkat lunak menggunakan Agile Development. Dari pertemuan tersebut selanjutnya agile alliance mendeklarasikan agile manifesto yang mengandung nilai-nilai dan prinsip yang dipegang dalam proses pengembangan perangkat lunak menggunakan agile software development, yaitu : Individuals and interactions over processes and tools Working software over comprehensive documentation
11 http://digilib.mercubuana.ac.id/
Customer collaboration over contract negotiation Responding to change over following a plan Lebih lanjut, Agile Alliance mendefinisikan Agile Software Development sebagai berikut: Agile Software Development is an umbrella term for a set of methods and practices based on the values and principles expressed in the Agile Manifesto. Solutions evolve through collaboration between self-organizing, cross-functional teams utilizing the appropriate practices for their context Roger S. Presman dan Bruce R. Mxim (96) menyatakan, Agile Software Engineering combines a philosophy and a set of development guidelines. The pilosophy encourages customer satisfaction and early incremental delivery of software; small highly motivated proejct teams; informal methods; minimal software engineering work products; and overal development simplicity. The development guidelines stress delivery over analysis and design and active and continues comunication between developers and customers Berdasarkan keterangan dari para penulis di atas, dapat disimpulkan bahwa Agile Development terdiri dari guidelines dan best practices dalam proses pengembangan perangkat lunak yang memiliki prinsip mengutamakan customer satisfaction melalui proses delivery yang cepat, iteratif, dan berkesinambungan serta dengan menjaga komunikasi yang aktif antara pengembang dengan pengguna. Dalam sebuah agile team dapat terdiri dari software engineer dan stakeholder seperti manager, customer dan user yang saling bekerja sama untuk mencapai tujuan menghasilkan produk software yang dapat memenuhi kebutuhan penggunanya. Perkembangan agile development yang pesat beberapa waktu belakangan ini salah satunya diakibatkan oleh pesatnya pemanfaatan komputer dalam berbagai proses bisnis sehingga menyebabkan munculnya berbagai macam kebutuhan dan semakin dinamisnya proses bisnis di dalam suatu perusahaan untuk menyesuaikan dengan kebutuhan pasar. Untuk beradaptasi dengan proses yang dinamis tersebut, pengembangan software tidak dapat bergantung pada metodologi pengembangan software tradisional (seperti waterfall) dan sebaliknya perlu menerapkan metodologi agile software development yang dapat memberikan hasil dan beradaptasi terhadap perubahan dengan cepat. Hal tersebut dimungkinkan karena aktivitas di dalam pengembangan software menggunakan metodologi agile banyak disederhanakan. Tahapan-tahapan yang dilalui masih melalui
12 http://digilib.mercubuana.ac.id/
tahapan sebagaimana pengembangan menggunakan metode konvensional seperti planning & analysis, design & modeling, construction & testing, dan deployment, namun prosesnya banyak disesuaikan dan disederhanakan, serta pengembang aplikasi dapat langsung mengerjakan proses construction tanpa menunggu tahapan analisa dan desain diselesaikan. Spesifikasi kebutuhan digambarkan secara ringkas, sederhana, jelas dan mencerminkan maksud atau fitur yang dibutuhkan pengguna. Hasil dari proses tersebut kemudian divalidasi oleh user untuk mendapatkan masukan dan saran dalam iterasi selanjutnya. K Selvi dan Rana Majumdar (1) menggambarkan perbandingan antara pengembangan software menggunakan metodologi tradisional dan pengembangan software menggunakan metodologi agile sebagai berikut. Tabel 4. Perbandingan antara pengembangan software menggunakan metodologi tradisional dan pengembangan software menggunakan metodologi agile, K Selvi, Rana Majumdar (1)
Tradisional Plan driven
Agile (Scrum & XP) Feature driven
Release frequency antara 6 sampai 12 Release frequency antara 1 sampai 2 bulan bulan Frozen requirement
Just-in requerement
Memerlukan banyak dokumentasi
Tidak memerlukan banyak dokumentasi
Proses integrasi dilakukan di akhir tahapan Continues integration pengembangan Memiliki fase testing yang terpisah dengan Continues testing pengembangan Sulit dilakukan perubahan
Perubahan dapat dilakukan dengan mudah
Ada banyak implementasi metodologi agile dalam software development, dengan kelebihan dan kekurangannya masing-masing. Beberapa implementasi metodologi yang populer adalah sebagai berikut : Extreeme Programming (XP) Scrum Kanban Crystal
13 http://digilib.mercubuana.ac.id/
Dyanmic Sistem Development Method (DSDM), Dsb Khusus dalam penelitian ini, penulis menggunakan Scrum sebagai implementasi agile dalam membangun Aplikasi Pemetaan Usaha Mikro, Kecil Dan Menengah (UMKM) Pada Platform Android. 2.5. Scrum Kenneth S. Rubin (1) menyatakan, Scrum is an agile approach for developing innovative . Pengembangan software menggunakan Scrum memiliki ciri khas berupa proses pengembangan dilakukan secara iteratif yang masing-masing berlangsung antara 2 sampai dengan 4 minggu, atau lebih populer disebut dengan istilah Sprint. Pemilik aplikasi atau user dapat mengetahui dan memonitor progress di akhir masing-masing sprint dan pada kesempatan tersebut, juga dapat memberikan
input feedback untuk
pengembangan sprint selanjutnya. Hasil yang disampaikan di akhir masing-masing sprint merupakan produk jadi, yang sudah dapat digunakan oleh user. Di dalam masing-masing iterasi, tim pengembangan dan pemilik aplikasi bekerja sama dalam mendefinisikan desain sistem, construction dan melakukan testing untuk menghasilkan produk yang siap dikirimkan ke production.
Gambar 4. Tahapan di Dalam Metodologi Scrum (Open Clip Art Library, openclipart.org)
Aplikasi yang dibangun menggunakan metode Scrum akan menghasilkan produk jadi yang dapat dikirimkan kepada user secara iteratif dalam kurun waktu antara 2 (dua) sampai 4 (empat) minggu atau disebut dengan Sprint.
14 http://digilib.mercubuana.ac.id/
Spesifikasi kebutuhan didefinisikan menggunakan user stories yang disimpan ke dalam product backlog dan selanjutnya dikenal dengan istilah product backlog item (PBI). Di awal tahapan sprint akan dilakukan sprint planning meeting untuk menentukan prioritas, bobot dan kegiatan-kegiatan yang dilakukan untuk menyelesaikan masing-masing PBI. Hasil dari proses tersebut kemudian disimpan ke dalam sprint backlog yang menggambarkan rencana kerja dari Tim Scrum untuk masing-masing iterasi. Di akhir tahapan sprint, tim pengembang akan menghasilkan produk yang dapat digunakan oleh pengguna. Kemudian pada tahapan tersebut juga dilakukan sprint review meeting untuk mengevaluasi apakah tujuan dari sprint telah dipenuhi atau tidak dan untuk melakukan update pada product backlog untuk mempersiapkan sprint selanjutnya. Di dalam sprint review meeting juga dilakukan sprint retrospective untuk melakukan evaluasi apakah pelaksanaan sprint sebelumnya telah dilakukan secara efektif dan untuk membahas hal-hal yang dapat dilakukan untuk memperbaiki dan meningkatkan proses sebelumnya. Menurut Joshua Partogi (29-50), Struktur organisasi di dalam scrum framework terdiri dari 3 peran sebagai berikut: a. Scrum Master merupakan peran di dalam tim scrum yang bertanggung jawab terhadap pendewasaan orang-orang di dalam tim untuk memahami prinsip dan filosofi Scrum. Scrum master bertanggung jawab untuk mengedukasi orang-orang di dalam perusahaan dan meluruskan salah persepsi mengenai Agility dan Scrum. b. Product Owner merupakan peran di dalam tim scrum yang bertanggung jawab dalam mengelola produk untuk meningkatkan valuasi perusahaan di pasar. Produk owner beperan dalam memaksimalkan nilai bisnis untuk perusahaan lewat software yang dikembangkan oleh tim pengembang. c. Tim Pengembang merupakan peran di dalam tim scrum yang bertanggung jawab dalam mengelola proses pengembangan produk software Berdasarkan analisa yang dilakukan oleh Lee, Rich C (2012) terdapat 4 (empat) hal yang digunakan untuk mengukur performa dari suatu scrum, yaitu : a. Software development performance, yang dipengaruhi hal-hal sebagai berikur: 1) On-Time Completion, semakin tepat waktu suatu pengerjaan proyek, maka akan pengaruh positif terhadap performa pengembangan aplikasi. 2) On-Budget Completion, semakin sedikit penggunaan budget, maka akan berpengaruh positif terhadap performa pengembangan aplikasi.
15 http://digilib.mercubuana.ac.id/
3) Software Functionalities, semakin kompleks fungsionalitas suatu software maka berpeluang memberikan pengaruh negatif terhadap performa. 4) Development Efficiency, semakin efisien proses yang dilakukan, maka akan berpengaruh positif terhadap performa pengembangan aplikasi b. Software team characteristics, yang dipengaruhi oleh beberapa faktor sebagai berikut: 1) Personal Attributes, semakin tinggi kesediaan para personil untuk bekerjasama, maka akan memberikan pengaruh positif terhadap perilaku dan karakteristik tim pengembangan 2) Software Team Autonomy, semakin tinggi kebebasan para personil dalam bekerjasama maka akan memberikan pengaruh positif terhadap perilaku dan karakteristik tim pengembangan. 3) Software Team Diversity, semakin relevan skil yang dimiliki oleh masing-masing personil dalam pengembangan aplikasi, maka akan memberikan pengaruh positif terhadap perilaku dan karakteristik tim pengembangan. c. Team competence, yang dipengaruhi oleh beberapa faktor sebagai berikut: 1) Prior Experiences, tim yang memiliki pengalaman dalam mengerjakan proyek yang sama sebelumnya akan meningkatkan kompetensi dari tim tersebut. 2) External Experts, semakin banyak adanya dukungan dari external expert maka akan meningkatkan kompetensi dari tim tersebut 3) Learning Curve, semakin sulit dalam penguasaan suatu keterampilan, maka akan memberikan pengaruh negatif terhadap peningkatan kompetensi dari suatu tim scrum. d. Software development agility, yang dipengaruhi oleh beberapa faktor sebagai berikut: 1) Team Attitude, semakin baik perilaku suatu tim scrum akan memberikan pengaruh positif dalam peningkatan agility. 2) Software Team Response Extensiveness, semakin intensif komunikasi diantara anggota tim akan memberikan pengaruh positif dalam peningkatan agility. 3) Software Team Response Efficiency, semakin efektif komunikasi suatu tim, akan memberikan pengaruh positif dalam peningkatan agility. 4) Team Skills, semakin tinggi keterampilan suatu tim, maka akan meningkatkan agility dari tim tersebut 5) Characteristics of Stories, user stories yang mudah dipahami akan meningkatkan agility dari suatu tim scrum. Keterkaitan dari faktor-faktor di atas dapat digambarkan dalam diagram scrum performance dynamics sebagai berikut:
16 http://digilib.mercubuana.ac.id/
Gambar 5. Scrum Performance Dynamics, Lee, Rich C (7)
2.6. Apache Cordova, Angular Js Dan Ionic
Gambar 6. Logo Ionic dan Apache Cordova
Ionic merupakan teknologi yang memungkinkan pengembangan aplikasi mobile dapat menggunakan teknologi HTML, CSS dan Javascript. Ionic digunakan untuk menyusun look and feel serta interaksi user interface dari aplikasi mobile. Ionic menggunakan framework AngularJS sebagai teknologi untuk mengembangkan aplikasi mobile. Kombinasi antara Ionic dan Apache Cordova akan menghasilkan aplikasi hybrid mudah dibuat dan dapat menggunakan fitur-fitur native di dalam handphone. Apache Cordova merupakan framework pengembangan aplikasi mobile yang dapat digunakan untuk mengakses fungsi native dari suatu perangkat mobile seperti : camera atau accelerometer dengan menggunakan kode Javascript. Kombinasi Apache cordova dan UI framework memungkinkan smartphone dapat dikembangkan hanya menggunakan kode HTML, CSS dan Javascript. Apache Cordova pada mulanya bernama PhoneGap dibuat oleh perusahaan bernama Nitobi hingga pada tahun 2011 diakuisisi oleh Adobe Sistem, dan memberikan source code-nya kepada open source melalui Apache Software Foundation dan mengubah namanya menjadi Apache Cordova.
17 http://digilib.mercubuana.ac.id/
Gambar 7. Proses kerja Apache Cordova/Phonegap (https://build.phonegap.com)
Dengan menggunakan Apache Cordova pengembang dapat menetapkan berbagai macam platform sebagai target pengembangannya seperti Android, iOS, Windows Phone, Blackberry, Ubuntu, dsb menggunakan satu kode sumber yang sama. 2.7. NoSql Database & Firebase Istilah NoSQL mengacu pada sekumpulan database yang tidak mengikuti aturan sebagaimana relational database yang menggunakan schema, baris dan kolom untuk merepresentasikan data serta tidak menggunakan Structured Query Language (SQL) untuk memanipulasi data-data di dalamnya. Meskipun istilah NoSQL pertama kali tercatat sebagai nama sebuah aplikasi open source relational database Strozzi NoSQL yang dikembangkan oleh Carlo Strozzi pada sekitar akhir tahun 1990, istilah NoSQL menjadi dikenal setelah acara konferensi (Developer Meet Up) pada 11 Juni 2009 di San Franciso yang di selenggarakan oleh Johan Oskarsson, seorang Software Developer yang berbasis di London (Sadalage, J. Pramod, Fowler, Martin, 17). NoSQL meliputi berbagai macam teknologi database yang dikembangkan untuk menjawab kebutuhan yang terkait dengan pengembangan aplikasi modern, yang tidak dapat atau sulit dilakukan menggunakan relational database, seperti : Kebutuhan aplikasi untuk dapat menyimpan dan mengolah berbagai macam data dengan jumlah transaksi dan volume data yang besar serta pertumbuhan data yang sangat pesat, mencakup structured, semi-structured, unstructured dan polymorphic data, Kebutuhan untuk mendeliver produk secara cepat, menyesuaikan dengan proses pengembangan yang dilakukan secara agile dengan iterasi antara satu hingga dua minggu,
18 http://digilib.mercubuana.ac.id/
Kebutuhan untuk membangun aplikasi yang dapat diakses oleh banyak pengguna dari berbagai macam perangkat, Kebutuhan akan penggunaan teknologi open source dan arsitektur berbasis cloud dengan skema harga yang lebih terjangkau. Beberapa kelebihan menggunakan NoSQL adalah sebagai berikut: Dapat memproses volume data dan transaksi yang besar mencakup structured, semi-structured dan unstructured data, Dapat menyesuaikan dengan metodologi pengembangan agile dengan iterasi schema yang capat dan frekuensi code push yang sering, Mendukung mekanisme pengembangan secara Object-oriented yang mudah digunakan dan fleksibel, Menggunakan arsitektur yang terdistribusi sehingga mudah discale-out secara geografis. Jenis-jenis NoSQL Database antara lain: Document databases, mengkorelasikan setiap key di dalam database dengan struktur data yang kompleks yang disebut dengan dokumen. Dokumen dapat terdiri dari beberapa key-value pairs, atau key-array pairs, maupun nested document, Graph store, digunakan untuk menyimpan informasi terkait relasi antar data seperti social connection Key-value stores merupakan bentuk paling sederhana dari NoSQL databases. Masing-masing item di dalam database disimpan berpasangan dalam bentuk keyvalue. Wide-column, digunakan untuk optimalisasi query pada dataset yang besar dan menyimpan data dalam bentuk kolom daripada baris Dynamic Schemas Dalam menggunakan Relational databases perlu pendefinisian database schema sebelum dapat digunakan untuk menyimpan data. Sebagai contoh ketika aplikasi akan menyimpan data firs name, last name, alamat dan nomor telepon seorang customer, Relational database perlu mengetahui data apa saja yang akan disimpan, apakah data tersebut sesuai dengan schema yang telah didefinisikan, apakah di dalam tabel tersebut terdapat kolom first name, last name, alamat dan nomor telepon tersebut.
19 http://digilib.mercubuana.ac.id/
Hal ini sangat tidak cocok dalam pengembangan yang dilakukan menggunakan pendekatan Agile, karena setiap fitur yang ditambahkan di dalam database akan memicu perubahan pada schema database tersebut. Pengembang aplikasi perlu menambahkan kolom di dalam database untuk mengakomodir perubahan tersebut, kemudian melakukan migrasi database untuk menyesuaikan dengan schema yang telah berubah tersebut. Proses tersebut tentu saja tidak akan menimbulkan masalah apabila dilakukan pada database yang memiliki ukuran yang kecil, namun keadaan tersebut akan memperbesar risiko kesalahan ketika dilakukan pada database dengan ukuran besar. Proses migrasi tersebut akan memakan waktu yang lama dan terkadang perlu dilakukan downtime untuk mengakomodir perubahan tersebut. Apabila hal ini sering dilakukan maka proses downtime tersebut juga akan semakin sering sehingga akan mempengaruhi layanan yang diberikan aplikasi secara keseluruhan. Selain hal di atas, Relational database juga tidak didesain secara efektif untuk dapat menyimpan dan mengolah untructured data. NoSQL database dibangun untuk memungkinkan dilakukannya insert data tanpa menggunakan schema layaknya relational database, sehingga mempermudah proses perubahan di dalam aplikasi tersebut. Perubahan dapat dilakukan secara real time tanpa dikhawatirkan dapat mengganggu layanan aplikasi terebut. Ini berarti pengembangan suatu aplikasi dapat dilakukan lebih cepat, integrasi source code menjadi lebih reliable dan tentu saja meringankan pekerjaan database administrator. Meskipun demikian, untuk menjaga kualitas data di dalam database, pengembang aplikasi perlu menambahkan kode untuk melakukan quality control data di dalam database tersebut, seperti: memastikan adanya field spesifik di dalam database, menentukan tipe data yang dapat digunakan di dalam suatu field. Validasi dapat dilakukan di dalam database, sehingga memungkinkan kualitas data dapat tetap terjaga tanpa mengorbankan keuntungan menggunakan dynamic schema di dalam NoSQL database. Auto-sharding Sharding merupakan suatu istilah yang menggambarkan arsitektur database yang dapat mempartisi data dan mendistribusikannya ke dua atau lebih server. Sharding memungkinkan suatu database dapat discale secara horizontal. Sharding dapat dilakukan secara manual-sharding ataupun auto-sharding. Sharding pada relational database biasanya dilakukan secara manual. Struktur suatu relational database menyebabkan scaling biasanya hanya dapat dilakukan secara vertikal, sebuah server digunakan untuk menyimpan seluruh database. Kemampuan
20 http://digilib.mercubuana.ac.id/
dan kapasitasnya terus ditingkatkan untuk memproses data yang semakin lama semakin bertambah banyak. Apabila kemampuan proses suatu server telah mencapai batasnya, maka pilihan yang dimungkinkan adalah dengan mengganti server dengan server baru yang memiliki kemampuan yang lebih baik, sehingga memberikan pengaruh yang signifikan dari sisi finansial. Hal ini juga sangat beresiko mengingat ketersediaan layanan (availability) terkonsentrasi pada server tersebut. Apabila server database mengalami crash, maka seluruh layanan yang disediakan aplikasi menjadi terhenti dan dapat berpengaruh terhadap proses bisnis di dalam perusahaan yang mengimplementasikan relational database tersebut. Tentu saja risiko tersebut dapat diminimalkan dengan adanya backup server yang dapat disetting untuk selalu me-replicate data di dalam database utama, namun solusi tersebut akan menyebabkan bertambahnya biaya operasional secara signifikan. NoSQL database hadir dengan solusi yang memungkinkan database dapat discale secara horizontal, yaitu dengan menambahkan server lainnya yang dapat digunakan untuk mengimbangi proses dan jumlah data yang semakin besar. Database NoSQL didesain sedemikian rupa untuk mendukung fasilitas auto-sharding secara native sehingga data dapat disebar ke beberapa server secara otomatis. Kapasitas data dan query secara otomatis diseimbangkan ke beberapa server yang saling terhubung dan ketika salah satu server mengalami kendala, maka server tersebut dapat langsung digantikan tanpa mempengaruhi aplikasi atau layanan yang sedang berjalan. Hal tersebut akan sangat mudah dilakukan di dalam lingkungan server yang menerapkan cloud computing. Server baru dapat dibuat dengan cepat baik untuk menggantikan server yang bermasalah ataupun untuk menyeimbangkan data dan query yang dirasa berat. Firebase merupakan layanan Backend as a service (BaaS) yang di dalamnya terdapat NoSQL database dengan fitur realtime sync antar seluruh client yang terhubung ke server firebase. Data di dalam firebase disimpan menggunakan format JSON document yang dapat menampung nilai dalam bentuk key-value. Firebase mendukung multiple platform/framework seperti AngularJS, EmberJS, Backbone.js, iOS7, OSX, Android dan bahasan pemrograman seperti Ruby, Node.js, Python, Java, Clojure, PHP, Perl, C++ & Javascript. Firebase menggunakan web sockets untuk mengupdate seluruh client terkait dengan perubahan yang dilakukan. Selain realtime database, firebase juga menyediakan fasilitas dan layanan lainnya yang berguna dalam pengelolaan data di dalam firebase, seperti: Firebase Analytics, merupakan layanan yang menyediakan solusi untuk mengukur tingkat penggunaan aplikasi dan tingkat kesetiaan pengguna. 21 http://digilib.mercubuana.ac.id/
Firebase Cloud messaging (FCM), merupakan solusi lintas platform untuk pengiriman pesan dan notifikasi pada perangkat Android, iOS, dan aplikasi web. Firebase Auth, merupakan layanan yang dapat digunakan untuk menyediakan autentikasi pengguna di dalam suatu aplikasi. Saat ini firebase auth mendukung berbagai macam penyedia layanan authentikasi yang disediakan oleh berbagai website media sosial seperti Facebook, GitHub, Twitter dan Google. Pada layanan firebase auth juga disediakan fasilitas manajemen pengguna yang dapat digunakan oleh pengembang untuk menyediakan fasilitas authentikasi menggunakan email dan password. Realtime Database dan backend as a service, merupakan layanan yang dapat digunakan oleh pengembang aplikasi untuk mengakses Application Programming Interface (API) melalui protokol REST sehingga data di dalam aplikasi tersinkronisasi secara otomatis di berbagai perangkat yang mengakses data tersebut. Firebase Storage, menyediakan layanan penyimpanan, unggah dan unduh file yang aman di dalam aplikasi yang menggunakan firebase. Pengembang aplikasi dapat menggunakan firebase storage untuk menyimpan file images, audio, video, dsb. Firebase Hosting, merupakan layanan hosting untuk web yang bersifat statis yang jarang berubah dan biasanya dibuat menggunakan teknologi CSS, HTML dan Javascript. Remote Config, merupakan layanan yang dapat digunakan oleh pengembang aplikasi untuk mengubah perilaku dan tampilan dari aplikasi yang dikembangkan, tanpa membutuhkan user untuk mengunduh update dari aplikasi tersebut. Test lab, merupakan infrastruktur pengujian untuk aplikasi android yang memungkinkan pengembang aplikasi untuk melakukan pengujian di berbagai jenis perangkat dan konfigurasi. Crash reporting, merupakan layanan pelaporan yang dapat memberikan informasi detail dari error yang muncul pada suatu aplikasi. 2.8. Google Map API Merupakan layanan Application Programming Interface (API) yang memungkinkan pengembang aplikasi untuk menerapkan layanan Google Map untuk memvisualisasikan suatu area menggunakan peta dan citra satelit di aplikasi yang dikembangkan.
22 http://digilib.mercubuana.ac.id/
Gambar 8. Tampilan aplikasi yang menggunakan Google Map API pada platform Android
Layanan yang disediakan oleh Google Map API diakses menggunakan protokol REST dan menyediakan berbagai macam fasilitas, diantaranya adalah sebagai berikut: Penelusuran Bisnis dan Tempat Menarik, Google Maps API memberi aplikasi Anda akses penuh ke basis data Google di seluruh dunia yang berisi lebih dari 100 juta cantuman bisnis dan Tempat Menarik. Citra 45 Derajat, Google Maps API menyertakan akses ke citra 45 derajat di lebih dari 120 kota di seluruh penjuru dunia, yang menawarkan tampilan pemandangan kota dari empat sisi, sehingga pengguna dapat menjelajahi data Anda dengan sudut pandang unik dalam wilayah tertentu. Analytics, merupakan layanan yang dapat digunakan untuk mendapatkan wawasan yang lebih mendalam mengenai cara pengunjung situs web berinteraksi dengan peta Petunjuk Arah, merupakan layanan di dalam Google Maps API untuk menyediakan rute yang akurat ke suatu area pada peta. Matriks Jarak, merupakan layanan yang dapat digunakan untuk menentukan rute berdasarkan waktu dan jarak tempuh di ke suatu lokasi. Prediksi Waktu Perjalanan, merupakan layanan yang dapat digunakan untuk memperoleh informasi prediksi waktu perjalanan berdasarkan data waktu historis setiap harinya. Memberikan Rute Lalu Lintas, merupakan layanan yang dapat digunakan untuk menentukan rute terbaik berdasarkan keadaan lalu secara realtime. Alat Menggambar, merupakan layanan yang memungkinkan pengguna untuk memilih area, meletakkan penanda, menggambar, dan mengedit bentuk.
23 http://digilib.mercubuana.ac.id/
Profil Ketinggian, merupakan layanan yang dapat digunakan untuk menyajikan informasi profil ketinggian dan kedalaman bawah air di suatu area di dalam peta. Forward dan Reverse Geocoding, merupakan layanan yang dapat digunakan yang memungkinkan pengguna untuk menelusuri lokasi di peta berdasarkan alamat, atau menemukan alamat untuk lokasi yang telah ditentukan, di mana pun di seluruh penjuru dunia. Citra Satelit Global, merupakan layanan yang dapat digunakan untuk menampilkan citra udara beresolusi tinggi. Street View, merupakan layanan yang memungkinkan pengguna untuk menampilkan panorama Street View ke dalam aplikasi. Dukungan untuk Berbagai Perangkat, Google Maps API memastikan peta Anda akan berfungsi di browser web dan perangkat seluler terkemuka. Layar beresolusi tinggi dideteksi dan peta disesuaikan secara otomatis guna memastikannya tetap benar-benar tajam dan jelas.
24 http://digilib.mercubuana.ac.id/