Memigrasikan beban kerja Linux dan PostgreSQL

Selesai

Modul ini memandu Anda melalui migrasi beban kerja yang ada dari lingkungan lokal atau cloud ke Azure. Ini mencakup migrasi komputasi ke komputer virtual Azure (VM) dan data ke Azure Database for PostgreSQL. Aplikasi ini adalah sampel cloud-agnostic yang merupakan stand-in untuk aplikasi dunia nyata apa pun yang disiapkan untuk migrasi ke cloud.

Dalam unit ini, Anda mengeksplorasi nilai melakukan transisi berikut dengan manfaat serangkaian kontrol keamanan dan identitas lengkap yang disediakan Azure:

  • Beralih dari lingkungan yang dihost sendiri (seperti dari database yang dikelola sendiri) ke penawaran database yang dikelola sepenuhnya
  • Beralih dari komputasi bare-metal ke VM yang dihosting cloud

Anda juga mengeksplorasi manfaat mengelola sumber daya di cloud dari perspektif biaya dan performa. Dan Anda mempelajari cara menghitung dan mengelola biaya sebelum dan sesudah penyebaran dengan tepat, bersama dengan cara mengoptimalkan performa dari komputasi dan perspektif data.

Beban kerja dan data

Beban kerja kami adalah aplikasi yang ditulis di Go dan berfungsi dengan data di dalam PostgreSQL. Data kami adalah himpunan data terbuka yang memungkinkan Anda menjelajahi kekuatan platform Postgres dan ekstensi terkait.

Meskipun aplikasi ini dapat dengan mudah dijalankan dalam kontainer, pemangku kepentingan memilih untuk tidak melakukannya pada tahap ini. Membangun kontainer, menyebarkan ke platform kontainer, atau menggunakan orkestrasi kontainer saat ini berada di luar cakupan. Tetapi migrasi ke kontainer mungkin merupakan langkah logis di masa depan.

Repositori GitHub yang terkait dengan modul ini menyediakan aplikasi dan data terkait untuk Anda. Anda mempelajari cara menyiapkan aplikasi dan mengekspor data Anda untuk mencapai status serupa dengan aplikasi sampel ini. Anda juga dapat menggunakan aplikasi sampel sebagai templat untuk penyebaran greenfield.

Berapa nilai migrasi beban kerja ini?

Anda mungkin bertanya-tanya tentang manfaat memigrasikan beban kerja ini ke cloud. Berikut adalah beberapa proposisi nilai.

Keamanan dan kepatuhan

Saat Anda membawa beban kerja komputasi dan data ke cloud, beban kerja tersebut mendapat manfaat dari peningkatan kemampuan keamanan.

Komputer virtual di Azure mendapat manfaat dari berbagai fitur keamanan dan kepatuhan, termasuk firewall, jaringan virtual, akses VM just-in-time, enkripsi, kontrol akses berbasis peran (RBAC), dan komputasi rahasia. Azure Database for PostgreSQL mendukung banyak fitur serupa, seperti enkripsi dengan kunci yang dikelola pelanggan, sertifikasi kepatuhan, dan dukungan untuk Pertahanan Microsoft untuk Cloud.

Keamanan koneksi antara komputer virtual dan database Anda

Saat Anda mengintegrasikan komputer virtual dengan Azure Database for PostgreSQL, sangat penting bahwa mereka dapat terhubung satu sama lain dengan cara yang aman yang mengurangi risiko kehilangan data.

Autentikasi Microsoft Entra memungkinkan Anda menyambungkan ke Azure Database for PostgreSQL tanpa kata sandi tradisional. Sebagai gantinya, Anda menggunakan identitas Microsoft Entra untuk beban kerja aplikasi Anda (yaitu, identitas terkelola), pengguna, dan administrator melalui akun pengguna Microsoft Entra mereka. Pendekatan ini mengurangi risiko kredensial berumur panjang disusupi dan memungkinkan pelaku jahat mengakses data Anda.

ID Microsoft Entra, identitas terkelola, dan RBAC terperinci dapat memungkinkan beban kerja aplikasi Anda untuk mengakses data dan mengelola sumber daya di Azure dengan aman, dengan mengikuti prinsip hak istimewa paling sedikit.

Akses ke komputasi berkinerja tinggi dan hemat biaya di beberapa wilayah

Apakah Anda memerlukan komputasi hemat biaya untuk dev/test atau jenis komputasi terbaru, berkinerja tertinggi, atau terbesar yang tersedia di cloud, Azure memiliki berbagai pilihan opsi komputasi untuk komputer virtual dan Azure Database for PostgreSQL. Anda dapat meningkatkan dan menurunkan skala opsi ini sesuai kebutuhan, dan tersedia di lebih dari 60 wilayah di Azure.

