Penagihan, pasar, dan kotak pasir kedua kalinya untuk Big Data: apa yang dapat dilakukan pengujian lingkungan di cloud?


Setiap perusahaan pengembang perangkat lunak memerlukan lingkungan pengujian yang dekat dengan lingkungan produksi. Hal ini terutama berlaku untuk perangkat lunak kotak, yang memiliki siklus rilis yang panjang.
Banyak masalah membangun lingkungan pengujian diselesaikan dengan penempatannya di cloud. Kami akan berbicara tentang opsi pengujian pada platform Mail.Ru Cloud Solutions (MCS) kami yang berbasis cloud . Tetapi bagian dari apa yang kami katakan adalah benar untuk cloud apa pun.

Kesulitan dalam mengatur lingkungan pengujian


Sebelum kita berbicara tentang kemampuan lingkungan pengujian di cloud, kita akan berbicara tentang kesulitan yang dihadapi perusahaan dalam pengujian perangkat lunak.

Cabang Git yang berbeda - lingkungan yang berbeda


Sebagian besar perusahaan yang terlibat dalam pengembangan perangkat lunak menggunakan sistem kontrol versi. Yang paling umum adalah Git , yang digunakan oleh 87% pengembang (polling RhodeCode di Twitter ).

Praktik terbaik di Git adalah apa yang disebut fitur-cabang, ketika cabang terpisah dialokasikan untuk setiap fungsi baru dalam repositori. Pendekatan ini memungkinkan pengembang untuk tidak "mendorong siku mereka" dan membuat perubahan lebih mandiri, tetapi membutuhkan penyebaran banyak lingkungan khusus untuk menguji fitur individual.

Kurang pemanfaatan sumber daya komputasi


25% server fisik adalah zombie yang mengonsumsi listrik tetapi tidak melakukan apa pun yang bermanfaat. Dan banyak spesialis IT tidak dapat mengatakan apa yang dilakukan 15-30% dari server yang diinstal di perusahaan mereka.

Jadi disini. Perangkat keras di tempat untuk lingkungan pengujian di sini tidak berbeda dari yang lain dan, sebagai aturan, dibuang dengan buruk. Dan tidak mungkin sebaliknya. Ketika Anda membeli armada peralatan server, Anda ditugaskan kembali oleh sumber daya jika terjadi peningkatan konsumsi dan jumlah lingkungan pengujian. Akibatnya, lingkungan uji tidak digunakan di malam hari dan pada akhir pekan “berjaga-jaga”, dan Anda hanya membayar untuk listrik dan pendingin yang dikonsumsi.
Aplikasi sederhana virtualisasi di cloud pribadi Anda tidak menyelesaikan masalah skalabilitas yang tidak fleksibel dan pemanfaatan peralatan yang kurang.

Pengaturan kesulitan


Lingkungan pengujian dan pengembangan bukan hanya beberapa mesin virtual. Biasanya, ini termasuk server aplikasi, server database, ditambah server antrian pesan dan server cache.

Sulit bagi pengembang untuk meningkatkan dan mengkonfigurasi infrastruktur seperti itu sendiri, jika mereka tidak memiliki keahlian yang sesuai, ini bisa memakan waktu beberapa hari. Untuk administrator berpengalaman, ini mudah, tetapi umumnya tidak menarik. Ditambah lagi, birokrasi diberlakukan, dan proses pengalokasian sumber daya untuk menciptakan lingkungan pengujian dapat memakan waktu lama.

Masalah lain adalah bahwa administrator sistem penuh waktu sering tidak memiliki keahlian dalam menyebarkan lingkungan pengujian tertentu, dan perusahaan dipaksa untuk menarik konsultan mahal dari luar. Contohnya adalah kotak pasir untuk data besar berdasarkan Hadoop, Spark, HDFS atau Airflow. Penyebaran lingkungan seperti itu membutuhkan setidaknya satu minggu dari spesialis yang memenuhi syarat di area BigData dan setidaknya satu bulan dari administrator sistem biasa. Kisah serupa dengan kluster Kubernetes: membangun gugus uji yang dekat dengan konfigurasi produksi memerlukan setidaknya beberapa hari.

Akibatnya, perusahaan terpaksa beralih ke pihak ketiga - untuk menarik konsultan. Namun, menemukan pakar data besar cukup sulit , dan administrator sistem seperti itu dapat dihitung hampir dengan jari. Ya, seorang insinyur DevOps dapat menangani semua tugas penerapan lingkungan pengujian, tetapi tidak setiap perusahaan juga memilikinya, dan menemukan ahli yang baik di bidang ini tidak lebih mudah daripada spesialis BigData. Memang, pada 2016, situs pencarian kerja sesungguhnya.com mencatat bahwa perusahaan mencari insinyur DevOps lebih lama daripada spesialis lainnya.

