Google Cloud menawarkan pengalaman kelas satu untuk beban kerja Windows yang dapat membantu Anda mengurangi biaya lisensi. Hari ini, kita akan memigrasikan dan memodernisasi aplikasi web lama yang dibuat di .NET Framework ke Google Cloud Platform tanpa mengubah kode sumber. Melakukannya dapat membuat aplikasi Anda lebih skalabel dan lebih andal sekaligus membantu mengurangi biaya pengoperasian. Kami mulai dengan toko e-niaga yang sudah dikenal ini.
Itu dibangun menggunakan .NET Framework versi 2.0 dan masih berfungsi. Kami akan mengambil kode aplikasi yang ada dan memindahkannya ke server SQL terkelola dan wadah Windows di Google Kubernetes Engine.
Arsitektur Pet Shop asli adalah aplikasi khas yang digunakan pada satu VM.
Ini memiliki dua tingkatan, lapisan presentasi yang .NET di-host di IIS pada Windows dan lapisan data dengan empat database SQL Server yang disebarkan pada VM yang sama. Kami ingin memodernisasi lapisan presentasi untuk meningkatkan skalabilitas dan ketahanan Kubernetes. Dengan menggunakan container, kami dapat mengurangi jejak aplikasi dan membuatnya gesit untuk pekerjaan sehari-hari dan pengembangan di masa mendatang. Namun pertama-tama, kami ingin memigrasikan lapisan data ke SQL Server terkelola menggunakan Cloud SQL untuk SQL Server.
Di Google Cloud Console, kami akan membuat instance SQL Server terkelola kami. Ada beberapa detail yang perlu Anda berikan, seperti nama instans dan wilayah yang Anda inginkan. Pastikan untuk membuat instance database Anda di region yang sama tempat Anda akan menjalankan cluster Kubernetes. Setelah instance dibuat, kita perlu memigrasikan database. Dengan Import, kita bisa mengembalikan file backup database yang ada.
Dalam hal ini, kami akan memulihkan file BAK yang telah kami unggah ke bucket Cloud Storage.
Kami akan memilih file kami, memberinya nama, dan mengimpor. Setelah kami melakukan ini untuk masing-masing dari empat database asli, kami dapat melihat instance SQL Server dan database di sini dari Cloud Console. Dengan Cloud SQL untuk SQL Server, kami dapat menggunakan beberapa alat favorit kami, seperti Microsoft SQL Server Management Studio. Kami harus menggunakan SQL Proxy untuk membantu memastikan koneksi antara mesin lokal kami dan Cloud SQL aman.
Setelah SQL Proxy diinstal, kami akan meluncurkannya dan mengarahkan ke instance yang baru saja kami buat. Seperti yang Anda lihat , proxy mengatakan siap untuk koneksi.
Kami akan menggunakan SSMS. Kami akan memberikan detail otentikasi. Perhatikan bahwa nama server adalah localhost– ini karena kami menggunakan SQL Proxy, yang mengabstraksikan alamat sebenarnya dari lokasi server.
Setelah koneksi ini dibuat, kita dapat melihat database dan berinteraksi dengannya. Kami sekarang telah memigrasikan lapisan data kami ke GCP. Itu berarti kita dapat mengalihkan perhatian kita ke lapisan presentasi dan aplikasi web .NET. Sekarang, kita tidak perlu mengubah apa pun dalam kode aplikasi web yang ada .
Yang perlu kita lakukan adalah membuat file Docker. Dengan Docker, penampung aplikasi kami hanya tiga langkah. Pertama, dasarkan gambar dasar ASP.NET 3.5.
Kedua, masuk ke direktori kerja IIS.
Dan ketiga, salin konten aplikasi ini ke dalam wadah. Untuk membangun image container menggunakan file Docker yang baru saja kita buat, kita akan menjalankan perintah docker build pada mesin Windows yang telah menginstal Docker CLI. Kemudian, untuk mendorong image container baru ini ke dalam Google Container Registry, kita akan menggunakan docker push. Google Container Registry memungkinkan kita untuk mereferensikan image ini di cluster Kubernetes.
Sebelum kami menerapkan aplikasi web, kami perlu menyelesaikan satu masalah– bagaimana mengizinkan aplikasi web untuk berkomunikasi dengan database.
Arsitektur baru kami dibangun di sekitar kontainer. Kami dapat menginstal Cloud SQL Proxy sebagai sidecar di samping aplikasi web kami. Ini berarti aplikasi web dan Proxy Cloud SQL akan berada di jaringan yang sama, dan ini akan memungkinkan aplikasi web berkomunikasi dengan database menggunakan localhost sebagai server. Jadi kita perlu memperbarui web.
config dari aplikasi web kita sehingga menggunakan localhost di string koneksi SQL Server dan kemudian membangun kembali gambar kontainer kita dan mendorongnya ke Container Registry. Kami juga akan membuat image container untuk SQL Proxy. Pertama, kita membutuhkan file SQL Proxy Docker. Kali ini, kami akan mendasarkan gambar container dasar Microsoft untuk Windows Server 2019 Core, kemudian menambahkan SQL Proxy ke dalamnya, lalu memanggil proxy dan mengarahkannya ke instance SQL Server. Di Docker, kita akan membuat image container dan kemudian mendorong image ini ke dalam registri.
Kami sekarang memiliki dua gambar, Pet Shop IIS adalah gambar dari aplikasi web yang ditampung, dan SQL Proxy Sidecar adalah SQL Proxy yang memungkinkan aplikasi untuk terhubung ke SQL Server yang dikelola.
Kami akan men-deploy aplikasi dan SQL Proxy pada Pod yang sama di cluster Kubernetes. Tetapi pertama-tama, kita perlu menyediakan file YAML yang menjelaskan status yang kita inginkan untuk container. Untungnya, kita dapat menggunakan YAML boilerplate yang cukup standar. Bagian penting adalah pemilih node, di mana kita dapat menunjukkan bahwa kita ingin menyebarkan ke kumpulan node Windows.
Ini berarti bahwa kami ingin menyebarkan wadah kami sebagai wadah Windows yang berjalan di node Windows. Kemudian kita membuat daftar container yang ingin kita gunakan, gambar Pet Shop IIS dan SQL Proxy Sidecar yang baru saja kita buat. Terakhir, kami akan mengekspos aplikasi ini menggunakan IP eksternal. Kami akan menggunakan kubectl untuk menyebarkan wadah kami dan memeriksa status aplikasi web kami. Terapkan memulai penerapan.
Dapatkan layanan mencantumkan alamat IP eksternal aplikasi web. Dapatkan daftar penerapan penerapan kami, sekarang tinggal di cloud.
Dan dapatkan pod daftar Pod, yang menunjukkan bahwa aplikasi sudah aktif dan berjalan. Pada titik ini, kami telah memodernisasi aplikasi web kami menjadi aplikasi yang dikelola Kubernetes yang berjalan di Pods dengan satu container untuk aplikasi .NET dan container kedua untuk SQL Proxy dengan koneksi aman ke database SQL Server yang dikelola .
Keuntungan dari arsitektur seperti ini adalah kita dapat menskalakan ke dua Pod dengan satu perintah kubectl. Periksa dokumentasi untuk memulai dan mencobanya sendiri.