Persistent Storage: Memori Jangka Panjang di Era Kontainer

Diterbitkan: 2023-04-17

Persistent storage mengacu pada retensi data dengan cara yang tidak mudah menguap sehingga tetap tersedia bahkan setelah perangkat atau aplikasi dimatikan atau dihidupkan ulang. Penyimpanan dan pengambilan data memungkinkan aplikasi web menyimpan informasi dan status pengguna serta beroperasi dengan andal.

Dalam aplikasi monolitik, akses penyimpanan sangat mudah karena server dan penyimpanan hidup bersama. Namun, sistem yang terdistribusi secara geografis membuat akses menjadi lebih kompleks, karena sistem penyimpanan harus tetap tersedia untuk semua komponen di seluruh dunia.

Kontainerisasi semakin memperumit masalah karena kontainer bersifat ringan, tanpa kewarganegaraan, dan singkat — karakteristik yang tidak cocok untuk menyimpan data. Oleh karena itu, solusi penyimpanan persisten apa pun harus dapat bekerja secara lancar dengan kontainer, menambah lapisan kerumitan lainnya.

Artikel ini menyelidiki penyimpanan persisten dengan menjelajahi jenis, arsitektur, dan kasus penggunaannya. Ini juga memberikan demonstrasi langsung yang menggambarkan perbedaan antara penyimpanan volume dan penyimpanan volume persisten di Docker.

Jenis Penyimpanan Persisten

Ada beberapa jenis penyimpanan non-volatile, termasuk disk berputar tradisional (hard disk drive atau HDD), solid-state drive (SSD), penyimpanan terpasang jaringan (NAS), dan jaringan area penyimpanan (SAN).

  • HDD adalah perangkat penyimpanan data elektro-mekanis yang menyimpan dan mengambil data digital menggunakan disk berputar dari media magnetik. Disk menggunakan kepala magnetik pada lengan aktuator bergerak yang membaca dan menulis data.
  • SSD , terkadang disebut perangkat penyimpanan semikonduktor, perangkat solid-state, atau solid-state disk, menggunakan rakitan sirkuit terpadu untuk menyimpan data secara terus-menerus, biasanya menggunakan perangkat flash yang saling terhubung yang tidak mengandung bagian yang bergerak. Sifat stasionernya membuatnya lebih cepat dan lebih andal daripada HDD.
  • Penyimpanan yang terhubung ke jaringan adalah sekelompok HDD, SSD, atau keduanya, yang terhubung melalui jaringan lokal menggunakan sistem file seperti Sistem File Teknologi Baru (NTFS) atau sistem file keempat yang diperluas (EXT4).
  • SAN adalah jaringan perangkat penyimpanan tingkat blok berkecepatan tinggi, seperti pustaka pita atau larik disk. Sambungan mereka muncul ke sistem operasi sebagai penyimpanan lokal dan tidak dapat diakses melalui jaringan area lokal (LAN).
Amankan data Anda selama dimatikan dan mulai ulang dengan penyimpanan persisten! Begini caranya Klik untuk Tweet

Arsitektur Penyimpanan Persisten

Ada tiga pendekatan untuk penyimpanan persisten, masing-masing dengan kasus penggunaan dan batasan yang unik.

Arsitektur Persisten Objek

Pendekatan arsitektur persisten objek menggunakan object-relational mapping (ORM) untuk menyimpan data sebagai objek dalam database relasional atau key-value. Pendekatan ini berguna ketika data tidak memiliki skema yang ditentukan, karena ORM menangani penyimpanan dan pengambilannya.

Blok Persisten Arsitektur

Blokir arsitektur persisten menggunakan perangkat penyimpanan tingkat blok, yang berguna saat menyimpan file besar. Pendekatan ini bermanfaat saat menyimpan data dalam jumlah besar, karena Anda dapat menggunakan banyak blok untuk meningkatkan kapasitas penyimpanan.

Arsitektur Persisten Filestore

