Blog AWS Indonesia

Haruskah Startup menggunakan Infrastructure as Code (IaC)?

Pada saat Anda memulai suatu startup, tidak ada yang lebih penting selain melakukan segala hal dengan serba cepat. Anda melakukan iterasi dengan cepat untuk menemukan produk di pasar yang sesuai. Anda berlomba-lomba untuk memberikan dan menawarkan fitur terbaru sebelum pesaing Anda melakukannya, dan melakukan perbaikan serba cepat, dibanding menggunakan kaidah terbaik. Terkadang, para pelaku startup memilih untuk bertindak secara cepat terlebih dahulu dibandingkan mengembangkan infrastruktur teknis. Namun, Anda harus menyadari pada kenyataannya, Anda tetap harus meluangkan waktu untuk pondasi dasar infrastruktur agar dapat mengikuti pertumbuhan. Melewatkan pondasi dasar infrastuktur dapat mengakibatkan kesalahan besar, dan salah satunya yang sering tidak dilakukan adalah tidak menggunakan Infrastructure as Code (IaC).

Kita sering melihat startup memilih solusi “mudah”, solusi manual yang terus berulang dan tidak dapat direproduksi. Hanya individu yang menciptakan solusi tersebut yang memahami konfigurasinya. Ini mengarah ke configuration drifts — lingkungan di mana Anda menjalankan beban kerja di dalam infrastruktur yang berubah dari waktu ke waktu karena terjadi perubahan manual dan pembaruan lainnya. Jika tidak dilakukan dokumentasi yang baik, drift dapat menghabiskan waktu dan menimbulkan stres pada organisasi Anda, belum lagi kerugian finansial, karena masalah kecil. Sangat penting bagi pelanggan Anda untuk memiliki uptime yang tinggi dan semua keinginan mereka terpenuhi. Menunda penerapan IaC membuatnya menjadi lebih sulit untuk memberikan fitur dan perbaikan baru kepada pengguna, dan juga akan memakan waktu lebih lama untuk scaling sumber daya Anda seiring dengan pertumbuhan basis pengguna Anda.

Di dalam artikel ini, kami ingin menyoroti mengapa menggunakan IaC sangat penting dan bermanfaat, dan menunjukkan kepada Anda betapa bergunanya menerapkan IaC dengan menggunakan AWS Cloud Development Kit (AWS CDK).

Apa itu Infrastructure as Code?

Kata “Infrastructure” di dalam IaC mengacu pada semua server dan layanan yang Anda gunakan untuk membuat, menguji, menyebarkan, dan menjalankan aplikasi atau produk Anda. Jika aplikasi Anda berjalan pada instans Elastic Compute Cloud (EC2), maka infrastruktur tidak hanya mencakup instans EC2 tetapi juga Virtual Private Cloud (VPC) di mana instance berjalan, NAT Gateway yang Anda gunakan pada aplikasi untuk terhubung ke internet, Elastic Load Balancer (ELB) yang menangani lalu lintas dari pelanggan Anda, dan database Relational Database Service (RDS) tempat aplikasi Anda menyimpan data. Selain itu, jika aplikasi Anda bergantung pada managed queue seperti SQS atau orkestrator alur kerja seperti Step Functions, layanan tingkat aplikasi tersebut juga termasuk dalam definisi Infrastruktur kami. Selanjutnya, jika Anda menjalankan aplikasi Anda sebagai fungsi serverless atau sebagai container, maka API Gateway dan definisi container juga merupakan bagian dari Infrastruktur Anda.

Kata “Code” di dalam IaC adalah skrip atau program yang dapat dijalankan oleh proses otomatis yang membuat, mengkonfigurasi, deploy, dan menguji infrastruktur apa pun yang telah dibuatnya. Dalam beberapa kasus, itu bisa menjadi kode deklaratif, seperti JSON atau YAML yang dijalankan di dalam layanan CloudFormation. Dalam kasus lain, kodenya bisa berupa AWS SDK API yang dapat Anda gunakan di berbagai bahasa prosedural seperti Python, TypeScript, atau Java untuk menyediakan infrastruktur.

Sedikit Mengenai IaC