Anda dapat menskalakan komputasi baik secara vertikal maupun horizontal, termasuk melalui replika database dan opsi terdistribusi seperti Azure Cosmos DB for PostgreSQL. Azure Cosmos DB for PostgreSQL adalah layanan terkelola untuk PostgreSQL yang diperluas dengan kekuatan super sumber terbuka Citus dari tabel terdistribusi. Komputasi ini dipasangkan dengan beberapa opsi penyimpanan cloud tercepat untuk menyesuaikan persyaratan I/O komputasi dan penyimpanan Anda dengan beban kerja Anda.

Manajemen biaya dan efektivitas biaya

Anda dapat mengoptimalkan manajemen biaya dan efektivitas biaya di sisi Linux dan PostgreSQL. Dibandingkan dengan solusi lokal, biaya sering kali dapat lebih disesuaikan dan sesuai untuk situasi Anda. Anda dapat menyesuaikan ukuran komputasi Anda dibandingkan dengan solusi lokal. Anda juga dapat dengan mudah mengelola seluruh armada Anda untuk mengoptimalkan hanya untuk komputasi dan penyimpanan yang Anda butuhkan, dan hanya membayar apa yang Anda gunakan, dalam model penagihan utilitas.

Penagihan utilitas memungkinkan pelanggan untuk menangani periode permintaan tinggi tanpa harus membayar biaya provisi berlebih. Ini memungkinkan migrasi ke generasi komputasi yang lebih cepat dan lebih efisien saat tersedia.

Pelanggan juga dapat memanfaatkan Azure Hybrid Benefit untuk menghemat biaya lisensi untuk distribusi Linux tertentu. Untuk mempelajari selengkapnya, lihat Azure Hybrid Benefit untuk komputer virtual Red Hat Enterprise Linux (RHEL) dan SUSE Linux Enterprise Server (SLES).

Pelanggan juga dapat mengurangi biaya (hingga 72 persen dibandingkan dengan harga prabayar) dengan ketentuan satu tahun atau tiga tahun untuk komputer virtual dan Azure Reserved Virtual Machine Instances. Untuk informasi selengkapnya, lihat Bagaimana diskon reservasi Azure diterapkan ke komputer virtual. Harga Azure transparan dan dapat diprediksi, dan Anda dapat menggunakan kalkulator harga Azure untuk memperkirakan biaya Anda sebelum Anda menyebarkan.

Operasi Hari ke-2

Operasi Hari ke-2 untuk aplikasi yang disebarkan (seperti triase, pemantauan, patching keamanan, pencadangan, dan pemulihan bencana) menjadi lebih efisien melalui otomatisasi dan kemampuan untuk meningkatkan dengan waktu henti yang berpotensi nol. Selain itu, Anda dapat mengelola infrastruktur Anda secara menyeluruh dengan toolchain standar industri.

Sebelum Anda mulai

Modul ini dirancang untuk membantu Anda memigrasikan beban kerja Linux dan PostgreSQL yang ada ke Azure. Namun, ini tidak berfokus pada cara mengekspor data dari database sumber Anda atau cara menyiapkan aplikasi untuk migrasi. Salah satu alasan untuk pendekatan ini adalah bahwa ada banyak jenis database sumber dan aplikasi yang dapat Anda migrasikan, dan proses untuk setiap jenis unik.

Modul ini memberi Anda aplikasi sampel, data Postgres, file biner, dan infrastruktur sebagai kode yang dapat Anda gunakan untuk mensimulasikan proses migrasi. Setelah menyelesaikan migrasi yang disimulasikan, Anda dapat menggunakan pengetahuan yang Anda peroleh untuk menerapkan prinsip yang sama ke beban kerja Anda sendiri.

Anda menggunakan aplikasi sampel, Azure-Samples/tailwind-traders-go, sebagai stand-in untuk kode aplikasi yang akan dimigrasikan. Infrastruktur Bicep sebagai kode, sampel Postgres dan data biner, dan sumber daya lainnya untuk mendukung bagian langsung dari modul ini tersedia di repositori GitHub Azure-Samples/linux-postgres-migration .

Untuk menerapkan pendekatan ini ke beban kerja Anda sendiri, Anda perlu memetakan aplikasi sumber dan data Anda ke struktur berikut.

Kode aplikasi

Anda harus menyimpan kode aplikasi Anda dalam kontrol sumber, sebaiknya repositori di GitHub.

Migrasi dalam modul ini menunjukkan skenario paling sederhana untuk mengkloning repositori langsung ke komputer virtual Azure Anda. Dalam skenario dunia nyata, Anda mungkin akan memiliki alur penyebaran yang lebih kompleks, seperti GitHub Actions, yang membangun dan menyebarkan kode aplikasi Anda ke sumber daya komputasi Anda.

Data Postgres