Seperti namanya, pendekatan arsitektur persisten filestore menggunakan sistem file untuk menyimpan data. Salah satu metode melibatkan penggunaan server basis data, yang menyediakan cara penyimpanan data terpusat. Solusi cloud hosting seperti Kinsta menggunakan server basis data yang mudah dilampirkan ke aplikasi dan menawarkan kegigihan.

Arsitektur persisten Filestore sangat membantu dalam aplikasi yang membutuhkan pengambilan file yang sering dan saat Anda memerlukan antarmuka untuk mengelolanya.

Kasus Penggunaan Persistent Storage

Bagian ini membahas beberapa kasus penggunaan dari setiap jenis penyimpanan.

Penyimpanan Persisten Objek

  • Penyimpanan cloud: Penyimpanan persisten objek umumnya digunakan dalam solusi penyimpanan cloud untuk menyimpan dan mengambil data tidak terstruktur dalam jumlah besar, seperti gambar, video, dan dokumen. Penyedia cloud menggunakan penyimpanan objek untuk memberi pelanggan layanan penyimpanan yang dapat diskalakan, sangat tersedia, dan tahan lama.
  • Analitik data besar: Penyimpanan persisten objek digunakan dalam analitik data besar untuk menyimpan dan mengelola kumpulan data besar yang sering digunakan untuk analisis data, pembelajaran mesin, dan AI. Penyimpanan objek memungkinkan data diakses dengan cepat dan efisien, menjadikannya komponen kunci dari arsitektur big data.
  • Jaringan pengiriman konten: Penyimpanan persisten objek digunakan dalam jaringan pengiriman konten (CDN) untuk menyimpan dan mendistribusikan konten, seperti gambar, video, dan file statis, di seluruh jaringan server global. Penyimpanan objek memungkinkan CDN mengirimkan konten berkecepatan tinggi ke pengguna di seluruh dunia, di mana pun lokasinya.

Blokir Penyimpanan Persisten

  • Komputasi kinerja tinggi (HPC) : Lingkungan HPC memproses volume data yang cukup besar dan cepat. Blokir penyimpanan persisten memungkinkan klaster HPC untuk menyimpan dan mengambil kumpulan data besar, seperti simulasi ilmiah, pemodelan cuaca, dan analisis keuangan. Penyimpanan blok sering kali lebih disukai untuk HPC karena memberikan kinerja tinggi, akses latensi rendah ke data, dan memungkinkan operasi input/output (I/O) paralel, yang dapat meningkatkan waktu pemrosesan secara signifikan.
  • Pengeditan video: Aplikasi pengeditan video memerlukan akses kinerja tinggi dan latensi rendah ke file video besar. Mereka juga harus mengakomodasi sejumlah besar operasi I/O per detik dan latensi rendah untuk merender dan mengedit file video secara real-time. Penyimpanan blok menyediakan kemampuan ini, menjadikannya solusi ideal untuk alur kerja pengeditan video.
  • Game: Aplikasi game juga menuntut kinerja tinggi dan latensi rendah untuk mengakses aset game dan data pemain. Blokir penyimpanan dengan cepat menyimpan dan mengambil data dalam jumlah besar, memastikan lingkungan game dimuat dengan cepat dan tetap responsif selama bermain game.

Penyimpanan Persisten Filestore

  • Media dan hiburan: Aplikasi pengeditan video, animasi, dan rendering biasanya menggunakan penyimpanan persisten. Aplikasi ini memerlukan akses kinerja tinggi dan latensi rendah ke file media besar, seperti video, audio, dan gambar. Filestore menyediakan sistem file bersama yang dapat diakses oleh banyak klien, menjadikannya solusi penyimpanan yang ideal untuk aplikasi ini.
  • Manajemen konten web: Sistem manajemen konten web (CMS) menggunakan penyimpanan persisten filestore dalam sistem file bersama untuk menyimpan dan mengelola konten situs web, seperti teks, gambar, dan file multimedia. Filestore menyediakan lokasi sentral untuk konten situs web, memudahkan pengelolaan dan pembaruan. Ini juga memungkinkan banyak pengguna untuk secara bersamaan mengerjakan konten yang sama, meningkatkan kolaborasi dan produktivitas.

