Risiko vs. Hadiah: Panduan untuk Memahami Wadah Perangkat Lunak

Diterbitkan: 2022-03-11

Kita yang cukup tua dapat mengingat hari ketika perangkat lunak disampaikan terutama oleh media fisik. Penyebaran internet broadband dan smartphone telah membawa kita ke era layanan web—perangkat lunak yang dihosting di cloud yang diakses oleh klien pengguna seperti browser dan aplikasi.

Belum lama ini, aplikasi web dijalankan langsung pada mesin fisik di pusat data pribadi. Untuk kemudahan manajemen, aplikasi ini biasanya monolitik—satu server besar akan berisi semua kode back-end dan database. Sekarang, layanan web hosting seperti Amazon dan penyebaran teknologi hypervisor telah mengubah semua itu. Berkat Amazon Web Services (AWS) dan alat seperti VirtualBox, menjadi mudah untuk mengemas seluruh OS dalam satu file.

Menggunakan layanan seperti EC2, menjadi mudah untuk mengemas image mesin dan merangkai set server virtual. Seiring datangnya paradigma layanan mikro—pendekatan arsitektur perangkat lunak di mana aplikasi monolitik besar dipecah menjadi layanan terfokus yang lebih kecil yang melakukan satu hal dengan baik. Secara umum, pendekatan ini memungkinkan penskalaan dan pengembangan fitur yang lebih mudah karena kemacetan lebih cepat ditemukan dan perubahan sistem lebih mudah diisolasi.

Hewan peliharaan untuk Ternak

Saya menjadi insinyur infrastruktur tepat di puncak tren ini. Saya ingat membangun lingkungan produksi pertama saya di Amazon menggunakan serangkaian skrip bash. Server seperti hewan peliharaan bagi saya. Saya memberi mereka masing-masing nama yang lucu. Saya memantau mereka dengan cermat. Saya menanggapi peringatan dengan cepat dan menjaganya tetap sehat. Saya memperlakukan kejadian-kejadian itu dengan cinta dan kasih sayang karena menyakitkan untuk mencoba menggantikannya—seperti hewan peliharaan yang dicintai.

Datanglah Chef, alat manajemen konfigurasi, dan segera hidup saya menjadi lebih mudah. Dengan alat seperti Chef and Puppet, Anda dapat menghilangkan sebagian besar kesulitan manual yang terkait dengan pengelolaan sistem cloud. Anda dapat menggunakan konstruksi "lingkungan" untuk memisahkan server pengembangan, pementasan, dan produksi. Anda dapat menggunakan "kantong data" dan "perannya" untuk menentukan parameter konfigurasi dan mendorong set perubahan. Sekarang, semua server “hewan peliharaan” saya telah lulus dari sekolah kepatuhan.

Representasi grafis dari derek yang mengelola kontainer pengiriman

Kemudian pada tahun 2013, datanglah Docker, dan era baru dimulai: era perangkat lunak sebagai hewan ternak (permintaan maaf kepada penonton vegan mana pun). Paradigma kontainer adalah salah satu orkestrasi, bukan manajemen konfigurasi. Alat-alat seperti Kubernetes, Docker Compose, dan Marathon berfokus pada pergerakan di sekitar gambar yang telah ditentukan alih-alih menyesuaikan nilai konfigurasi pada instance yang sedang berjalan. Infrastruktur tidak dapat diubah; ketika sebuah wadah rusak, kami tidak mencoba memperbaikinya—kami menembaknya di kepala dan menggantinya. Kami lebih peduli tentang kesehatan kawanan daripada hewan individu. Kami tidak lagi memberikan server kami nama yang lucu.

Hadiahnya