Bagaimana cloud memecahkan masalah ini


Tagihan kedua hanya untuk sumber daya yang dikonsumsi dan penskalaan instan


Kelebihan layanan cloud yang paling jelas adalah kemampuan untuk menyewa infrastruktur cloud dari konfigurasi apa pun (satu server atau seluruh cluster) untuk periode apa pun. Pada platform Mail.Ru Cloud Solutions (MCS) kami, penagihan per detik - Anda hanya perlu membayar sumber daya komputasi yang sebenarnya digunakan.

Tidak seperti bare metal, cloud pribadi, dan sebagian besar penyedia cloud Rusia, MCS tidak membebani sumber daya untuk mesin virtual yang dihentikan (RAM, CPU): Anda hanya perlu membayar ruang disk yang digunakan. Sebagai contoh, konfigurasi pengujian 20 CPU, 40 GB RAM dan 1 TB HDD biayanya 24.800 ₽ / bulan, dan biaya ruang disk adalah 7.000 ₽ / bulan. Misalnya, jika Anda menggunakan alat otomatisasi untuk menghentikan lingkungan seperti itu pada pukul 21:00 dan menyebarkan pada pukul 9:00, Anda akan membayar 15.900 ₽ - satu setengah kali lebih sedikit dibandingkan dengan sewa sepanjang waktu.

Dalam pengalaman kami, total penghematan dari pengujian di cloud dapat mencapai 60-70%, dibandingkan dengan pengujian pada infrastruktur di lokasi.

Kemampuan untuk secara instan memperbesar sumber daya di cloud naik dan turun memungkinkan Anda untuk dengan cepat menyebarkan lingkungan hanya pada waktu yang tepat dan memanfaatkan kapasitas sewaan hingga hampir 100%. Waktu penyebaran lingkungan pengujian berkurang beberapa hari, atau bahkan berbulan-bulan, dibandingkan dengan di tempat.

Sumber daya dialokasikan oleh pengembang sendiri


Menggunakan portal swalayan, pengembang dapat mengonfigurasi lingkungan pengujian di cloud dan mengalokasikan sumber daya untuk mereka tanpa menghubungi administrator. Bahkan tindakan sederhana ini dapat mempersingkat waktu-ke-pasar suatu produk hingga beberapa minggu.

API untuk secara otomatis membuat dan menghancurkan lingkungan pengujian


Cloud memungkinkan Anda membuat lingkungan berumur pendek dengan model just-in-time . Dengan menggunakan REST API dan CLI, Anda dapat menggunakan lingkungan pengujian secara massal, berhenti, memperbarui, dan menghapusnya. Dengan cara ini, Anda dapat mengonfigurasi siklus hidup lengkap untuk lingkungan pengujian dan menjaga ratusan lingkungan tetap sehat. Berkat penskalaan awan instan dan penagihan detik demi detik, fleksibilitas dan pengurangan biaya operasi tercapai.

Ini adalah contoh dari pengalaman kami.
Perusahaan mengembangkan perangkat lunak untuk 150 bank. Setiap bank memiliki cabang sendiri di Git dengan fungsi tambahan yang dibangun di atas solusi kotak. Perusahaan dipaksa untuk meningkatkan dua atau tiga lingkungan uji kerja paralel untuk setiap klien: pengujian dengan versi saat ini, pengujian dengan versi baru, memeriksa pembaruan dari saat ini ke yang baru. Secara total, untuk 150 klien, perlu untuk menyebarkan dan memelihara hingga 450 lingkungan pengujian hanya pada saat yang sama - ini tidak memperhitungkan lingkungan pengembangan akun.

Dalam mode cloud pribadi (mereka menggunakan virtualisasi di pusat data mereka sendiri), bekerja dengan beban seperti itu hampir tidak mungkin, karena perangkat keras yang tersedia seringkali tidak cukup untuk operasi paralel semua lingkungan. Akibatnya, pengembang menunggu giliran mereka untuk menguji dan tidak dapat dengan cepat memeriksa operasi versi aplikasi yang baru.

Penyebaran otomatis dan manajemen lingkungan pengujian di cloud publik menghilangkan batasan dalam kecepatan pengujian dan pada akhirnya mengurangi waktu ke pasar. Selain itu, manajemen biaya saat menyewa sumber daya cloud lebih dapat diprediksi, dan biayanya sendiri lebih rendah daripada ketika menggunakan peralatan khusus Anda sendiri untuk tempat uji.

