Dokumen ini dapat membantu Anda merencanakan dan mendesain fase deployment migrasi Anda ke Google Cloud. Setelah menilai lingkungan saat ini, merencanakan migrasi ke Google Cloud, dan membangun fondasi Google Cloud, Anda dapat men-deploy beban kerja.
Dokumen ini adalah bagian dari rangkaian multi-bagian berikut tentang migrasi ke Google Cloud:
- Bermigrasi ke Google Cloud: Memulai
- Bermigrasi ke Google Cloud: Menilai dan menemukan workload Anda
- Bermigrasi ke Google Cloud: Merencanakan dan membangun fondasi Anda
- Bermigrasi ke Google Cloud: Mentransfer set data besar Anda
- Bermigrasi ke Google Cloud: Men-deploy beban kerja Anda (dokumen ini)
- Bermigrasi ke Google Cloud: Bermigrasi dari deployment manual ke deployment otomatis dalam container
- Bermigrasi ke Google Cloud: Mengoptimalkan lingkungan Anda
- Bermigrasi ke Google Cloud: Praktik terbaik untuk memvalidasi rencana migrasi
- Bermigrasi ke Google Cloud: Meminimalkan biaya
Diagram berikut menggambarkan jalur perjalanan migrasi Anda.
Fase deployment adalah fase ketiga dalam migrasi ke Google Cloud, tempat Anda merancang proses deployment untuk beban kerja.
Dokumen ini berguna jika Anda merencanakan migrasi dari lingkungan lokal, dari lingkungan hosting pribadi, dari penyedia cloud lain ke Google Cloud, atau jika Anda mengevaluasi peluang untuk bermigrasi dan ingin mengeksplorasi seperti apa tampilannya.
Dalam dokumen ini, Anda meninjau berbagai jenis proses deployment, sesuai urutan fleksibilitas, otomatisasi, dan kompleksitas, beserta kriteria terkait cara memilih pendekatan yang tepat untuk Anda:
- Men-deploy secara manual.
- Men-deploy dengan alat pengelolaan konfigurasi (CM).
- Men-deploy dengan menggunakan alat orkestrasi container.
- Men-deploy secara otomatis.
Sebelum men-deploy beban kerja, rencanakan dan desain fase deployment Anda. Pertama-tama, Anda harus mengevaluasi berbagai jenis proses deployment yang Anda terapkan untuk beban kerja Anda. Saat mengevaluasi jenis proses deployment, Anda dapat memutuskan untuk memulai dengan proses yang ditargetkan dan beralih ke proses yang lebih kompleks di masa mendatang. Pendekatan ini dapat memberikan hasil yang lebih cepat, tetapi juga dapat menimbulkan hambatan saat Anda beralih ke proses yang lebih canggih, karena Anda harus menyerap utang teknis yang terakumulasi saat menggunakan proses yang ditargetkan. Misalnya, jika Anda beralih dari deployment manual sepenuhnya ke solusi otomatis, Anda mungkin harus mengelola upgrade untuk pipeline dan aplikasi deployment Anda.
Meskipun Anda dapat menerapkan berbagai jenis proses deployment sesuai kebutuhan beban kerja, pendekatan ini juga dapat meningkatkan kerumitan pada fase ini. Jika Anda menerapkan berbagai jenis proses deployment, Anda dapat memperoleh manfaat dari fleksibilitas tambahan, tetapi Anda mungkin memerlukan keahlian, peralatan, and resource yang disesuaikan dengan setiap proses, sehingga menghasilkan lebih banyak upaya di pihak Anda.
Men-deploy secara manual
Deployment manual sepenuhnya didukung oleh proses penyediaan, konfigurasi, dan deployment yang sepenuhnya tidak otomatis. Meskipun mungkin ada spesifikasi dan checklist untuk setiap langkah pada proses, tidak ada pemeriksaan atau penerapan otomatis terhadap spesifikasi tersebut. Proses manual rentan terhadap kesalahan manusia, tidak dapat diulang, dan performanya dibatasi oleh faktor manusia.
Proses deployment manual sepenuhnya dapat sangat berguna, misalnya, saat Anda perlu melengkapi eksperimen dengan cepat di lingkungan dalam sandbox. Menyiapkan proses otomatis dan terstruktur untuk eksperimen yang berlangsung dalam hitungan menit dapat memperlambat kecepatan Anda, terutama pada tahap awal migrasi, ketika Anda mungkin kurang memiliki keahlian yang diperlukan pada alat dan praktik yang memungkinkan Anda membuat proses otomatis.
Meskipun batasan ini tidak berlaku pada Google Cloud, deployment manual yang sepenuhnya mungkin menjadi satu-satunya pilihan Anda saat menangani lingkungan bare metal yang tidak memiliki API pengelolaan yang diperlukan. Dalam hal ini, Anda tidak dapat menerapkan proses otomatis karena kurangnya antarmuka yang diperlukan. Jika Anda memiliki infrastruktur virtual lama yang tidak mendukung otomatisasi, Anda mungkin terpaksa menerapkan proses yang sepenuhnya manual
Sebaiknya hindari deployment yang sepenuhnya manual, kecuali jika Anda tidak memiliki opsi lain.
Anda dapat mengimplementasikan proses penyediaan, konfigurasi, dan deployment yang sepenuhnya manual dengan menggunakan alat-alat, seperti Konsol Google Cloud, Cloud Shell, Cloud API, dan Google Cloud CLI.
Men-deploy dengan alat pengelolaan konfigurasi
Alat CM memungkinkan Anda mengonfigurasi lingkungan dengan cara yang dapat diulang dan terkontrol. Alat ini mencakup suatu kumpulan plugin dan modul yang telah menerapkan operasi konfigurasi umum. Alat ini memungkinkan Anda berfokus pada status akhir yang ingin dicapai untuk lingkungan Anda, bukan menerapkan logika untuk mencapai status akhir tersebut. Jika set operasi yang disertakan tidak cukup, alat CM sering kali menampilkan sistem ekstensi yang dapat Anda gunakan untuk mengembangkan modul sendiri. Meskipun ekstensi ini dapat digunakan, cobalah untuk menggunakan modul dan plugin yang telah ditetapkan sebelumnya, jika berlaku, untuk menghindari beban pengembangan dan pemeliharaan tambahan.
Anda menggunakan alat CM saat perlu mengonfigurasi lingkungan. Anda juga dapat menggunakannya untuk menyediakan infrastruktur dan menerapkan proses deployment untuk beban kerja. Alat CM adalah proses yang lebih baik dibandingkan dengan proses penyediaan, konfigurasi, dan deployment yang sepenuhnya manual karena dapat diulang dikontrol, dan diaudit. Namun, ada beberapa kelemahan karena alat CM tidak dirancang untuk tugas penyediaan atau deployment. Biasanya tidak memiliki fitur bawaan untuk menerapkan logika penyediaan yang rumit, seperti mendeteksi dan mengelola perbedaan antara keadaan infrastruktur Anda sebenarnya dan keadaan yang diinginkan, atau proses deployment yang lengkap, seperti deployment tanpa periode nonaktif atau deployment berwarna biru-hijau. Anda dapat menerapkan fitur yang tidak ada menggunakan titik ekstensi yang disebutkan sebelumnya. Ekstensi ini dapat menimbulkan upaya tambahan dan dapat meningkatkan kompleksitas proses deployment secara keseluruhan, karena Anda memerlukan keahlian yang diperlukan untuk merancang, mengembangkan, dan memelihara solusi deployment yang disesuaikan.
Anda dapat mengimplementasikan jenis proses penyediaan, konfigurasi, dan deployment ini dengan menggunakan alat seperti Ansible, Chef, Puppet, dan SaltStack.
Proses deployment dasar yang menggunakan alat CM dapat menyiapkan lingkungan runtime dan men-deploy workload di lingkungan tersebut. Misalnya, proses Anda mungkin membuat instance Compute Engine, menginstal software yang diperlukan, dan men-deploy workload. Perlu waktu untuk mengonfigurasi lingkungan runtime yang mendukung workload Anda. Untuk mengurangi jumlah waktu yang diperlukan untuk mengonfigurasi lingkungan runtime, Anda dapat menerapkan proses yang menjalankan alat CM untuk menghasilkan template, seperti image sistem operasi (OS). Anda dapat menggunakan template ini untuk membuat instance lingkungan runtime yang siap untuk beban kerja Anda. Misalnya, Anda dapat menggunakan Cloud Build untuk mem-build image Compute Engine. Image ini sering disebut golden image atau silver image, yang keduanya adalah template yang tidak dapat diubah, seperti image OS, yang Anda buat untuk lingkungan runtime. Perbedaan antara keduanya bergantung pada jumlah pekerjaan yang harus diselesaikan proses deployment sebelum image dapat menjalankan beban kerja:
- Golden image: Template yang Anda buat untuk lingkungan runtime atau siapkan dari template dasar. Golden image menyertakan semua informasi data dan konfigurasi yang diperlukan lingkungan runtime Anda untuk menyelesaikan tugas yang diberikan. Anda dapat menyiapkan beberapa jenis golden image untuk menyelesaikan berbagai tugas. Sinonim untuk jenis golden image meliputi ragam, spins, dan arketipe.
- Silver image: Template yang Anda buat untuk lingkungan runtime dengan menerapkan sedikit perubahan pada golden image atau template dasar. Lingkungan runtime yang menjalankan silver image akan menyelesaikan penyediaan dan konfigurasi saat booting pertama, sesuai dengan kebutuhan kasus penggunaan yang harus didukung lingkungan runtime tersebut.
Men-deploy dengan menggunakan alat orkestrasi container
Jika sudah berinvestasi, atau berencana untuk berinvestasi dalam containerization pada beban kerja, Anda dapat menggunakan alat orkestrasi container untuk men-deploy beban kerja.
Alat orkestrasi container menangani pengelolaan infrastruktur yang mendasari lingkungan Anda, dan mendukung berbagai operasi deployment dan elemen penyusun untuk menerapkan logika deployment yang dapat Anda gunakan saat infrastruktur bawaan tidak cukup. Dengan menggunakan alat ini, Anda dapat berfokus pada pembuatan logika deployment yang sebenarnya menggunakan mekanisme yang disediakan, bukan harus mengimplementasikannya.
Alat orkestrasi container juga menyediakan abstraksi yang dapat Anda gunakan untuk melakukan generalisasi proses deployment ke lingkungan dasar yang berbeda, sehingga Anda tidak perlu mendesain dan mengimplementasikan beberapa proses untuk setiap lingkungan Anda. Misalnya, alat ini biasanya menyertakan logika untuk menskalakan dan mengupgrade deployment Anda, sehingga Anda tidak perlu menerapkannya sendiri. Anda bahkan dapat mulai memanfaatkan alat ini untuk menerapkan proses deployment di lingkungan saat ini, kemudian mem-portingnya ke lingkungan target, karena implementasinya sebagian besar sama berdasarkan desain. Dengan mengadopsi alat ini lebih awal, Anda mendapatkan pengalaman dalam mengelola lingkungan, dan pengalaman ini berguna untuk migrasi Anda ke Google Cloud.
Anda dapat menggunakan alat orkestrasi container jika beban kerja Anda sudah dimasukkan ke dalam container atau jika Anda dapat menyimpannya dalam container di masa mendatang dan Anda berencana untuk berinvestasi dalam upaya ini. Pada kasus terakhir, Anda harus menjalankan analisis menyeluruh terhadap setiap beban kerja untuk menentukan hal berikut:
- Memastikan bahwa containerization beban kerja dapat dilakukan.
- Menilai potensi manfaat yang dapat Anda peroleh dengan menyimpan beban kerja dalam container.
Jika potensi masalah lebih besar daripada manfaat containerization, Anda sebaiknya hanya menggunakan alat orkestrasi container jika tim Anda sudah berkomitmen menggunakannya dan jika Anda tidak ingin mengelola lingkungan yang heterogen.
Misalnya, solusi data warehouse biasanya tidak di-deploy menggunakan alat orkestrasi container, karena tidak dirancang untuk berjalan dalam container sementara.
Anda dapat menerapkan proses deployment ini menggunakan Google Kubernetes Engine (GKE) di Google Cloud. Jika Anda tertarik dengan lingkungan serverless, Anda dapat menggunakan alat, seperti Cloud Run.
Men-deploy secara otomatis
Terlepas dari alat penyediaan, konfigurasi, deployment, dan orkestrasi yang Anda gunakan di lingkungan, Anda dapat menerapkan proses deployment yang sepenuhnya otomatis untuk meminimalkan kesalahan manusia serta untuk menggabungkan, menyederhanakan, dan menstandarkan proses di seluruh organisasi Anda. Anda juga dapat memasukkan langkah-langkah persetujuan manual dalam proses deployment jika diperlukan, tetapi setiap langkahnya bersifat otomatis.
Langkah-langkah pipeline deployment menyeluruh adalah sebagai berikut:
- Peninjauan Kode.
- Continuous integration (CI)
- Produksi artefak.
- Deployment berkelanjutan (CD), dengan persetujuan manual tertunda.
Anda dapat mengotomatiskan setiap langkah tersebut secara independen dari langkah lainnya, sehingga Anda dapat secara bertahap memigrasikan proses deployment saat ini ke solusi otomatis, atau Anda dapat menerapkan proses baru secara langsung di lingkungan target. Agar proses ini efektif, Anda memerlukan prosedur pengujian dan validasi di setiap langkah pipeline, tidak hanya selama langkah peninjauan kode atau langkah CI.
Untuk setiap perubahan pada codebase, Anda harus melakukan peninjauan menyeluruh untuk menilai kualitas perubahan. Sebagian besar alat pengelolaan kode sumber memiliki dukungan tingkat teratas untuk peninjauan kode. Fitur ini juga sering kali mendukung pembuatan otomatis dan inisialisasi ulasan dengan mengamati kode sumber yang diubah, dengan ketentuan Anda mengonfigurasi tim yang bertanggung jawab untuk setiap area codebase Anda. Dalam setiap peninjauan, Anda juga dapat menjalankan pemeriksaan otomatis pada kode sumber, seperti linter dan penganalisis statis untuk menerapkan konsistensi dan standar kualitas di seluruh codebase.
Setelah Anda meninjau dan mengintegrasikan perubahan dalam codebase, alat CI dapat otomatis menjalankan pengujian, mengevaluasi hasilnya, lalu memberi tahu Anda tentang masalah apa pun pada build saat ini. Anda dapat memberi nilai tambah pada langkah ini dengan mengikuti proses pengembangan berbasis pengujian untuk cakupan pengujian lengkap terhadap fitur setiap beban kerja.
Untuk setiap build yang berhasil, Anda dapat mengotomatiskan pembuatan artefak deployment. Artefak tersebut mewakili versi beban kerja Anda yang siap di-deploy, dengan perubahan terbaru. Sebagai bagian dari langkah pembuatan artefak, Anda juga dapat melakukan validasi otomatis artefak itu sendiri. Misalnya, Anda akan menjalankan pemindaian kerentanan terhadap masalah umum dan menyetujui artefak untuk deployment hanya jika tidak ditemukan kerentanan. Misalnya, Anda dapat menggunakan Artifact Registry untuk memindai artefak guna menemukan kerentanan yang diketahui.
Terakhir, Anda dapat mengotomatiskan deployment setiap artefak yang disetujui di lingkungan target. Jika memiliki beberapa lingkungan runtime, Anda juga dapat menerapkan logika deployment unik untuk setiap lingkungan, bahkan menambahkan langkah persetujuan manual, jika diperlukan. Misalnya, Anda dapat otomatis men-deploy versi baru dari beban kerja Anda di lingkungan pengembangan, jaminan kualitas, dan lingkungan praproduksi Anda, sambil tetap memerlukan peninjauan dan persetujuan manual dari tim kontrol produksi Anda untuk men-deploy lingkungan produksi Anda.
Meskipun proses menyeluruh yang sepenuhnya otomatis adalah salah satu opsi terbaik jika Anda memerlukan proses yang otomatis, terstruktur, efisien, dan dapat diaudit, menerapkan proses ini bukanlah tugas yang mudah. Sebelum memilih proses semacam ini, Anda harus memiliki gambaran yang jelas tentang manfaat yang diharapkan, biaya yang diperlukan, dan apakah tingkat pengetahuan dan keahlian tim Anda saat ini cukup untuk menerapkan proses deployment yang sepenuhnya otomatis.
Anda dapat menerapkan proses deployment yang sepenuhnya otomatis dengan Cloud Deploy.
Langkah selanjutnya
- Pelajari cara memigrasikan proses deployment.
- Pelajari kapan harus menemukan bantuan untuk migrasi.
- Untuk mengetahui lebih banyak tentang arsitektur referensi, diagram, dan praktik terbaik lainnya, jelajahi Pusat Arsitektur Cloud.
Kontributor
Penulis: Marco Ferrari | Cloud Solutions Architect