Anda harus menyimpan data Postgres dalam .sql file yang bisa Anda gunakan untuk membuat skema database dan menyisipkan data. Dalam migrasi yang disimulasikan ini, Anda menggunakan file data sampel, tailwind.sql, dalam repositori Azure-Samples/linux-postgres-migration . Anda menyalin file ke Azure Blob Storage lalu mengimpornya ke Azure Database for PostgreSQL.

Ketika tiba saatnya untuk memigrasikan data Anda sendiri, Anda mengekspor data dari database sumber Anda dan menyimpannya ke .sql file. Anda kemudian menyalin file ke Blob Storage seperti yang diuraikan dalam modul ini.

File biner

Sebagian besar aplikasi memiliki file biner lainnya, seperti file media, yang perlu dimigrasikan. Untuk aplikasi sampel, Anda mempelajari cara memigrasikan gambar dengan menyalinnya ke Azure-Samples/linux-postgres-migration Blob Storage.

Demikian pula, Anda perlu menyalin file biner Anda ke Blob Storage saat memigrasikan beban kerja Anda sendiri. Dalam hal ini, komputasi tidak memiliki status, dan aplikasi memiliki izin untuk mengakses data biner langsung di Blob Storage.

Infrastruktur sebagai kode (Bicep)

Infrastruktur sebagai kode untuk modul ini juga disimpan di Azure-Samples/linux-postgres-migration. Ini dirancang untuk menjadi arsitektur referensi yang dapat Anda gunakan apa adanya, dengan perubahan minimal, jika Anda dapat membuat data sumber dan aplikasi Anda sesuai dengan struktur yang diuraikan sebelumnya.

Keamanan adalah tema utama dari migrasi ini, dan kami memilih pengaturan keamanan tertentu untuk membuat bagian langsung dari modul ini lebih mudah diselesaikan. Misalnya, Blob Storage menggunakan metode autentikasi tanpa kunci yang lebih aman, tetapi kami mengizinkan koneksi jaringan dari alamat IP apa pun. Di lingkungan produksi, Anda ingin mengunci akses jaringan hanya ke alamat IP yang memerlukan akses ke akun penyimpanan.

Demikian pula, kami membiarkan opsi untuk menambahkan aturan firewall ke server PostgreSQL untuk mengizinkan alamat IP tertentu. Di lingkungan produksi, Anda mungkin sepenuhnya menonaktifkan semua akses publik ke server.

Perbedaan antara lingkungan sumber dan Azure

Salah satu perbedaan utama dalam bermigrasi dari lingkungan lain ke Azure adalah Anda sepenuhnya menggunakan kontrol keamanan dan identitas yang disediakan Azure:

  • Anda menggunakan identitas terkelola untuk komputer virtual dan Azure Database for PostgreSQL.
  • Anda menggunakan ID Microsoft Entra untuk autentikasi ke database.
  • Anda menggunakan MICROSOFT Entra ID, bukan kunci Secure Shell (SSH), untuk mengakses komputer virtual.

Daripada melakukan migrasi lift-and-shift, Anda mengambil kesempatan untuk memodernisasi aplikasi untuk memanfaatkan sepenuhnya fitur keamanan dan kepatuhan yang disediakan Azure.

Lokal, Anda mungkin menggunakan nama pengguna dan kata sandi untuk mengautentikasi ke database Anda. Di Azure, kami menampilkan cara menggunakan identitas terkelola komputer virtual untuk mengautentikasi ke database. Metode autentikasi ini lebih aman dan mengurangi risiko kredensial berumur panjang disusupi.

Penggunaan identitas terkelola untuk autentikasi sering memerlukan perubahan kode dalam aplikasi Anda. Modul ini menunjukkan cara menggunakan azidentity pustaka di Buka untuk mendapatkan token untuk identitas terkelola. Pustaka yang sama tersedia di seluruh Microsoft SDK.

Membuat akun Azure dan menginstal Azure CLI

Jika Anda tidak memiliki akun Azure, Anda dapat membuat akun gratis hari ini. Anda mendapatkan kredit yang dapat Anda gunakan untuk mencoba layanan Azure berbayar. Bahkan setelah Anda menggunakan kredit, Anda dapat menyimpan akun dan menggunakan layanan Azure gratis.

Untuk menjalankan perintah di unit berikut, Anda memerlukan akses ke shell Bash. Shell ini dapat berada di salah satu area ini:

  • Pada komputer lokal Anda. Misalnya, gunakan macOS, Linux, Subsistem Windows untuk Linux (WSL), atau Docker.
  • Pada komputer virtual. Misalnya, gunakan Multipass atau Azure.
  • Di cloud. Misalnya, gunakan Azure Cloud Shell atau GitHub Codespaces.

Untuk menyelesaikan modul ini, Anda memerlukan Azure CLI. Anda dapat menginstal Azure CLI di komputer lokal Anda dengan mengikuti instruksi di artikel Menginstal Azure CLI . Anda juga perlu menginstal Git.

Sumber