Keuntungan lain dari lingkungan pengujian cloud adalah integrasi dengan alat CI / CD. Solusi ini (misalnya, Jenkins) berisi plugin yang memungkinkan Anda untuk secara dinamis membuat lingkungan pengujian di cloud MCS selama proses pembuatan. Anda dapat mengaktifkan lingkungan pengujian tepat sebelum menjalankan tes fungsional atau regresi. Jika pengujian berhasil, lingkungan akan runtuh secara otomatis, jika ada sesuatu yang salah - lingkungan akan disimpan sehingga pengembang dapat menyambung kembali dan memahami alasan regresi.

Blok bangunan prefabrikasi untuk lingkungan uji


Menerapkan lingkungan pengujian dengan cepat ke platform Mail.Ru Cloud Solutions
PaaS membantu, misalnya, wadah Kubernetes dan Database di cloud. Kubernetes sedang mengembangkan katalog layanan dengan ratusan aplikasi.

Dari katalog, Anda dapat menggunakan ActiveMQ, RabbitMQ, cluster Kafka, sistem pemantauan dan analisis log, berbagai CMS dan database dalam beberapa menit. Tidak seperti Docker Hub yang populer, yang hanya berisi templat aplikasi khusus, Katalog Layanan Kubernetes memiliki templat tingkat tinggi yang menyederhanakan integrasi. Dari templat, Anda dapat menggunakan komponen aplikasi yang telah dikonfigurasi sebelumnya (antrian pesan, penemuan layanan, database, server aplikasi, alat CI / CD, server caching, alat blockchain, dan banyak lagi), tanpa perlu mengkonfigurasi mesin virtual yang digunakan.


Aplikasi tersedia di pasar Kubeapps.

Kotak pasir untuk Data Besar


Pada MCS, Anda dapat menggunakan lingkungan pengujian untuk aplikasi data besar. Menggunakan Big Data layanan PaaS, Anda dapat membuat kelompok Hadoop, Spark, HBase, dan Airflow. Proses penyebaran sepenuhnya otomatis, dan ini menghemat waktu berminggu-minggu dibandingkan dengan konfigurasi sendiri.

Keuntungan tambahan di sini adalah penagihan kedua dan kedua dan penskalaan instan. Kemampuan untuk menciptakan lingkungan pengujian yang dapat diperluas untuk waktu yang singkat mengurangi biaya perusahaan dalam mempertahankan infrastruktur TI analitik. Penghematan bisa mencapai 80% dibandingkan dengan di tempat.

Integrasi dengan Infrastruktur sebagai Kode


Tidak seperti solusi eksklusif berdasarkan VMWare, platform cloud MCS dibangun berdasarkan perangkat lunak OpenStack terbuka, yang memiliki integrasi penuh dengan berbagai alat: Terraform, Ansible, Puppet, Chef.

Terraform dibangun dalam semangat Infrastruktur-sebagai-Kode (IaC), ketika proses pengaturan infrastruktur diatur sebagai pengkodean dan lebih akrab bagi pengembang. Terraform sulit digunakan di cloud pribadi karena tidak memiliki integrasi penuh dengan VMware. Di cloud MCS, perusahaan dapat menggunakan contoh siap pakai dari bekerja dengan Terraform (mereka ada di repositori GitHub ini ).


Membuat lingkungan pengujian menggunakan Terraform.

Ingat saya


  • Pengujian di cloud menjadi praktik alami di industri TI dan sudah diterapkan oleh berbagai organisasi: dari universitas negeri hingga perusahaan IT besar .
  • Membangun lingkungan pengujian di cloud membantu menghemat uang karena kemungkinan penskalaan instan dan otomatisasi melalui API, yang menyediakan hampir 100% pemanfaatan infrastruktur sewaan.
  • Layanan tambahan pada platform cloud dan templat pada wadah Kuberntetes adalah blok bangunan siap pakai yang tidak perlu dikonfigurasi.
  • Layanan yang sulit untuk dikonfigurasikan, seperti alat pemrosesan Big Data, lebih mudah untuk disewa di cloud sebagai templat yang telah dikonfigurasi sebelumnya. Anda akan menghemat berminggu-minggu dengan tidak masuk ke pengaturan.
  • MCS dibangun di atas OpenStack dan terintegrasi penuh dengan Terraform dan alat-alat DevOps lainnya.

Semua alat ini dapat dicoba secara gratis di platform Cloud Solutions Mail.Ru. Hingga akhir November, menggunakan tautan ini dengan kode promo ILOVEHABR, Anda dapat menambahkan 1000 rubel ke akun Anda dan tes-tes-tes.

Source: https://habr.com/ru/post/id429154/


All Articles