Transcript for:
Tantangan dan Rekomendasi untuk API SDK

Oke jadi ini udah sering banget saya Ceritain sih sebenarnya ya jadi salah satu hal yang enggak suka saya lakuin itu adalah bikin API client atau ada yang bilang juga eh selain API client ada yang bilang juga ini adalah SDK ya jadi atau SDK atau apapun itulah Jadi intinya biasanya kan kita kalau misalnya bikin api ya Nah kadang-kadang ada orang yang minta ada SDK clientnya enggak atau ada api clientnya Enggak dalam bentuk library yang mereka gunakan gitu ya E teknolog yang mereka gunakan nah saya sebenarnya tidak rekomendasikan untuk buat ya problemnya apa Yuk kita bahas di sini oke misal aja kita punya gitu ya eh satu aplikasi contohnya teman-teman punya apa ya punya payment Gateway misalnya ya misal aja gitu ya jadi teman-teman punya payment Gateway seperti ini contohnya eh ini payment Gateway itu kan pasti nanti ada api-nya ya Nah biasanya ee yang mau integrasi itu kan pasti dia akan bilang pakai apa gitu ya jadi contohnya di sini integrasinya ada a dia misalnya pakai PHP gitu ya Nah lalu misalnya dia ada lagi di sini yang EE B dia pakai Java lalu mungkin ada yang lain problemnya gitu ya Ee misalnya E ya Misalnya C gitu ya dia sama-sama pakai Java gitu oke biasanya yang dilakukan adalah banyak perusahaan-perusahaan yang bikin SDK cliennya contohnya misalnya Oke saya ee sediakan SDK Client untuk Java gitu ya lalu saya juga sediakan SDK Client untuk PHP lalu kalau saya sediakan sdg Client untuk Misalnya ini Java gitu ya Ini buat PHP ini misalnya buat yang lainnya contohnya misalnya eh notde GS gitu ya dan lain-lain nah yang dilakukan biasanya klien-klien ini yang mau menggunakan api kita itu biasanya akan menggunakan library kita contohnya Ini pakai library kita gitu ya Ini pakai library kita nah ini juga misalnya pakai library kita jadi dari aplikasi mereka sebenarnya itu dia akan terkoneksinya ya itu ke library kita jadinya ya jadi dari aplikasi mereka itu akan konectnya ke library kita jadi dari aplikasi B misalnya ke library kita dari aplikasi C ke library kita nah library kita yang akan Eh istilahnya itu mentransform gitu ya kode PHP misalnya itu menjadi request ke payment Gateway kita nah seperti ini nah ini udah hal yang lumrah ya Ee biasanya contohnya mungkin teman-teman pakai misalnya ee SDK untuk Facebook misalnya SDK untuk Twitter atau X gitu ya atau SDK untuk yang lainnya gitu Ya nah tapi kalau ini secara pendapat personal ya Saya sendiri sebenarnya kurang suka membuat sdksdk seperti ini Nah problemnya apa Oke kita bahas problemnya problem yang pertama adalah ya ini terlalu banyak teknologi yang harus kita siapkan ya jadi contohnya misalnya kita ee punya payment Gateway gitu ya kita tahu kalau Eh yang mau integrasi itu bakal banyak sekali teknologinya ada Java ada PHP notjs mungkin bahkan ada yang pakai golang ada python dan lain-lain ya bayangin aja kita harus bikin library semuanya padahal sebenarnya isi dari library ini kalau kita breakdown gitu ya isinya tuh sebenarnya sederhana aja gitu ya isinya itu isinya itu hanya misalnya eh request ya isinya adalah model request json-nya mungkin lalu responsnya sama http klien gitu Jadi ini tuh sebenarnya hal yang sederhana ee harusnya semua orang ya Ee pakai bas program apa pun mereka udah ngerti cara bikin object request transform jadi jesson respons juga sama bahkan melakukan http clien itu mereka semua sudah tahu gitu ya Jadi sebenarnya saat kita bikin library itu sebenarnya melakukan duplikasi ee kode ya jadi semua orang sudah tahu caranya akhirnya kita bikinin gitu ya padahal ya problem yang lainnya selain nanti kita harus bikin semuanya padahal isinya sangat basic banget gitu ya cuma request respon habis itu ada http kliennya selesai problemnya lagi adalah http kliennya kadang-kadang Tiap orang itu beda-beda contoh misalnya kita pakai ee misal aja ya pakai nojs nodejs itu ada apa sih nodejs itu ada ada misalnya ada yang pakai aksios misalnya gitu ya tapi ada juga yang Oh enggak mau ngapain pakai axios gitu ya pakai yang patch bawaan dari javascript-nya aja simpel artinya bisa beda-beda kan Tiap orang jadi ada yang pakai aksios ada yang pas bayangin kalau kita bikinnya pakai aksios tiba-tiba Orangnya loh kok pakai aksios saya penginnya pakai fet misalnya ribet lagi masa kita harus bikin dua versi notjs gitu ya yang satu axios yang satu notdejs eh sorryi fetch lalu yang Java Java itu tuh banyak banget gitu ya library yang dipakai untuk Java http clien contohnya misalnya Eh ada eh apace common sctp ada juga eh fan gitu ya Ada juga ee apa ya yang saya agak lupa namanya tapi intinya banyak Oh oke http dan masih banyak yang lainnya artinya Apa artinya banyak banget library yang digunakan bayangin gitu Ya kita harus pilih yang mana nih mungkin ada perusahaan yang pakai apach comon gitu ya ada yang pakai fan Oke http bahkan mungkin ada yang retrofit gitu ya Ada retrofit juga retrofit ya Kalau enggak salah nah jadi banyak banget gitu ya bayangin masa kita harus sediain semuanya gitu ya Nah itu juga agak ribet jadi terutama yang paling problem lagi adalah versi kita harus nyamain versinya bayangin gitu ya kita misalnya pakai yang fannya versi sat Ternyata orangnya pakai fan versi du nanti brck libr-nya atau misalnya pakai retrofit versi 1 ternyata mereka ah naik ke versi 2 jadi kita harus terus-terusan ngejar eh maintain-nya juga nah Selain itu gitu ya problemnya kalau menggunakan kayak gini kalau bikin SDK client kayak gini gitu ya problemnya adalah kalau ada bug di SDK cliennya ini mungkin eh cuma satu gitu ya bayangkan nanti Kalau klien kita di sini ada 10 atau bahkan ada ratusan bayangin gitu ya lalu kita ada B bug di ini SDK clientnya contohnya di Java atau di php apa yang terjadi yang terjadi kita akhirnya harus upgrade versi yang baru gitu ya Tadinya versi 1 gitu ya E kita naikin yang php-nya dari versi 1 ke versi 2 gitu ya atau 1.1 gitu ya Nah ini untuk bug fix gitu ya yang terjadi apa kita harus ngasih tahu ke semua klien kita yang pakai library PHP dan kita minta untuk mereka upgrade karena ada bug misalnya misal aja ada bug memory leak gitu ya yang bikin aplikasi mereka e memorinya jadi leak gitu ya dan gara-gara library yang kita buat bayangin gitu Ya kita harus minta semua orang itu pindah atau upgrade dan belum tentu mereka mau gitu ya Nah itu Masalahnya dan timeline-nya juga kadang-kadang belum tentu gitu ya Nah itulah eh kenapa saya enggak terlalu suka bikin API client atau eh SDK ya Kenapa karena isinya itu simpel banget cuma request respon HP kalian udah selesai request respon bikin objek eh json-nya kadang-kadang Tiap orang juga pakai library yang berbeda gitu ya contohnya kalau di Java itu banyak ada Google geson ada Jackson dan lain-lain gitu ya Ee di php mungkin sudah ada bawaannya di noj juga udah ada bawaannya tapi library e di kayak di misalnya di eh Java atau sisap atau golang mungkin beda-beda library-nya jadi ini pun bisa beda-beda untuk request respons-nya termasuk yang paling banyak gitu ya kombinasinya itu adalah http kliennya jadi ini bakal ribet banget kalau misalnya kita harus eh bikin semuanya kalau kita menentukan satu aja teknologi itu juga versinya harus dipastikan kompatibel dengan yang mengguna gunakannya gitu ya Atau mungkin ada orang yang enggak mau pakai library yang kita gunakan contohnya kita pakainya e retrofit ternyata mereka enggak mau gitu ya mereka penginnya pakai fan Nah itu juga jadi problem lagi jadi dibanding kita fokus bikin library lebih baik kalau kita bikin aplikasi yang memang interaksi dengan pihak luarnya itu via api ya Jadi kalau teman-teman memang fokusnya di api ya nah jadi teman-teman bikinnya F api itu lebih baik kita fokusnya itu bikin yang namanya ya Jadi yang namanya kita bikin di sini itu fokusnya adalah ini api doc jadi api documentation jadi teman-teman bisa pakai Open api misalnya documentation-nya atau bahkan kalau yang paling simpel ya tinggal bikin E Mark down gitu ya markdown page yang isinya e request respon dan lain-lain Jadi intinya dibanding teman-teman pusing gitu ya Eh bikin SDK lebih baik teman-teman bikin dokumentasinya ya kalau teman-teman contohnya bikin pakai Open api itu G banget kalau misalnya ada ee ini ya Ada misalnya klien kita yang dia kliennya itu pakainya PHP gitu ya Lalu ada klien kita yang pakainya e Java atau yang pakainya golang gitu ya misal aja kalau misalnya kita bikinnya pakai ini pakai Open api ya itu Open api itu ada fitur e auto generate ya jadi setiap teknologi Contohnya kayak PHP Java golang itu dia bisa auto generate dari open api spesifikasi yang kita buat itu bisa digenerate jadi kode PHP langsung nah jadi ini juga bisa digenerate langsung jadi kode Java ini juga bisa digenerate jadi kode golang jadi kita Beneran enggak perlu lagi Eh bikin SDK cliennya Biarin tinggal mereka aja gitu ya klien-klien kita yang penginnya mereka pengin pakai teknologi apa ini Open api spec-nya misalnya ya tinggal nanti generate aja kalau mereka butuh memang eh hasil langsung generate kode javanya tapi kalau mereka enggak butuh misalnya butuhnya mereka udah punya gitu ya di dalam aplikasi golangnya atau jav-anya misalnya udah ada library kayak contohnya udah ada e Jackson untuk json-nya lalu mereka udah pakai fan untuk e http cliennya ya mereka udah enggak butuh lagi Eh melakukan yang namanya e generate ini ya Jadi mereka tinggal pakai ini aja Nah jadi Itulah kenapa saya enggak suka bikin API client library atau SDK ini cuma pendapat pribadi saya boleh setuju boleh enggak gitu Ya baik lagi gimana teman-teman aja cuma kalau Saya memang malas ribet maintain hal seperti ini jadi mendingan to the point aja bikin dokumentasinya pakai Open api suruh nanti kliennya aja terserah mereka mau mau pakai library apapun suka-suka mereka gitu ya Jadi mereka juga bebas Nah yang pasti ini adalah speknya jadi kita akan mengikuti spek dari Open api yang sudah kita buat