Penyimpanan Persisten dalam Wadah

Kontainer ringan, portabel, aman, dan lugas, menawarkan perpaduan antara berbagai aplikasi. Mereka harus memiliki mekanisme untuk mempertahankan data antara restart dan penghapusan kontainer. Kontainer memiliki penyimpanan file atau sistem file seperti aplikasi tradisional, tetapi setiap kali Anda membangunnya kembali dengan perubahan baru, Anda akan kehilangan semua data yang tidak tetap.

Itulah mengapa kontainer menawarkan opsi untuk menyertakan volume penyimpanan atau memasang volume penyimpanan. Wadah memperlakukan volume penyimpanan sebagai direktori. Setiap data yang ditulis ke volume masuk ke sistem file host.

Persistent storage untuk container harus berfungsi dengan cara ini karena memulai ulang container akan membuat instance baru dan menghapus instance lama. Jika penampung tidak memiliki tampilan data yang konsisten, data akan hilang saat penampung dimulai ulang. Volume penyimpanan menyimpan data di seluruh sesi dan penampung dimulai ulang, memungkinkan penampung untuk mempertahankan statusnya meskipun dipindahkan atau dimulai ulang.

Volume vs Volume Persisten

Kontainer menyediakan 2 cara untuk menyimpan data persisten: menggunakan volume dan volume persisten. Ada perbedaan yang signifikan di antara mereka. Wadah mengelola data dalam penyimpanan volume. Saat Anda menghentikan penampung, data tetap ada dan tersedia saat Anda memulai ulang penampung. Namun, saat Anda menghapus atau membuang wadah, data akan hilang karena Anda juga menghapus penyimpanan volume yang mendasarinya.

Persistent volume storage atau bind mounts adalah cara menyimpan data di luar sistem file container. Dengan cara ini, data tidak hilang bahkan saat Anda menghapus penampung. Itu terus-menerus sampai dihapus secara manual.

Bagian berikut menunjukkan kedua jenis volume dengan contoh.

Demo Penyimpanan Persisten Kontainer

Kami telah membuat aplikasi web kecil untuk mendemonstrasikan penyimpanan persisten dengan container Docker. Anda dapat mengikuti dengan menginstal Docker dan mengambil kode dari repositori GitHub ini.

Aplikasi ini merupakan bentuk dasar dengan 2 bidang untuk input pengguna:

  • Judul
  • Teks Dokumen
Tangkapan layar: Umpan balik aplikasi demo dari antarmuka grafis.
GUI aplikasi demo dengan bidang Judul dan Teks Dokumen .

Setelah Anda menyimpan masukan pengguna, Anda dapat mengaksesnya dengan membuka file di direktori umpan balik dengan nama yang disediakan di bidang Judul . Input dari bidang Teks Dokumen adalah konten file.

Cara Menggunakan Penyimpanan Volume

Setelah Anda menginstal aplikasi di mesin Anda sendiri, itu dapat menggunakan penyimpanan volume seperti yang ditunjukkan di Dockerfile .

Tangkapan layar: Konten file Docker, termasuk atribut VOLUME.
Dockerfile menunjukkan penggunaan penyimpanan volume.

Sekarang, Anda membuat image dan menjalankan container. Untuk melakukannya, jalankan perintah berikut.

 docker build -t feedback-node:volumes . docker run -d -p 3000:80 --name feedback-app feedback-node:volumes
Tangkapan layar: Jendela terminal menampilkan hasil perintah docker build dengan penyimpanan volume.
Membangun aplikasi dengan penyimpanan volume.
Tangkapan layar: Jendela terminal setelah menjalankan perintah docker run dengan penyimpanan volume.
Menjalankan wadah menunjukkan bahwa ia mengelola penyimpanan volume.

Setelah aplikasi berjalan, navigasikan ke localhost:3000 untuk mengirimkan umpan balik.

Tangkapan layar: Mengirim umpan balik melalui antarmuka grafis aplikasi demo.
Mengirim umpan balik ke aplikasi.

