DISCLAIMER:
Saya baru 1 bulan belajar mengenai cloud server. jika ada kesalahan atau kurang pas dalam menjelaskan, silahkan di koreksi dan bisa menghubungi saya via me@yudaferry.my.id.
Basic skill saya Nodejs, sehingga contoh-contoh aplikasi dalam artikel ini akan menggunakan nodejs atau javascript stack.
Apa itu AWS CDK ?
Jika ingin mengetahui penjelasan official apa itu AWS CDK, bisa di lihat di web ini.
Saya menjelaskan apa itu AWS CDK menurut kaca mata awam yang baru belajar AWS 1 bulan (saat artikel ini di tulis).
Menurut saya AWS CDK adalah source code yang di tulis untuk membangun AWS service.
AWS memiliki banyak sekali service, seperti : AWS lambda, AWS S3, AWS EC2, dan lain-lain.
Umum-nya, untuk membangun suatu cloud service , kita menggunakan suatu web app dalam istilah awam kadang di sebut web backend atau web back office, di AWS di sebut web console.
Di dalam web app tersebut biasanya ada menu dan tombol yang bisa kita klik untuk memilih opsi-opsi yang sudah di sediakan.
Tapi di AWS (dan kemungkinan cloud server yang lain juga) memberi fasilitas bagi para programmer untuk manage cloud server-nya dengan menggunakan source code, meskipun bisa juga menggunakan web GUI.
Apa itu AWS Amplify ?
Menurut official AWS amplify website , AWS amplify adalah:
AWS Amplify adalah semua yang Anda butuhkan untuk membangun aplikasi web dan seluler. Mudah dimulai, mudah diskalakan
Tapi, dalam sebulan menggunakan AWS amplify untuk research. saya lebih memahami AWS amplify sebagai sebuah container besar untuk membangun WEB APP (dengan jelas saya katakan di sini WEB APP). karena syarat utama untuk jalan integrated AWS amplify auto deploy adalah file web html (meskipun hanya single index.html file.
Saya sebutkan di atas juga, kalau AWS amplify ada container besar, karena di dalamnya kita bisa membangun ekosistem yang terdiri dari banyak AWS service lain. misal kita mau menggunakan AWS appsync dan AWS dynamoDB untuk membuat web atau aplikasi kita real time. atau kita bisa menambahkan HTTP REST API dengan AWS Lambda dan API Gateway.
Kenapa CDK harus di gabungkan dengan amplify ?
Dari 2 penjelasan di atas, pasti pembaca melihat banyak kesamaan AWS CDK dan AWS Amplify, keduanya sama-sama digunakan untuk membangun ekosistem AWS service.
Perbedaan-nya terletak pada dokumentasi dan kemudahan dalam integrasi dengan AWS service, AWS Amplify menyederhanakan dalam membangun AWS service tapi AWS amplify memiliki limitasi service-nya. hanya service-service tertentu yang dimudahkan. Dokumentasi AWS amplify juga lebih To The Point to general needs. Sedangkan AWS CDK lebih kompleks, flexible dan detil konfigurasi-nya untuk membangun AWS service, tapi AWS CDK memiliki dokumentasi yang lebih sulit untuk di baca dan di pelajari.
Lalu, kalau sudah di bedakan sm AWS team, kenapa sekarang mau di gabungkan lagi ?
Jawabannya ada pada kebutuhan, saat kita membangun suatu produk, pada umumnya kita ingin memenuhi target MVP dulu. semakin besar produk-nya ingin bisa menggunakan service lain dan lebih bisa di kendalikan service-servicenya. Contohnya gini:
Siapa dan kapan AWS amplify atau AWS CDK digunakan ?
Dari sudut pandang pengalaman saya yang tidak terlalu banyak di cloud server.
AWS Amplify digunakan oleh seseorang yang ingin membangun aplikasi real time dari awal, dan tidak terlalu memiliki latar belakang backend programming.
Sedangkan AWS CDK digunakan oleh seseorang yang sudah punya ilmu AWS basic service dan sudah paham benar service apa yang dibutuhkan. Sehingga membaca dokumentasi AWS CDK-nya tidak terlalu bingung.
Bagaimana integrasinya ?
Dalam contoh case integrasi AWS amplify dan AWS CDK ini, saya akan membuat AWS Lambda di sisi AWS Amplify, sedangkan di sisi AWS CDK saya akan membuat AWS appsync service.
Mengapa saya menggunakan AWS lambda di sisi Amplify, karena saya ingin menggunakan secret dan environment variable dari amplify. Di AWS CDK bisa juga kita buat service AWS Secret Manager data, tapi data ini ada biayanya. sehingga saya memilih membuat AWS Lambda di sisi AWS Amplify.
AWS Lambda ini akan menjadi resolver atau function penghubung AWS appsync dengan external database atau external process, sehingga source code bisa lebih flexible dan bebas dalam menentukan apa saja yang bisa ter-integrasi dengan AWS Lambda.
full tutorialnya bisa di lihat di repo ini