Backend sebagai Evolusi Layanan: Kedatangan Kedua Scorocode

Halo Habr.

Kami memecah keheningan untuk waktu yang lama dan mengumumkan rilis Scorocode versi kedua.
Ini bahkan bukan evolusi, tetapi kelahiran layanan baru.

Tahun kerja, Docker, Kubernetes, Yandex.Cloud, dll.

Memperingatkan pertanyaan β€œMengapa ada Go hub di sini?”, Saya menjawab - semua layanan Scorocode ditulis dalam Golang , ini adalah bahasa yang kami gunakan sebagai bahasa utama dalam tumpukan teknologi.

Saya meminta detail di bawah kucing.

Latar belakang sejarah


Scorocode v1 diluncurkan pada musim panas 2016, mengumpulkan sekitar 20.000 pendaftaran dalam 3 bulan, selama 2,5 tahun itu adalah alat gratis untuk audiens publik kami, digunakan untuk menyebarkan cloud pribadi di mana 8 sistem tingkat yang berbeda dikembangkan selama ini: dari layanan taksi ke sistem manajemen produksi.


Pada versi pertama, ada layanan yang ditulis sendiri untuk bekerja dengan NoSQL MongoDB DBMS, parser kueri basis datanya sendiri, layanan yang menyediakan eksekusi kode JavaScript di server, dan semua ini merupakan satu kesatuan tunggal di cloud.


Kerugian utama dari platform v1:


  1. Sumber daya semua menggeledah antara aplikasi, dan itu tidak mungkin untuk mendapatkan sumber daya yang dijamin, yang di zaman kita sudah terlihat setidaknya aneh.
  2. Tidak ada mekanisme untuk meluncurkan server WEB node penuh, hanya peluncuran skrip satu kali dengan waktu eksekusi terbatas yang mungkin.
  3. Ternyata, MongoDB tidak diperlukan untuk sebagian besar klien NoSQL kami, sebaliknya, semua orang meminta relasional MySQL / PostgreSQL.
  4. Biaya tarif awal yang dibayar tinggi, sekitar 3.000 rubel / bulan, dan tidak ada pemahaman tentang apa yang dibayar pengguna.

Pada akhir tahun lalu, tim kami, setelah memahami semua pencapaian dan kegagalan, memutuskan untuk terlibat dalam pengembangan versi baru, yang secara mendasar mendesain ulang arsitektur.


Apa yang baru di v2?


Logikanya tidak berubah. Ada akun di mana pemilik akun pengguna dapat membuat aplikasi. Tetapi struktur aplikasi telah berubah. Sekarang independen, di-host pada sumber daya khusus (dalam cloud publik - pada server virtual khusus).


Menilai pekerjaan yang dilakukan, kami memahami bahwa kami telah menempuh jalan yang panjang. Sebagai permulaan, kami membangun arsitektur dasar, batu bata yang merupakan layanan yang hidup dalam wadah buruh pelabuhan , yang, pada gilirannya, digabungkan ke dalam kelompok-kelompok dependen, dan mereka hidup di pod yang dikelola Kubernetes. Secara umum, semuanya adalah genre klasik.


Layanan siap pakai digunakan:



Langkah selanjutnya adalah menulis dan membangun layanan Anda sendiri.


Auth

Layanan otorisasi aplikasi menggunakan metode Otorisasi HTTP (tipe Bearer).


Pialang

Layanan untuk mengemas layanan Anda sendiri (maaf untuk tautologi). Hari ini disajikan dalam bentuk server node, di mana Anda dapat menggunakan aplikasi lengkap Anda dengan kode sumber, atau kumpulan node siap pakai (lebih lanjut tentang ini dalam deskripsi scorocode-cli). Kami mengembangkan layanan ke arah kemungkinan pengemasan layanan siap pakai dari DTR dan layanan yang ditulis sendiri. Kami melakukan percobaan pertama, tentu saja, pada layanan yang ditulis dalam golang.


DBAPI

Layanan yang menyediakan operasi API RESTful dengan semua tabel database PostgreSQL.
Yaitu, segera setelah Anda membuat tabel dalam database, semua operasi CRUD tersedia melalui API.


Soket web

Saat menghubungkan klien melalui protokol WebSocket, ia mengidentifikasi klien, setelah itu pesan yang dinamai atau disiarkan dapat dikirim dari API server. Selanjutnya kami akan mengembangkan layanan menuju penyanggaan dan pengiriman pesan terjamin.


FS

Bekerja dengan folder dan file penyimpanan aplikasi.


PUSH

