Dalam proses mengelola sejumlah besar data dan visualisasinya, kami semakin dihadapkan pada kebutuhan untuk memperkenalkan alat tunggal untuk akses ke manajemen fungsional dalam repositori. Selain itu, alat ini harus sama-sama nyaman dan dapat dimengerti oleh semua karyawan divisi manajemen data: administrator, analis, pengembang, dan penguji.

Nama saya Vitaliy, saya bertanggung jawab di Rostelecom atas arahan pengujian otomasi dan implementasi proses DevOps. Pada artikel ini, saya akan berbicara tentang solusi menarik untuk masalah ini di gudang data besar Rostelecom.
Dan inilah bagaimana kita sampai pada seperangkat alat untuk memecahkan masalah ini.
Sebagai permulaan, sedikit latar belakang. Sebelumnya, saya menulis bahwa kami menulis modul kami sendiri dengan Python untuk mengotomatiskan proses menginstal objek di gudang data. Itu dikendalikan oleh Jenkins dan memungkinkan Anda untuk memulai fungsionalitas yang diperlukan baik secara manual dengan tombol dengan input dari parameter startup yang diperlukan, atau sepenuhnya secara otomatis sesuai jadwal tanpa intervensi pengguna. Selain itu, perusahaan kami telah menerapkan sejumlah aplikasi yang ditulis menggunakan Oracle APEX.
Apa itu Oracle Application Express (Oracle APEX)?
Oracle APEX - dalam versi aplikasi sebelumnya disebut HTML DB. Dengan menggunakan alat ini, hanya menggunakan browser dan memiliki pengalaman pemrograman dalam bahasa seperti PL / SQL dan JavaScript, Anda dapat mengembangkan aplikasi web yang cepat, terukur, dan aman yang dapat dengan mudah digunakan pada sirkuit apa pun untuk pengembangan, pengujian dan implementasi selanjutnya dalam produksi .
Untuk membangun formulir entri data, tidak perlu memprogram antarmuka dengan cara yang kompleks. Aplikasi ini memiliki banyak template siap pakai yang dapat digunakan kembali untuk mengembangkan solusi Anda sendiri. Pengguna akhir juga mendapatkan akses ke aplikasi melalui browser, sehingga menghilangkan kebutuhan untuk menginstal aplikasi pada komputer. Dan dengan semua plus di atas, metadata (informasi tentang data yang digunakan) di repositori kami ada di database Oracle, jadi kami tidak bisa mengabaikan alat ini.
Contoh Arsitektur Aplikasi APEXOracle REST Data Services (ORDS) adalah layanan data yang menggantikan
Oracle HTTP server dan
mod_plsql berdasarkan
Java EE . Ini memberikan interaksi dengan objek melalui
RESTfull.Sedikit tentang Jenkins
Banyak, mungkin, sudah tahu apa jenis binatang itu, tetapi bagi mereka yang hanya melihat alat ini, saya akan memberi tahu Anda apa itu dan bagaimana kami menggunakannya di repositori kami.
Jenkins adalah alat integrasi berkelanjutan, paling sering digunakan untuk pengembangan perangkat lunak dan penyebaran aplikasi pada berbagai tahap proses pengembangan. Secara sederhana, Jenkins menyediakan lingkungan proses otomasi. Karena fleksibilitasnya dan sejumlah besar plug-in, memungkinkan untuk berintegrasi ke dalam aplikasi atau teknologi apa pun dan mendukung kerja dengan sistem kontrol versi yang berbeda.
Di departemen kami manajemen data dengan bantuannya, proses CI / CD dengan menjalankan tes otomatis diimplementasikan. Dan Jenkins mengelola beberapa modul yang ditulis sendiri, berkat banyak proses manual yang otomatis.
Contoh antarmuka web-klien Jenkins, dapat diklikMasalah kesalahpahaman dan solusinya
Setelah menerapkan banyak tugas dan mengotomatiskannya, kami menghadapi masalah: tidak hanya insinyur dan spesialis pengujian DevOps yang harus mengelola proses ini, tetapi juga orang-orang yang tidak menemukan alat tersebut, tetapi terlibat dalam proses pengembangan. Pengguna akhir adalah semua karyawan internal departemen. Antarmuka klien Jenkins, menurut pendapat saya, cukup sederhana dan nyaman, tetapi saya melihatnya melalui mata DevOps, dan tidak semua orang bisa melihatnya dengan cara yang sama. Karena sejumlah tugas yang harus kami jalankan pada tombol oleh karyawan, menjadi perlu untuk membuat antarmuka yang lebih ramah bagi pengguna. Bahkan, ada plugin untuk Jenkins bernama
Blue Ocean , yang memungkinkan Anda untuk mengubah representasi alat UI.
Contoh antarmuka web-klien Jenkins (plugin Blue Ocean), dapat diklikPlugin ini tidak dapat menyelesaikan masalah kami, tetapi sebagai alternatif, jika antarmuka standar tidak cocok untuk Anda, Anda dapat mengonfigurasi ulang. Paling sering, menjadi perlu untuk mengintegrasikan modul ke Jenkins, dan bukan sebaliknya. Ini adalah kepentingan masalah yang sedang dipecahkan. Pada saat solusinya, seperti yang saya tulis, kami sudah memiliki sejumlah aplikasi yang ditulis menggunakan Oracle APEX.
Contoh antarmuka dari salah satu aplikasi APEX, dapat diklikSetelah memverifikasi bahwa antarmuka cukup ramah dan memungkinkan untuk mengelolanya, dan semua parameter untuk meluncurkan tugas-tugas yang diperlukan dalam Jenkins disimpan dalam database Oracle, muncul ide untuk meluncurkan sejumlah tugas Jenkins dari APEX.
Butuh sedikit waktu. Interaksi antara aplikasi diimplementasikan sesuai dengan prinsip arsitektur membangun sistem berorientasi layanan seperti REST. Arsitektur REST menyiratkan aturan untuk interaksi komponen aplikasi terdistribusi di jaringan. Aplikasi-APEX memungkinkan Anda untuk menggunakan gaya ini dan menyediakan templat yang sudah jadi untuk pembentukan proses pengiriman HTTP / HTTP-permintaan tipe REST selama pengembangan aplikasi. Sebagai hasilnya, kami dengan cepat mengangkat aplikasi untuk meluncurkan tugas-tugas seperti itu, data untuk peluncuran mulai ditarik langsung dari database dengan kemungkinan pilihan mereka, yang menghilangkan kemungkinan kesalahan dalam memasukkan parameter startup. Transmisi parameter untuk menjalankan tugas di Jenkins dilakukan melalui permintaan POST, di dalam tubuh JSON terdapat parameter yang diperlukan.
Formulir panggilan REST ketika mengembangkan aplikasi APEX, dapat diklikContoh JSON:
{"parameter":[{"name":"SERVER","labels":"master"},{"name":"INSTANCE","value":"DEV"},{"name":"SRC_CODE_START","value":"SRC_ID"},{"name":"SRC_CODE_END","value":"SRC_ID"},{"name":"MODEL_ID","value":"MODEL_ID"},{"name":"SAVE_DATA","value":"0"}],"statusCode":"303","redirectTo":"."}
Contoh aplikasi APEX yang sudah jadi untuk memohon proses Jenkins, dapat diklikHasil mengklik tombol "Jalankan proses" akan menjadi transfer parameter ke tugas Jenkins dan peluncuran berikutnya. Ditampilkan log peluncuran sukses dan tidak berhasil, yang langsung dikembalikan dari konsol proses eksekusi tugas Jenkins. Tugas itu sendiri dapat berisi proses otomatis apa pun.
Pada akhirnya
Integrasi data aplikasi di departemen kami menunjukkan hasil yang sangat baik. Tidak ada lagi kebutuhan untuk memaksa orang yang tidak seharusnya bekerja secara langsung dengan Jenkins untuk memahami toolkit aplikasi. Kami dapat membedakan dan meninggalkan kontrol atas pelaksanaan tugas di tingkat Jenkins menggunakan matriks hak kustom sehingga pengguna memiliki kemampuan untuk membangun tugas, tetapi tidak ada kemungkinan untuk mengeditnya.
Karena percobaan ini diakui berhasil, ide-ide pengembangan muncul dalam bentuk penulisan kerangka sumber terbuka kami sendiri untuk menyederhanakan interaksi dengan Jenkins dan aplikasi lain yang bekerja dengan kami. Tapi ini adalah kisah yang sangat berbeda, yang akan saya coba ceritakan di artikel mendatang.