Kami mendorong penggunaan AWS CDK bukan sebagai satu-satunya tool untuk IaC. Ada beberapa framework dan tool IaC populer yang dapat digunakan pelanggan dengan AWS, misalnya HashiCorp’s Terraform. Banyak dari jenis tool ini, termasuk Terraform, bekerja dengan melakukan panggilan API ke AWS melalui AWS SDK. Dependency dan state management adalah fungsi utama dari tool itu.

Sebaliknya, AWS CDK berfungsi dengan mengubah kode prosedural yang ditulis dalam bahasa pemrograman konvensional menjadi templat deklaratif CloudFormation. Keuntungan dari CloudFormation akan mempertahankan status dan dependensi infrastruktur Anda sehingga Anda tidak perlu menyimpan atau mengelolanya. Dengan AWS CDK, Anda dapat menggunakan perangkat lunak yang familiar dan powerful, praktik terbaik, seperti type-safety, reusability, unit testing, source control branching dan merging, serta continuous deployment. Mirip dengan tool yang lain, AWS CDK juga menyediakan utilitas command-line untuk menerapkan kode deklaratif yang dihasilkan ke dalam CloudFormation. Pada langkah ini, AWS CDK dapat menghasilkan kebijakan keamanan dengan konsep least-privilege yang diperlukan untuk menentukan dan mengoperasikan infrastruktur dan layanan Anda.

Bagaimana AWS CDK dapat membantu

Sekarang setelah kami menjelaskan apa yang dapat dilakukan AWS CDK, mari kita bicara praktik di dunia nyata di mana IaC dapat membuat perbedaan.

Bayangkan dalam situasi: Startup Anda mengembangkan aplikasi software-as-a-service (SaaS) yang luar biasa dan ditargetkan untuk industri jasa keuangan. Anda telah melakukan segalanya dengan benar untuk menemukan produk untuk pasar yang cocok, mengembangkan aplikasi yang dapat scaling dan banyak digunakan serta memudahkan pelanggan baru untuk menggunakannya. Namun, sejak awal, Anda memutuskan untuk menghemat waktu dengan men-deploy infrastruktur aplikasi Anda tanpa IaC. Sejauh ini, itu tidak menjadi masalah karena Anda menggunakan EC2 auto-scaling untuk menangani pertumbuhan. Seiring pertumbuhan bisnis Anda, pelanggan yang lebih besar akan berdatangan. Dengan cepat, Anda akan menarik perhatian perusahaan jasa keuangan global, yang berminat kepada Anda. Jika Anda menjadikan mereka pelanggan, itu akan benar-benar mengubah arah startup Anda, jadi pasti Anda sangat ingin mengajak mereka bergabung.

Namun, mereka ingin aplikasi tersebut dideploy untuk mereka sebagai single-tenant di dalam akun AWS mandiri yang mereka miliki. Harus menciptakan lingkungan baru dari awal akan berdampak langsung dan signifikan pada bisnis Anda. Para perusahaan jasa keuangan global ini akan membutuhkan waktu lebih lama untuk bergabung, dan mereka harus menunggu lebih lama untuk proses perubahan infrastruktur. Tidak hanya itu, kemungkinan Anda akan memperbarui aplikasi SaaS multi-tenant Anda lebih sering dibandingkan single-tenant Anda. Seiring waktu, single-tenant Anda akan melihat bahwa mereka tidak menerima pembaruan dibandingkan dengan rekan multi-tenant mereka. Dengan harus deploy infrastruktur tanpa menggunakan IaC, Anda memberi pelanggan Anda pengalaman yang buruk. Dan tantangan yang Anda dihadapi akan terus bertambah. Jika Anda ingin berkembang, Anda harus menghadapi pelanggan single-tenant lainnya. Masing-masing akan menambah kompleksitas dan risiko.