Klik Simpan dan arahkan ke localhost:3000/feedback/test.txt untuk melihat apakah input berhasil disimpan atau tidak.

Tangkapan layar: Browser dengan file test.txt yang dikirimkan terbuka.
Umpan balik yang berhasil dikonfirmasi.

Hapus dan mulai ulang wadah untuk melihat apakah input tetap ada.

 docker stop feedback-app docker start feedback-app

Jika sekarang Anda mengunjungi URL yang sama, Anda melihat bahwa umpan baliknya masih ada. Tetapi apa yang terjadi jika Anda melepas wadah dan menyalakannya kembali?

 docker stop feedback-app docker rm feedback-app docker run -d -p 3000:80 --name feedback-app feedback-node:volumes

Setelah dimulai ulang, jika Anda kembali ke URL tersebut, URL tersebut tidak ada lagi karena datanya hilang saat Anda menghapus penampung. Data volume tetap ada hanya saat menghentikan wadah, bukan saat melepasnya.

Tangkapan layar: Kegagalan pelaporan browser untuk membuka file test.txt.
Data umpan balik telah hilang.

Untuk mengurangi masalah ini dan menyimpan data bahkan saat Anda menghapus penampung, Anda harus menggunakan penyimpanan volume tetap atau penyimpanan bernama. Pertama, Anda harus membersihkan wadah dan gambar.

 docker stop feedback-app docker rm feedback-app docker rmi feedback-node:volumes

Cara Menggunakan Persistent Volume Storage

Sebelum menguji ini, Anda harus menghapus atribut VOLUME dari Dockerfile dan membangun kembali image.

Tangkapan layar: Dockerfile diedit untuk menghapus atribut VOLUME.
Dockerfile yang diperbarui untuk menghapus atribut VOLUME.
 docker build -t feedback-node:volumes . docker run -d -p 3000:80 --name feedback-app -v feedback:/app/feedback feedback-node:volumes

Seperti yang Anda lihat, pada perintah kedua, Anda menggunakan flag -v untuk menentukan volume persisten di luar wadah, yang tetap ada bahkan saat Anda menghapus wadah.

Seperti langkah sebelumnya, coba tambahkan umpan balik dan akses setelah Anda menghentikan, menghapus, dan memulai ulang penampung.

Tangkapan layar: Memasukkan teks dalam formulir umpan balik aplikasi demo.
Menambahkan masukan baru untuk uji kegigihan.
 docker stop feedback-app docker rm feedback-app docker run -d -p 3000:80 --name feedback-app -v feedback:/app/feedback feedback-node:volumes

Seperti yang Anda lihat, bahkan setelah menghentikan dan menghapus penampung, data dapat diakses dan tetap ada.

Tangkapan layar: Browser yang berhasil membuka file pengujian kedua.
Setelah menghentikan dan menghapus penampung, data tetap ada.
Penyimpanan persisten: kunci aplikasi kemas yang stabil dan andal! Selami jenis, arsitektur, dan kasus penggunaan di sini ️ Klik untuk Tweet

Ringkasan

Persistent storage sangat penting untuk aplikasi dalam container karena memungkinkan data tetap ada di luar siklus hidup container. 2 tipe utama penyimpanan persisten untuk aplikasi dalam container adalah volume dan bind mount, masing-masing dengan manfaat dan kasus penggunaannya.

Volume disimpan dalam sistem file wadah, sementara bind mount dapat diakses langsung di mesin host.

Persistent storage memungkinkan data untuk dibagikan antar container, sehingga memungkinkan untuk membangun aplikasi multi-tier yang kompleks. Persistent storage sangat penting untuk memastikan stabilitas dan kontinuitas aplikasi dalam container, menyediakan cara yang andal dan fleksibel untuk menyimpan data penting.

Dan jika Anda menggunakan Docker untuk mengembangkan aplikasi web Anda, Anda akan merasa sangat mudah untuk mengonfigurasi penerapan Dockerfile dengan layanan Hosting Aplikasi Kinsta.