Gambaran Umum
Di lab ini, Anda akan membuat layanan mikro FAQ sederhana. Layanan mikro akan mengembalikan objek JSON yang berisi pertanyaan acak dan pasangan jawaban menggunakan titik akhir Amazon API Gateway yang memanggil fungsi AWS Lambda. Berikut adalah pola arsitektur untuk layanan mikro:
TOPIK YANG DIBAHAS
Pada akhir materi ini, Anda akan mampu:
- Membuat fungsi AWS Lambda
- Membuat titik akhir Amazon API Gateway
- Men-debug API Gateway dan Lambda dengan Amazon CloudWatch
PRASYARAT
Beberapa pengalaman pemrograman dan terbiasa dengan pengembangan aplikasi akan membantu, tetapi tidak diperlukan untuk menjalankan lab. Namun Anda harus telah menyelesaikan lab mandiri Pengantar AWS Lambda sebelum melakukan lab ini.
LAYANAN AWS LAINNYA
Layanan AWS lain selain yang diperlukan untuk lab ini dinonaktifkan oleh kebijakan IAM selama waktu akses Anda di lab ini. Selain itu, kemampuan layanan yang digunakan di lab ini dibatasi pada apa yang dibutuhkan oleh lab dan dalam beberapa kasus bahkan lebih dibatasi sebagai aspek yang disengaja dari desain lab. Saat mengakses layanan lain atau melakukan tindakan selain yang disediakan dalam panduan lab ini, Anda akan menerima pesan kesalahan.
Konsep Teknis
ARSITEKTUR LAYANAN MIKRO
“Gaya arsitektur layanan mikro adalah pendekatan untuk mengembangkan aplikasi tunggal sebagai rangkaian layanan kecil, masing-masing berjalan dalam prosesnya sendiri dan berkomunikasi dengan mekanisme yang ringan, seringkali berupa API sumber daya HTTP. Layanan ini dibangun berdasarkan kemampuan bisnis dan dapat diterapkan secara independen oleh mesin penerapan yang sepenuhnya otomatis. Ada minimal manajemen terpusat dari layanan ini, yang dapat ditulis dalam bahasa pemrograman yang berbeda dan menggunakan teknologi penyimpanan data yang berbeda.” – James Lewis dan Martin Fowler
Ide arsitektur layanan mikro adalah menggunakan sistem yang besar dan kompleks dan memecahnya menjadi layanan independen dan terpisah yang mudah dikelola dan diperluas. Ini memungkinkan pengembang untuk memenuhi tujuan desain utama mereka seperti ekstensibilitas, ketersediaan, dan pemeliharaan.
Amazon API Gateway dan AWS Lambda memberikan kombinasi sempurna dari layanan web untuk dengan mudah membangun, mengirimkan, dan memelihara rangkaian layanan mikro yang dapat menjadi dasar dari sistem perangkat lunak yang kompleks.
Di lab ini, Anda akan mempelajari cara mengembangkan, menerapkan, dan men-debug layanan mikro sederhana yang mewakili satu bagian dari sistem yang jauh lebih besar. Ini akan terdiri dari dua bagian: API RESTful dan fungsi yang dijalankan saat pengguna mencapai titik akhir.
ANTARMUKA PEMROGRAMAN APLIKASI (API)
Antarmuka pemrograman aplikasi adalah sekumpulan instruksi yang mendefinisikan bagaimana pengembang berinteraksi dengan aplikasi. Ide di balik API adalah untuk membuat pendekatan standar untuk menghubungkan berbagai layanan yang disediakan oleh aplikasi. API dirancang untuk digunakan dengan Kit Pengembangan Perangkat Lunak (SDK), yang merupakan kumpulan alat yang memungkinkan pengembang membuat aplikasi hilir dengan mudah berdasarkan API.
STRATEGI PERTAMA API
Banyak organisasi perangkat lunak yang mengadopsi Strategi pertama API, di mana setiap layanan dalam tumpukan mereka adalah yang pertama dan selalu dirilis sebagai API. Saat mendesain layanan, sulit untuk mengetahui semua berbagai aplikasi yang mungkin ingin memanfaatkan layanan tersebut. Misalnya, layanan FAQ di lab ini akan ideal untuk memasukkan halaman FAQ di situs web eksternal. Namun, mungkin untuk berpikir bahwa perusahaan pendidikan cloud juga ingin menyerap FAQ dalam materi pelatihan mereka untuk kartu kilas atau dokumen pelatihan. Jika itu hanya situs web statis, proses penyerapan untuk perusahaan pendidikan akan sangat sulit. Dengan menyediakan API yang dapat digunakan dalam format standar, layanan mikro memungkinkan pengembangan ekosistem di sekitar layanan, dan kasus penggunaan yang awalnya tidak dipertimbangkan.
API RESTFUL
Transfer status representasi (REST) mengacu pada arsitektur yang mengikuti enam batasan:
- Pemisahan masalah melalui model klien-server.
- Status disimpan sepenuhnya di klien dan komunikasi antara klien dan server stateless.
- Klien akan menyimpan data dalam cache untuk meningkatkan efisiensi jaringan.
- Ada antarmuka yang seragam (dalam bentuk API) antara server dan klien.
- Saat kompleksitas ditambahkan ke dalam sistem, lapisan diperkenalkan. Mungkin ada beberapa lapisan komponen RESTful.
- Mengikuti pola kode sesuai permintaan, di mana kode dapat diunduh dengan cepat (dalam kasus kami diterapkan di Lambda) dan diubah tanpa harus memperbarui klien.
Lab ini mengikuti model RESTful. Klien mengirim permintaan ke fungsi backend Lambda (server). Logika layanan dienkapsulasi dalam fungsi Lambda dan menyediakan antarmuka yang seragam untuk digunakan klien.
PRAKTIK TERBAIK UNTUK MEMBANGUN API RESTFUL
Tujuan utama membangun API adalah membantu membangun ekosistem inovasi di sekitar rangkaian layanan Anda. Oleh karena itu, penting untuk membuat API Anda intuitif dan mudah digunakan. Berikut adalah skema penamaan dan metode yang umum untuk diikuti:
OperasiURLFungsiGET/questionsMenampilkan semua pertanyaanGET/questions/17Mengembalikan pertanyaan nomor 17POST/questionsMembuat pertanyaan baruPUT/questions/17Memperbarui pertanyaan nomor 17PATCH/questions/17Memperbarui sebagian pertanyaan nomor 17DELETE/questions/17Menghapus pertanyaan nomor 17Perhatikan cara mendapatkan pertanyaan tertentu, titik akhir API BUKAN /pertanyaan/nama melainkan /pertanyaan/pengenal. Hal ini memungkinkan perancang API untuk menyediakan fungsionalitas untuk mengembalikan kelompok pertanyaan (bisa jadi semua pertanyaan) dengan titik akhir /pertanyaan serta tanggapan rekaman tunggal dengan /pertanyaan/pengenal. Untuk informasi lebih lanjut, lihat bagian sumber daya tambahan di akhir panduan lab ini.
Beberapa contoh API RESTful yang baik untuk diperhatikan adalah:
- AWS Elemental MediaConvert
- Spotify
- Twitch
- Netflix Genie
- Slack
AMAZON API GATEWAY DAN AWS LAMBDA
Layanan mikro yang menggunakan Amazon API Gateway terdiri dari sumber daya yang ditentukan dan metode terkait (GET, POST, PUT, dll.) di API Gateway serta target backend. Di lab ini, target backend adalah fungsi Lambda. Namun, target backend dapat berupa titik akhir HTTP lain (API pihak ketiga atau server web pendengar), proxy layanan AWS, atau integrasi tiruan untuk digunakan sebagai placeholder.
AMAZON API GATEWAY
API Gateway adalah layanan terkelola yang disediakan oleh AWS yang memudahkan pembuatan, penerapan, dan pemeliharaan API. API Gateway menyertakan fitur untuk:
- Mengubah isi dan header permintaan API yang masuk agar sesuai dengan sistem backend
- Mengubah isi dan header respons API yang keluar agar sesuai dengan persyaratan API
- Mengontrol akses API melalui AWS Identity dan Access Management
- Membuat dan menerapkan kunci API untuk pengembangan pihak ketiga
- Mengaktifkan integrasi Amazon CloudWatch untuk pemantauan API
- Merespons Cache API melalui Amazon CloudFront untuk waktu respons yang lebih cepat
- Menerapkan API ke beberapa tahap, yang memungkinkan pembedaan yang mudah antara pengembangan, pengujian, produksi, serta versioning
- Menghubungkan domain kustom ke API
- Menentukan model untuk membantu menstandarkan permintaan API dan transformasi respons Anda
AMAZON API GATEWAY DAN AWS LAMBDA TERMINOLOGY
- Sumber daya: Direpresentasikan sebagai titik akhir dan jalur URL. Misalnya, api.mysite.com/questions. Anda dapat mengaitkan metode HTTP dengan sumber daya dan menentukan target backend yang berbeda untuk setiap metode. Dalam arsitektur layanan mikro, sumber daya akan mewakili satu layanan mikro dalam sistem Anda.
- Metode: Di API Gateway, metode diidentifikasi berdasarkan kombinasi jalur sumber daya dan kata kerja HTTP, seperti GET, POST, dan DELETE.
- Permintaan Metode: Pengaturan permintaan metode di API Gateway menyimpan pengaturan otorisasi metode dan menentukan parameter String Kueri URL dan header permintaan HTTP yang diterima dari klien.
- Permintaan Integrasi: Pengaturan permintaan integrasi menentukan target backend yang digunakan dengan metode ini. Ini juga tempat Anda dapat menentukan templat pemetaan, untuk mengubah permintaan yang masuk agar sesuai dengan apa yang diharapkan oleh target backend.
- Respons Integrasi: Pengaturan respons integrasi adalah tempat pemetaan ditentukan antara respons dari target backend dan respons metode di API Gateway. Anda juga dapat mengubah data yang dikembalikan dari target backend agar sesuai dengan apa yang diharapkan oleh pengguna akhir dan aplikasi Anda.
- Respons Metode: Pengaturan respons metode menentukan tipe respons metode, header dan tipe kontennya.
- Model: Di API Gateway, model menentukan format, juga dikenal sebagai skema atau bentuk, dari beberapa data. Anda membuat dan menggunakan model untuk mempermudah pembuatan templat pemetaan. Karena API Gateway dirancang untuk bekerja terutama dengan data berformat JavaScript Object Notation (JSON), API Gateway menggunakan Skema JSON untuk menentukan skema data yang diharapkan.
- Tahap: Di API Gateway, tahap menentukan jalur di mana penerapan API dapat diakses. Ini biasanya digunakan untuk menyimpang antar versi, serta titik akhir pengembangan vs produksi, dll.
- Blueprint (Cetak biru): Cetak biru Lambda adalah contoh fungsi lambda yang dapat digunakan sebagai dasar untuk membangun fungsi Lambda baru.