
Banyak pekerjaan yang harus dilakukan untuk mengimplementasikan API. Perencanaan yang berlebihan bisa menjadi pemborosan energi, dan ketiadaannya mengarah pada konsekuensi bencana. Dalam buku ini Anda akan menerima solusi yang memungkinkan Anda mengalokasikan sumber daya yang diperlukan dan mencapai tingkat efisiensi yang diperlukan dalam waktu yang optimal. Bagaimana menyeimbangkan fleksibilitas dan kinerja dengan tetap menjaga keandalan dan kemudahan konfigurasi? Empat ahli dari Akademi API menjelaskan kepada pengembang perangkat lunak, manajer produk dan proyek bagaimana memaksimalkan nilai API mereka dengan mengelola antarmuka sebagai produk seumur hidup.
Materi buku ini didasarkan pada pengetahuan kolektif kita (Mehdi Mejuy, Eric Wilde, Ronnie Mitra, Mike Amundsen) selama bertahun-tahun dalam menciptakan, mengembangkan dan meningkatkan API - baik milik kita sendiri maupun orang lain. Itu menetapkan semua pengalaman kami. Kami mengidentifikasi dua faktor utama untuk pengembangan API yang efektif: perlunya pendekatan yang berorientasi produk dan pembentukan tim yang tepat. Kami juga mengidentifikasi tiga faktor penting untuk mengelola pekerjaan ini: kepemimpinan, pengembangan produk, dan pengembangan sistem API.
Kelima elemen ini membentuk fondasi untuk membangun program manajemen API yang sukses. Kami memperkenalkan pembaca untuk semua topik ini dan memberikan panduan tentang bagaimana menyesuaikannya dengan konteks organisasi Anda.
Kutipan. Sistem API
Dengan meningkatnya fungsionalitas API, menjadi semakin penting untuk mengelola program pengembangan sehingga manfaat dan nilai dari seluruh rangkaian API organisasi tumbuh secara maksimal. Anda perlu mengingat keseimbangan ini, karena cara terbaik (atau relatif baik) untuk menyediakan layanan individual menggunakan API mungkin tidak begitu berguna sama sekali jika Anda melihatnya dari sudut pandang kemudahan menggunakan layanan ini sebagai bagian dari sistem umum.
Sistem API modern terus tumbuh dalam hal jumlah total API, serta jumlah API yang digunakan oleh layanan baru. Dengan peningkatan interdependensi ini, kami memahami bahwa akan bermanfaat jika pengembang layanan baru tidak harus memahami desain API yang sepenuhnya berbeda dan menerapkannya. Perbedaannya bisa dramatis - misalnya, apakah API menggunakan REST atau gaya yang berorientasi peristiwa (lihat bagian Desain pada bagian Memperkenalkan Pilar Bab 4) - tetapi meskipun gayanya cocok, perbedaan seperti penggunaan format JSON dapat dideteksi atau XML.
Dari sudut pandang pengguna API, akan berguna juga jika memiliki terminologi umum. Misalnya, jika Anda menggunakan beberapa API yang menyediakan data pengguna dalam bentuk apa pun, akan lebih mudah jika mereka semua memiliki satu model pengguna utama (meskipun disajikan sedikit berbeda, namun berguna untuk memiliki model umum untuk layanan yang berbeda) .
Gagasan tentang manfaat standardisasi jelas menunjukkan bahwa semakin banyak, semakin baik. Sampai taraf tertentu, tetapi pada saat yang sama diketahui bahwa standardisasi membutuhkan waktu dan sumber daya, biasanya tidak sampai pada “satu-satunya model yang benar dan terbaik”, tetapi hanya menciptakan sebuah model yang dengannya setiap orang dapat dengan sendirinya memahami , dan oleh karena itu, secara umum, investasi ini memiliki risiko dan keuntungan.
Mungkin penggunaan format unik untuk setiap API tidak akan menjadi solusi terbaik, lebih masuk akal untuk memilih dari yang sudah ada, misalnya JSON atau XML. Dalam hal ini, manfaat penerapan standar yang ada lebih besar daripada kemungkinan manfaat format unik. Namun, bisa sangat mahal untuk menstandarkan beberapa elemen layanan yang berbeda, misalnya, model pengguna yang telah disebutkan. Dalam hal ini, adalah logis untuk tidak pergi ke pengeluaran yang tidak dapat dibenarkan hanya demi menemukan satu-satunya model pengguna yang benar dan hanya berhenti pada model domain.
Secara umum, idealnya untuk setiap layanan, kami ingin tidak menemukan kembali roda ketika tidak diperlukan, tetapi untuk menggunakan kembali elemen desain yang mengurangi biaya sumber daya untuk membuat desain, pemahaman dan implementasinya. Jika kita dapat mencapai tingkat aplikasi ulang yang ideal seperti itu, atau setidaknya mendekatinya, ini akan memungkinkan pembuat layanan untuk fokus pada aspek-aspek desain yang perlu difokuskan tanpa terganggu oleh masalah yang sudah dipecahkan.
Kami melihat semakin banyak organisasi melakukan hal itu. Tetapi yang paling penting dalam hal ini adalah untuk memahami dan memastikan bahwa manual untuk perancang terus diperbarui: metode baru dievaluasi dan disetujui, metode lama keluar dari peredaran, dan kekuatan pendorong utama di balik perubahan ini adalah serangkaian metode API yang terus berkembang dalam organisasi.
Penting untuk dipahami bahwa sistem API adalah lingkungan yang mobile dan terus berubah, dan agar dapat terus bekerja, arsitektur harus mengikuti jalur yang sama untuk pengembangan berkelanjutan. Kemudian menjadi seperti sistem berskala sangat besar, misalnya, Internet, yang, di satu sisi, bekerja sepanjang waktu, dan di sisi lain, terus berubah dan standar dan teknologi baru terus muncul di dalamnya.
API arkeologi
Meskipun sekarang kita melihat sejumlah besar organisasi yang baru mulai membuat program dengan API, penting untuk diingat bahwa di organisasi mana pun yang menggunakan teknologi informasi, hampir pasti ada beberapa API yang telah digunakan untuk waktu yang lama.
Berdasarkan definisi tersebut, API adalah setiap antarmuka yang memungkinkan dua komponen perangkat lunak untuk berinteraksi. Jika Anda mempersempit definisi ke pemahaman modern tentang API jaringan, maka ini adalah antarmuka yang memungkinkan dua komponen perangkat lunak untuk berinteraksi melalui jaringan.
Di banyak organisasi, antarmuka seperti itu tidak disebut API dan tidak dirancang untuk digunakan kembali (ingat cerita tentang piagam API Jeff Bezos yang terkenal, yang kami katakan dalam sub-bagian Piagam Bezos dari bagian Berpikir Desain Bab 3). Tetapi paling sering antarmuka ini ada, bahkan jika mereka dibuat dan digunakan untuk integrasi hanya untuk penggunaan tunggal (merusak salah satu properti berguna utama dari API ini - kemungkinan untuk digunakan kembali).
Menemukan dan menerapkan proto-API seperti itu dapat berguna karena menunjukkan di mana kebutuhan untuk integrasi muncul (bahkan jika itu dibuat menggunakan metode yang tidak memenuhi tujuan API). Tidak semua proto-API ini harus diganti dengan API konvensional, tetapi hanya dengan memahami sejarah, Anda bisa mendapatkan ide tentang bagaimana kebutuhan untuk integrasi diamati, apa yang dilakukan di area ini dan di mana kebutuhan untuk integrasi tambahan mungkin muncul.
API PROTO
Perlunya interaksi komponen ada di semua sistem kompleks yang terdiri dari bagian yang terpisah. API adalah salah satu cara untuk melakukan ini, tetapi ada banyak cara lain. Dari sudut pandang API, mekanisme apa pun yang digunakan untuk interaksi komponen yang bukan API dapat dianggap sebagai proto-API. Dalam sistem yang ideal, menggunakan API, semua interaksi komponen dilakukan tanpa kecuali. Jika Anda mengingat gambar ideal ini, interaksi apa pun tanpa bantuan API menjadi kandidat untuk modernisasi - untuk diganti dengan API. Oleh karena itu, mekanisme apa pun untuk interaksi komponen tanpa bantuan API dapat dianggap sebagai proto-API.
Secara umum, arkeologi API dapat membantu Anda lebih memahami sistem API, meskipun sekarang sebagian besar terdiri dari proto-API. Ini memberikan titik awal untuk memahami kebutuhan akan integrasi yang telah muncul di masa lalu, dan untuk investasi API mana Anda dapat mengurai jaringan bermasalah dari banyak integrasi pengguna. Dengan pengalaman dan seiring waktu, mengganti integrasi yang dibuat sebelum munculnya API dengan model modern menjadi semakin mudah.
Manajemen API dalam skala besar
Manajemen API skala besar adalah tindakan penyeimbangan antara memperkenalkan desain bersama di tingkat sistem dan memaksimalkan kebebasan pilihan desain di tingkat API individu. Pilihan antara integrasi terpusat untuk konsistensi dan optimisasi dan desentralisasi untuk fleksibilitas dan pengembangan adalah masalah umum dalam sistem yang kompleks.
- Integrasi terpusat telah membawa kita pada arsitektur TI perusahaan pada masa lalu. Kekuatan pendorong utama adalah standarisasi pelaksanaan fungsi untuk menyediakannya secara optimal dan dengan biaya minimal. Integrasi tingkat tinggi benar-benar menyederhanakan optimasi, tetapi pada saat yang sama memengaruhi kemampuan untuk melakukan perubahan dan mengembangkan sistem akhir.
- Desentralisasi adalah kebalikannya. Contoh yang paling mudah diakses dan berskala besar adalah Internet. Kekuatan pendorong utama di sini adalah standardisasi akses ke fungsi sehingga Anda dapat menyediakannya dengan berbagai cara yang terus berkembang. Pada saat yang sama, fungsi tetap tersedia, karena akses didasarkan pada kesepakatan umum tentang interaksi fungsi. Tujuan utama dari desentralisasi adalah untuk melemahkan koherensi ( http://bit.ly/2FpcUpf ), yaitu untuk memfasilitasi perubahan di bagian individu dari keseluruhan sistem tanpa perlu mengubah bagian lain.
DESENTRALISASI DAN EKSEKUSI
Jika kita telah belajar sesuatu dari janji-janji yang belum terpenuhi saat arsitektur berorientasi layanan berdasarkan SOAP, maka eksekusi yang dikelola dengan hati-hati adalah aspek kunci dari penerapan prospek yang berorientasi layanan. SOAP memenuhi janji untuk menyediakan akses ke berbagai fungsi, tetapi tidak mengatasi tugas yang sama pentingnya dengan mengelola eksekusi fungsi dengan benar. Jadi, meskipun SOAP berguna (fungsi yang sebelumnya tidak tersedia muncul sebagai layanan), itu tidak memenuhi kebutuhan lingkungan yang lebih fleksibel dan berkembang.
Kompleksitas mengelola sistem API adalah untuk mengingat masalah ini dan menghindari jebakan yang terjerumus ke dalam SOAP. SOAP mengatakan bahwa hanya ketersediaan layanan yang penting. Ini adalah langkah pertama yang penting, tetapi tidak memungkinkan untuk mengatasi koherensi fungsi yang lemah. API dan, jika Anda berfokus terutama pada teknik implementasi dan penyebaran, layanan microser memungkinkan kami untuk memikirkan kembali apa yang penting untuk sistem layanan besar dan bagaimana membuat sistem yang tidak termasuk dalam perangkap SOAP.
Prinsip platform
Banyak yang berbicara tentang platform, membahas API dan tujuan bisnis utama. Namun, mereka dapat berarti hal yang sangat berbeda. Penting untuk diingat: jika pada level bisnis sepertinya ide yang baik untuk membuat sesuatu sebagai platform, ini tidak berarti bahwa ini adalah bagaimana ia harus dikembangkan pada level teknis.
Pada tingkat bisnis, platform menyediakan sesuatu untuk membangun sesuatu, dan kita tidak bisa melangkah lebih dalam daripada kata-kata yang agak kabur ini. Seringkali daya tarik konsep "platform" dipengaruhi oleh dua faktor utama.
- Apa cakupan platform? Artinya, berapa banyak pengguna yang dapat dijangkau dengan menciptakan sesuatu di platform ini? Ini biasanya ditentukan oleh jumlah pengguna atau pelanggan. Seringkali ini adalah parameter yang paling penting, dihitung dengan jumlah total atau dengan menggunakan faktor kualitatif yang menentukan pengguna yang tepat, yang dapat dicakup menggunakan platform ini.
- Fitur apa yang dimiliki platform ini? Jika Anda membuat sesuatu di dalamnya, bagaimana itu membantu Anda atau membatasi Anda dalam hal pendapatan? Dan apakah juga mudah untuk mengubah platform untuk menambahkan fitur baru, idealnya tanpa merugikan penggunanya?
Parameter ini sangat penting untuk bisnis, tetapi ada faktor yang sering dilupakan: platform selalu memaksa pengguna untuk mematuhi batasan tertentu, tetapi mereka melakukannya dengan cara yang berbeda. Berikut ini beberapa contohnya.
- Aplikasi web dapat digunakan oleh siapa saja dan apa pun yang memenuhi standar jaringan dasar. Dalam kasus paling sederhana, ini adalah browser modern dengan dukungan scripting. Siapa pun dapat membuat dan membuka akses ke sana, dan siapa pun dapat menggunakannya. Tidak ada elemen sentral yang mengontrol operasi platform web.
- Aplikasi di App Store Apple memiliki tampilan yang mirip dengan aplikasi web, tetapi disediakan dan digunakan dengan cara yang sangat berbeda. Mereka hanya dapat diunduh dari App Store, sehingga Apple memiliki hak eksklusif untuk memutuskan apa yang dapat dipasang pengguna. Selain itu, mereka hanya dapat dijalankan pada perangkat iOS, yaitu, Apple memiliki monopoli atas penjualan perangkat yang mampu menggunakan aplikasi ini. Aplikasi di App Store dibuat khusus untuk lingkungan iOS, yaitu, investasi dalam pembuatannya hanya dibatasi oleh platform ini. Untuk menggunakan aplikasi pada platform lain, termasuk Internet, itu harus direproduksi dalam lingkungan pengembangan yang berbeda dan bahkan dalam bahasa pemrograman yang berbeda, yang berarti: sisi klien dari aplikasi harus dibuat ulang dari awal.
Anda dapat menerapkan templat ini untuk sistem API dan gagasan membuat platform API untuk aplikasi.
Terkadang platform API merujuk ke lingkungan spesifik yang menyediakan akses ke API. Segera, itu mulai sedikit menyerupai bus layanan perusahaan tradisional, di mana platform serupa harus menyediakan infrastruktur, dan API menjadi dapat diakses karena fakta bahwa mereka dapat menggunakannya.
Dalam kasus lain, ketika berbicara tentang platform API, itu berarti seperangkat prinsip umum yang digunakan dan disediakan oleh layanan. Dalam hal ini, jika layanan menjadi bagian dari platform, itu tidak ada hubungannya dengan di mana dan bagaimana akses dibuka untuk itu. Jika layanan mematuhi prinsip, protokol, dan templat yang sama, mereka menyediakan API pada platform ini dan dengan demikian menjadi bagian dari sistem API.
Jenis platform kedua lebih abstrak, tetapi pada saat yang sama memiliki lebih banyak fitur. Memisahkan fungsi apa yang dilakukan dan bagaimana mereka melakukannya, itu memfasilitasi kontribusi pengguna ke platform. Ini juga membuka banyak jalur untuk inovasi, yang memungkinkan aplikasi untuk bereksperimen dengan metode implementasi tanpa mengurangi kemampuan mereka untuk berkontribusi pada sistem API.
Dan lagi, ambil Internet sebagai contoh. Jika Anda hanya melihat dari sudut pandang API, itu memungkinkan banyak untuk berubah seiring waktu. Misalnya, Jaringan Pengiriman Konten (CDN) tidak terintegrasi ke dalam Internet itu sendiri. Keberadaannya dimungkinkan karena kompleksitas konten Internet dan fleksibilitas browser, yang memungkinkan Anda untuk menghasilkan halaman web berdasarkan beberapa sumber yang diambil, mungkin dari tempat yang berbeda. Orang mungkin berpendapat bahwa potensi untuk membuat CDN sudah ada dalam prinsip dan protokol halaman web pertama, tetapi template CDN hanya muncul ketika muncul.
Ini adalah kemampuan untuk beradaptasi dengan tugas-tugas baru yang diperlukan dalam sistem API. Kami merancang sistem berdasarkan prinsip dan protokol yang terbuka dan dapat diperluas, tetapi kami dapat dan ingin mengubahnya jika perlu. Kami juga membuat templat dukungan yang membantu aplikasi menyelesaikan masalah dengan lebih efisien, dan kami ingin mengembangkan templat ini dari waktu ke waktu.
Prinsip, Protokol, dan Template
Kesimpulan utama dari bagian sebelumnya: platform seharusnya tidak memerlukan satu cara khusus untuk melakukan sesuatu (jawab pertanyaan "Bagaimana?") Atau satu tempat khusus (jawaban untuk pertanyaan "Di mana?"). Platform yang baik dibuat untuk pengembangan arsitektur yang berkelanjutan, yaitu arsitektur platform (dan bukan hanya arsitektur produk) yang terus berkembang, dan tidak semua dikembangkan sekaligus, sehingga kemudian tidak berubah sepanjang waktu keberadaannya.
PENGEMBANGAN ARSITEKTUR YANG BERKELANJUTAN
Pengembangan arsitektur berkelanjutan adalah metodologi untuk pengembangan berkelanjutan dari dasar-dasar arsitektur produk. Produk individual dibuat menggunakan kerangka arsitektur yang ada, dan laporan tentang penerapan kerangka kerja ini dapat meningkatkan arsitektur produk, sehingga lebih efisien.
Metodologi pengembangan yang fleksibel dan DevOps didedikasikan untuk meningkatkan pengembangan produk individual. Mereka tidak berbicara tentang cara meningkatkan dasar-dasar proses ini sehingga arsitektur sistem yang lebih efisien berguna untuk arsitektur produk. Pengembangan berkelanjutan terjadi ketika produk individual dibuat di lingkungan kerja sistem yang ada. Sistem membuatnya mudah untuk membuat produk baru, dan mereka membantu sistem menemukan area untuk perbaikan, sehingga menciptakan loop umpan balik.
Pengembangan arsitektur berkelanjutan berfokus pada pengembangan kerangka kerja yang tidak membahayakan produk yang ada dan memungkinkan penciptaan kombinasi produk. Idealnya, dasar-dasar arsitektur terus berkembang sehingga kompatibel dengan versi sebelumnya, sehingga pengoperasian sistem hampir tidak terganggu.
Agar pengembangan arsitektur berkelanjutan dapat dilakukan, platform harus dibangun berdasarkan prinsip, protokol, dan templat. Kami dapat menggambarkan hal ini dengan platform web. Sudah lama diketahui bahwa Internet sangat stabil dan fleksibel pada saat bersamaan. Selama 30 tahun terakhir, arsitektur dasarnya tidak berubah, tetapi, tentu saja, telah berkembang pesat. Bagaimana kontradiksi yang jelas ini menjadi mungkin? Bagaimanapun, sistem lain menghadapi masalah jauh lebih cepat, bergerak di sepanjang lintasan yang kurang radikal.
Salah satu alasan utama adalah tidak ada apa pun di Internet yang menunjukkan bagaimana layanan tertentu diimplementasikan atau diaktifkan. Layanan dapat diimplementasikan dalam bahasa apa pun, dan, tentu saja, layanan itu berubah selama bertahun-tahun, karena bahasa pemrograman juga berubah. Mereka disediakan menggunakan lingkungan kerja apa pun - pada awalnya itu adalah server yang terletak di ruang bawah tanah, sekarang terletak di Internet itu sendiri, dan baru-baru ini, penyimpanan cloud juga muncul. Layanan dapat digunakan oleh program klien apa pun - mereka juga telah berubah secara dramatis dari browser baris perintah sederhana menjadi browser grafis kompleks pada ponsel modern. Berfokus hanya pada antarmuka, yang menentukan bagaimana informasi dikenali, dipertukarkan, dan diperagakan, arsitektur Internet ternyata lebih baik disesuaikan dengan pertumbuhan alami daripada sistem TI kompleks mana pun yang telah kita lihat. Alasannya sangat sederhana.
- Prinsip adalah konsep dasar yang dibangun di atas landasan platform. Dalam kasus Internet, salah satu dari prinsip-prinsip ini adalah bahwa sumber daya diakui oleh pengidentifikasi sumber daya seragam (URI), dan kemudian protokol yang mengenali URI memberikan izin untuk berinteraksi dengan sumber daya ini. Jadi, walaupun kita dapat (setidaknya secara teori) pergi ke Internet tanpa HTTP (dan dalam arti tertentu kita sudah bergerak karena protokol di mana-mana berubah menjadi HTTPS), sulit untuk membayangkan bahwa mungkin untuk pergi ke Internet tanpa sumber daya. Prinsip-prinsip tersebut tercermin dalam gaya API, karena gaya didasarkan pada konsep dasar yang berbeda.
- , . (Hypertext Transfer Protocol (HTTP)), (FTP) , WebSockets WebRTC. , , HTTP/2.
- — . , , , . — Oauth, HTTP, — . — . , Oauth, , CDN. , , , , . — , .
, . , , . , -, .
, . . , - , . , , . , , , .
API . , , , , , . API — , , .
API
API . , , . , «» API, , API, .
API .
- API (, / ) . , API RPC — , API REST .
- API . , API HTTP HTTP.
- API . , 200 HTTP ( http://webconcepts.info/concepts/http-header/ ), . API , , .
- API , API ( «» . 188). : API , API, .
, — . , — . , , . , .
API — , .
- , , , , . , .
- , , . , . , , .
. , , , .
« » - - , . XML/JSON. XML-, API JSON ( , , , ).
API API
API , , , API . , . , API! API API: «, API, API».
, , API API (, , API). API API. API ( — «» « API» ), API . , .
, , , , . , API API.
, API API , . , .
. , API . , , - API.
«», «», «» «» . , , . , - , . , . , , , , , . « API» « API» 9 .
, API, API, API .
API , — , . . . — , .
, : , API, API. , , , , , , , API API, API API. API , , .
. , API, , , . , -, .
API API, , , , -. , : , API , , , , .
, API , : API , . : , , API, , .
— API, OAuth.io APIDays — API, . API API, , , API - . API, «API : », 2015 API « ». , - HEC API.
, API . IETF W3C. , , EMC, Siemens CA Technologies.
. API UX , API .
, , , , - . API API , , , API .
»Informasi lebih lanjut tentang buku ini dapat ditemukan di
situs web penerbit»
Isi»
Kutipan25% —
APISetelah pembayaran versi kertas buku, sebuah buku elektronik dikirim melalui email.