Wadah membuat banyak hal lebih mudah. Mereka membiarkan bisnis lebih fokus pada saus khusus mereka sendiri. Tim teknologi tidak perlu terlalu khawatir tentang infrastruktur dan manajemen konfigurasi, melainkan lebih khawatir tentang kode aplikasi. Perusahaan dapat melangkah lebih jauh dan menggunakan layanan terkelola untuk hal-hal seperti MySQL, Cassandra, Kafka, atau Redis agar tidak harus berurusan dengan lapisan data sama sekali. Ada beberapa startup yang menawarkan layanan pembelajaran mesin “plug and play” juga untuk memungkinkan perusahaan melakukan analitik canggih tanpa mengkhawatirkan infrastruktur. Tren ini memuncak dalam model tanpa server—pendekatan arsitektur perangkat lunak yang memungkinkan tim untuk merilis perangkat lunak tanpa mengelola satu VM atau wadah. Layanan AWS seperti S3, Lambda, Kinesis, dan Dynamo memungkinkan hal ini. Jadi untuk memperluas analogi, kami telah beralih dari hewan peliharaan ke ternak ke semacam layanan hewan sesuai permintaan.

Semua ini sangat keren. Sungguh gila bahwa kita hidup di masa di mana seorang anak berusia dua belas tahun dapat membuat sistem perangkat lunak yang canggih dengan beberapa klik. Kita harus ingat bahwa, belum lama ini, ini tidak mungkin. Beberapa presiden AS yang lalu, media fisik adalah standar dan hanya perusahaan besar yang memiliki sarana untuk memproduksi dan mendistribusikan perangkat lunak. Perbaikan bug adalah kemewahan. Sekarang, anak berusia dua belas tahun itu dapat membuat akun AWS dan membuat perangkat lunaknya tersedia untuk seluruh dunia. Jika ada bug, seseorang akan mengganggunya di Slack dan, dalam beberapa menit, perbaikan akan dilakukan untuk semua pengguna.

Risiko

Sangat, sangat keren, tetapi bukan tanpa harganya—ketergantungan pada penyedia cloud seperti Amazon berarti ketergantungan pada perusahaan besar dan teknologi eksklusif. Jika Richard Stallman dan Edward Snowden tidak membuat Anda khawatir tentang hal-hal seperti itu, bencana baru-baru ini dengan Facebook pasti sudah terjadi.

Abstraksi yang lebih besar dari perangkat keras juga membawa risiko transparansi dan kontrol yang lebih rendah. Ketika ada sesuatu yang rusak dalam sistem yang menjalankan ratusan kontainer, kita harus berharap bahwa kegagalan itu muncul di suatu tempat yang dapat kita deteksi. Jika masalahnya ada pada sistem operasi host atau perangkat keras yang mendasarinya, mungkin sulit untuk menentukannya. Pemadaman yang dapat diselesaikan dalam 20 menit menggunakan VM mungkin memerlukan waktu berjam-jam atau berhari-hari untuk diselesaikan dengan container jika Anda tidak memiliki instrumentasi yang tepat.

Bukan hanya kegagalan yang perlu kita khawatirkan terkait hal-hal seperti Docker. Ada juga masalah keamanan. Apa pun platform container yang kami gunakan, kami harus percaya bahwa tidak ada pintu belakang atau kerentanan keamanan yang tidak diungkapkan. Menggunakan platform sumber terbuka juga bukan jaminan keamanan. Jika kami mengandalkan gambar penampung pihak ketiga untuk bagian dari sistem kami, kami mungkin rentan.

Bungkus

Paradigma peternakan menarik karena sejumlah alasan, tetapi bukannya tanpa kerugian. Sebelum bergegas untuk menampung seluruh tumpukan, tim teknologi perlu memikirkan apakah itu pilihan yang tepat atau tidak dan memastikan mereka dapat mengurangi efek negatifnya.

Secara pribadi, saya suka bekerja dengan kontainer. Saya senang melihat ke mana arahnya dalam sepuluh tahun ke depan seiring dengan munculnya platform dan paradigma baru. Namun, sebagai mantan konsultan keamanan, saya cukup berhati-hati untuk mengetahui bahwa segala sesuatu ada harganya. Terserah para insinyur untuk tetap waspada untuk memastikan bahwa kami tidak melepaskan otonomi kami sebagai pengguna dan pengembang. Bahkan alur kerja CD/CI termudah di dunia tidak akan sebanding dengan biayanya.

Terkait: Lakukan Matematika: Penskalaan Otomatis Aplikasi Layanan Mikro dengan Orkestra