Mengirim pemberitahuan push. Sertifikat Android / iOS terikat di akun Anda.


Utilitas scorocode-cli utilitas


Pengguna 2 tahun yang bekerja dengan versi pertama mengajari kami bahwa tidak peduli seberapa indah alat yang disajikan di portal di akun pribadi pengguna, setelah periode "memanjakan" pengembang ingin kembali ke lingkungan yang mereka kenal - ke komputer lokal mereka. Karena itu, kami tidak dapat melakukannya tanpa utilitas konsol.


Today scorocode-cli (sc-cli binary) menyediakan fungsi-fungsi berikut kepada pengembang:


ambil

Menghubungkan ke aplikasi di cloud, otorisasi, menyimpan konfigurasi dalam folder .cli.


init

Mendapatkan repositori dan menggunakan aplikasi basis, diikuti dengan membangun dan menyimpan ke cloud. Aplikasi dasar masih satu, bagaimana mendapatkan Anda - kami akan menulis beberapa lagi, dari berbagai jenis.


tarik

Sinkronisasi file proyek lokal dengan cloud.


mendorong

Simpan file proyek lokal ke cloud.


regdb

Daftarkan database.


log

Mendapatkan log dari layanan.


jembatan

Meneruskan port lokal ke cloud untuk semua layanan. Sebagai contoh, setelah memulai jembatan, Anda dapat menghubungkan klien apa pun ke PostgreSQL yang keruh sebagai yang lokal.


melayani

Peluncuran aplikasi lokal. Digunakan untuk debugging lokal.


Masalahnya


Ada banyak masalah di jalan. Dan masih banyak dari mereka. Pada dasarnya, mereka muncul di persimpangan produk open source. Terkadang tindakan elementer menghasilkan penggalian mingguan dan, sebagai hasilnya, menarik permintaan ke repositori produk. Sulit untuk mendorong semuanya menjadi satu artikel. Saya harap saya akan menulis lebih banyak tentang masalah dan solusi khusus.


Rencana pengembangan


Pertama-tama, kami akan menulis layanan. Banyak layanan. Tetapi kami tidak akan menulisnya secara abstrak, tetapi atas permintaan pelanggan kami. Kami juga akan mengembangkan templat aplikasi sehingga pengguna menulis lebih sedikit kode untuk menghubungkan fitur baru.


Tentang bisnis


Kami mengubah fokus kami dari pengguna pribadi ke segmen pasar B2B. Dan kami mengubah basis - sekarang kami berada di Yandex.Cloud . Lebih lanjut tentang ini akan menjadi artikel produk Korbut kami . Justru karena ini bahwa versi uji coba muncul di versi baru cloud publik - 1 bulan, setelah itu kami ingin memahami apakah pengguna telah kehilangan minat pada kami, atau siap untuk membayar layanan (biaya konfigurasi dasar aplikasi adalah 990 rubel / bulan).


Tentang tarif


Sekarang kami memiliki tarif yang sangat transparan. Pengguna melihat sumber daya yang dialokasikan untuk aplikasi IaaS-nya, biaya yang kami lakukan dengan margin dalam persen. Persentasenya mengambang, tergantung pada volume yang dikonsumsi. Ini memberi kami transparansi dan kemampuan tarif, setelah meluncurkan pasar Yandex.Cloud, untuk menyebarkan cloud pribadi dengan tarif kepada pengguna di akun Yandex.Cloud.


Dan ya, kami berhati-hati. Mengingat kami memberikan sumber daya yang dialokasikan untuk setiap aplikasi, kumpulan aplikasi untuk periode uji coba kecil, sekitar seratus. Pertama-tama, kami mengirim undangan kepada pengguna kami dari versi lama, tetapi kami terus menerima aplikasi untuk koneksi ke periode uji coba di scorocode.ru


Epilog


Saya sangat berterima kasih kepada tim kami, yang tidak kehilangan semangat bahkan dalam situasi paling buntu. Ngomong-ngomong, tentang perintah:


  • Anya Korbut - Manajer Produk
  • Zhenya Khramtsov - arsitek, pergi pengembang
  • Levan Kiknadze - arsitek, pergi pengembang
  • Roma Gayazov - pengembang js / frontend
  • Tagir Khalilov - DevOps
  • Dasha Golubeva - Analis Sistem

Dan, tentu saja, banyak terima kasih kepada tim Yandex.Cloud untuk ketepatan, dukungan dan partisipasi mereka dalam masalah yang muncul.


Terima kasih sudah membaca sampai akhir. Saya memiliki semuanya.

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


All Articles