Ketika Anda memutuskan untuk tidak menggunakan IaC, manfaat utama yang Anda lewatkan adalah otomatisasi. Tanpa mendefinisikan infrastruktur Anda dalam kode, Anda tidak dapat mengotomasi pembuatannya. Sebaliknya, Anda harus membuat infrastruktur baru secara manual saat Anda perlu men-deploy lingkungan baru. Seiring pertumbuhan startup Anda, Anda harus men-deploy beberapa lingkungan. Anda juga perlu memelihara lingkungan yang Anda buat, jadi harus memperbaruinya juga secara manual, berisiko, dan memakan waktu. Di awal, mungkin jumlah lingkungan akan sedikit. Anda mungkin memiliki satu lingkungan produksi dan satu lingkungan tes. Tetapi pada kenyataannya Anda cenderung memiliki lebih banyak lingkungan dan Anda perlu memastikan mereka memiliki kualitas yang sama, sehingga tidak menimbulkan perilaku yang berbeda di setiap lingkungan diluar prediksi.

Tujuan

Jika tujuan Anda adalah membangun perusahaan modern menggunakan praktik terbaik pengembangan saat ini, maka Anda akan memiliki lingkungan untuk pengembangan, unit testing, integration testing, pengujian proses pra-produksi, dan produksi itu sendiri. Jika Anda memiliki lingkungan single-tenant atau Anda bahkan mungkin memiliki tiga lingkungan yang diduplikasi untuk setiap tenant tersebut. Proses menyediakan dan memperbarui infrastruktur di semua lingkungan ini dilakukan secara manual akan menjadi sulit, membutuhkan waktu, kompleksitas, dan menimbulkan biaya kepada kegiatan operasi startup Anda. Dan itu hanya akan menjadi lebih menantang seiring pertumbuhan startup Anda.

Sebaliknya, dengan AWS CDK Anda dapat meletakkan infrastruktur, kode aplikasi, dan konfigurasi Anda semua di satu tempat, memastikan bahwa pada setiap titik pencapaian Anda memiliki sistem yang lengkap dan dapat di-deploy di cloud. Hal ini menjadikan AWS CDK cara tercepat untuk memulai IaC pada fase awal startup, karena pengembang tidak perlu mempelajari alat (tool) atau bahasa pemrograman baru seperti yang mereka lakukan dengan kompleksitas JSON/YAML CloudFormation atau Hashicorp Configuration Language (HCL) dengan Terraform. AWS CDK dibekali dengan dengan bahasa yang sudah diketahui, sambil memungkinkan mereka untuk mulai belajar dengan membuat perubahan kecil yang pada akhirnya akan diterjemahkan ke dalam perubahan besar yang dapat scaling. Ini memberi Anda kemampuan untuk menciptakan sesuatu yang secara cepat namun mempunyai dampak jangka panjang dan menghemat waktu Anda sekarang dan di masa depan.

Nilai Lebih dengan Otomasi

Ketika kita memikirkan semua langkah yang diperlukan untuk men-deploy versi terbaru aplikasi, mampu men-deploy dengan otomatisasi adalah kunci untuk memberikan nilai kepada pelanggan. Sebagai startup, Anda tidak hanya akan menciptakan lingkungan baru saat Anda melakukan on-boarding pelanggan baru; Anda harus mengiterasi dengan cepat produk Anda dan mengumpulkan masukan dari pelanggan Anda secara konstan. Melakukan update deployment secara aman serta dapat dites, dan tanpa potensi kesalahan manusia, adalah salah satu manfaat utama otomatisasi melalui IaC untuk startup.

Saatnya untuk memulai! Kami merekomendasikan AWS CDK Intro Workshop sebagai on-ramp cepat untuk belajar dengan kecepatan startup. Jika Anda telah menunda berinvestasi waktu dan sumber daya ke dalam infrastruktur sebagai kode dan otomatisasi, sekarang akan menjadi waktu yang tepat untuk menjadikannya prioritas.

Tulisan ini diterjemahkan dari tulisan https://aws.amazon.com/blogs/startups/should-startups-use-infrastructure-as-code-iac/ yang ditulis oleh AWS Editorial Team

Pugar Jayanegara

Pugar Jayanegara

Pugar adalah seorang Senior Solution Architect di AWS dengan keahlian khusus dalam container, di mana ia membantu pelanggan untuk mentransformasi bisnis mereka. Sebelum bergabung dengan AWS, ia bekerja di berbagai perusahaan teknologi dan cloud utama dengan peran senior solution architect dalam integrasi sistem dan pengembangan software. Ia antusias dalam mengeksplorasi teknologi baru, membangun solusi kreatif & efektif untuk pelanggan dan mitra.