2 tahun yang lalu, kami memulai sebuah blog di Habr, dimulai dengan
teks ulasan tentang apa yang kami lakukan, teknologi apa yang kami gunakan, dan ke mana kami akan pindah. Sejak 2017, banyak yang telah berubah, dan hari ini kami akan memberi tahu Anda cara mengambil keputusan - platform manajemen global Connected Cars, yang digunakan oleh banyak pengguna dan perusahaan dari berbagai tingkatan. Materi dipecah oleh proses, dari pernyataan masalah untuk penyebaran.

Produk unggulan Bright Box -
Remoto - adalah platform kaya teknologi yang canggih untuk Connected Car, yang mencakup peralatan, perangkat lunak untuk dealer dan pembuat mobil, plus aplikasi mobile untuk pengguna. Menurut analitik Bright Box utama di antara pemilik mobil, ternyata pertama-tama mereka membutuhkan kendali jarak jauh dari kunci pintu, kontrol iklim, dan mencari mobil dengan peringatan tentang guncangan atau evakuasi. Yang terakhir sudah klasik. Sekarang blok Remoto menyediakan pengguna dengan layanan berikut: remote control fungsi kendaraan, kemampuan untuk menerima data dari perangkat keras dan CAN, GPRS, SMS, Bluetooth dan kontrol daya output ke unit pengapian elektronik. Pengguna menerima informasi ini dalam aplikasi seluler.
Dan pengguna seperti itu tidak hanya pemilik mesin. Informasi yang tersedia untuk pengumpulan dapat menjadi alat yang berguna bagi banyak peserta pasar mobil. Misalnya berbagi mobil. Saat ini, perusahaan berbagi mobil adalah pemain paling aktif di pasar otomotif. Moskow telah menjadi kota nomor satu dalam jumlah total mobil yang terlibat dalam berbagi mobil. Pada tahun 2020, pembagian mobil harus mencapai tanda 40 ribu mobil di Rusia. Perusahaan berbagi mobil menjadi pemilik data berikut: jarak tempuh, koordinat GPS, kecepatan, status pintu, dan tingkat bahan bakar. Kunci dari semua ini adalah smartphone, yang merupakan pilihan yang lebih murah dan lebih aman.
Andrey Kuprikov, pendiri dan direktur pengembangan bisnis di YouDrive dan salah satu klien Bright Box:“Berbagi mobil tanpa solusi telematika sulit dibayangkan. Platform kami wajib mengumpulkan semua informasi yang mungkin tentang mobil, apa dan bagaimana hal itu terjadi. Kalau tidak, itu akan mempengaruhi bisnis. Ini adalah telematika yang memberikan informasi tentang biaya perbaikan dan suku cadang, biaya downtime mobil yang sedang diperbaiki karena kesalahan seorang pecinta kecepatan. Dengan perangkat telematika di papan, Anda dapat membangun program loyalitas pengguna yang unik. "
Sejak awal tahun ini, Remoto telah menjadi penyedia solusi untuk dua perusahaan berbagi mobil besar, YouDrive dan EasyRide, dengan 1.000 mobil di armadanya. Menggunakan solusi dalam berbagi mobil tidak hanya nyaman, tetapi juga efektif dari sudut pandang keamanan dan keuangan - dalam bentuk mengurangi risiko kecelakaan dan dalam program loyalitas. Dengan perkembangan berbagi mobil, data pengguna dikumpulkan, dan sekarang berbagi mobil, seperti bank, memiliki sistem penilaian pelanggan tertentu. Kami menulis tentang logika pengoperasian algoritma penilaian untuk pengguna berbagi mobil, menganalisis terlebih dahulu
algoritma penilaian berdasarkan pada akselerasi dan pengereman yang tajam, dan kemudian
algoritma analisis gaya mengemudi berdasarkan nilai kecepatan, kecepatan mesin, dan indikator akselerometer .

Tapi kami secara aktif bekerja tidak hanya di pasar Rusia, tetapi ini merupakan tantangan tambahan. Dengan perluasan geografi pekerjaan, menjadi jelas bahwa restrukturisasi vertikal teknik yang benar dan efektif adalah momen kunci pengembangan.
Say Vitaly Baum, Chief Product Officer
dan Vyacheslav Sokolov, Kepala Teknik:Sistem kami terdiri dari serangkaian komponen. Dalam bidang teknik, tim yang berdedikasi bertanggung jawab atas mereka. Bahkan, Rekayasa mencakup 3 proses bisnis dan satu set layanan pendukung.
Proses bisnis berikut dapat dibedakan dalam unit-unit Teknik:
- Pengembangan perangkat telematik dengan perangkat lunak tertanam untuk integrasi dengan mobil. Berurusan dengan departemen teknik HW.
- Proses pembuatan perangkat untuk klien tertentu berdasarkan pesanan unit bisnis. Bertanggung jawab untuk Manufaktur
- Pengembangan Layanan Cloud Remoto, yang bertanggung jawab atas interaksi klien, pengguna, dan perangkat telematika. Ini adalah banyak layanan backend dengan serangkaian portal untuk berbagai pengguna, aplikasi mobile klien, Danau data. Produksi ditangani oleh departemen manajemen Produk. Pengembangan seluruh bagian perangkat lunak adalah departemen Pengembangan Produk, dengan rilis dan dukungan, tim operasional RCS.
Perlu dicatat bahwa tugas menentukan persyaratan fungsional untuk fitur tertentu terletak pada departemen Manajemen Produk, yang, selain ahli produk, juga mencakup analis dan desainer. Lebih jauh, persyaratannya pergi ke departemen pengembangan Produk, yang menghadapi tugas sulit untuk menguraikan fitur menjadi komponen sistem, termasuk firmware perangkat. Tugas ini ditangani oleh Arsitek Pengembangan Produk, bersama dengan tim analis sistem.
Seperti apa perencanaan produk itu? Baru-baru ini, manajemen produk telah menjadi bagian dari tim teknik. Dan struktur organisasi seperti itu tercermin dalam cara kami mulai bekerja. Tim PM menentukan produk mana yang harus secara umum, fungsi apa yang harus dimilikinya, terlepas dari komponen sistem. Ternyata penjelasan singkat - deskripsi dangkal tentang apa yang perlu dilakukan dalam tugas. Setelah itu, spesifikasi fungsional disiapkan, yang kami sebut FSD, atau serangkaian kisah pekerjaan - misalnya, kemampuan untuk mengirim aplikasi "daftar untuk pemeliharaan" dalam produk. Setiap fitur dijelaskan oleh serangkaian kisah pekerjaan serupa.

PM juga terlibat dalam desain teknis. Mereka melakukan analisis teknis dari spesifikasi fungsional dan membuat desain teknis - TDD (Dokumen Desain Teknis), mendiskusikan desain teknis ini dengan pengembang, dan mendaratkannya di bawah pemahaman mereka. Setelah persyaratan fungsional dan desain teknis ditulis, kami mulai bekerja pada antarmuka - ini adalah antarmuka pengalaman pengguna.
Dengan demikian, insinyur produk membentuk seperangkat "unit" utilitas tertentu untuk pelanggan ("pendaftaran untuk pemeliharaan" dapat menjadi unit utilitas semacam itu) dan meneruskannya ke spesialis yang menjelaskan logika dalam rangkaian ini. Kegunaan dalam aplikasi untuk pemeliharaan berarti bahwa pelanggan dapat mengisi formulir dengan informasi yang diperlukan, yang bertepatan dengan apa yang diharapkan dealer ketika mengirimkan aplikasi untuk pemeliharaan. Spesialis produk juga menganalisis pasar, mempelajari apa yang harus ada dalam produk dan nilai apa yang diberikannya kepada pelanggan.
Pakar produk kami hari ini lebih banyak berkomunikasi dengan bisnis di dalam perusahaan atau dengan pelanggan secara langsung. Roadmap dibentuk oleh komite roadmap, yang mencakup para manajer puncak perusahaan untuk memperhitungkan semua bidang pengembangan perusahaan. Komite bertemu sekali dalam seperempat.
Hal ini dilakukan untuk mengoordinasikan pemahaman umum dan memastikan integritas produk sehingga fitur-fitur dengan mudah masuk ke dalam visi produk saat ini.
Ada layanan terpisah - keamanan cyber, yang berinteraksi dengan orang-orang yang bekerja dengan perangkat dan spesialis dari departemen backend untuk mengidentifikasi kerentanan, menutup mereka dan menilai risiko, yang dapat menyebabkan risiko ini. Hari ini, Chief Engineering Officer, yang juga memimpin tim produk, menetapkan tugas untuk divisi ini, dan dia, pada gilirannya, berkomunikasi dengan klien dan memahami apa yang sekarang diperlukan untuk mematuhi semua standar keamanan dunia maya. Semua ini termasuk dalam rencana rilis, kerentanan ditutup, sertifikat diperoleh dan, secara umum, celah keamanan dihilangkan.
Setelah fungsionalitas telah dikerjakan oleh teknik dan dievaluasi oleh departemen keamanan, spesifikasinya pergi ke tim pengembangan produk, di mana kelompok kerja menguraikan fungsi sesuai dengan komponen sistem - apa yang berhubungan dengan backend, apa ke perangkat, apa yang seharusnya dapat dilakukan oleh aplikasi mobile. Tim pengembangan produk dan tim teknik HW menyepakati kerja sama, semuanya bermuara pada rencana bersama dan tidak setuju pada tim.
Bagaimana cara kami menyebarkan
Pada akhir pengembangan, hasil yang dikumpulkan mengalami pengujian dan peluncuran integrasi untuk rilis di platform cloud. Di platform cloud tempat kami menyelenggarakan (Azure), lingkungan yang dihosting untuk pelanggan. Lingkungan bertanggung jawab atas tim operasi di mana para insinyur, DevOps, dan dukungan bekerja.
Komentar oleh Vladimir Glazkov, Senior DevOps Engineer:Seluruh infrastruktur kami dijelaskan sebagai kode. Kami membuat semua perubahan hanya melalui kode. Pendekatan ini mengurangi risiko faktor manusia selama pembaruan. Ini juga memungkinkan Anda untuk dengan cepat menyebarkan contoh tambahan lingkungan untuk beberapa kebutuhan mendesak sementara. Jika terjadi kegagalan daya komputasi (VM / VMSS), Anda dapat dengan cepat menggunakan instance baru.
Tentang CI / CD - saat ini kami menggunakan sekelompok TeamCity / Octopus Deploy. TeamCity sedang dalam proses merakit proyek .net, Tes unit diluncurkan, setelah rilis dibuat di Octopus dan digunakan untuk target yang sesuai (VM / VMSS / K8S). Setelah penyebaran berhasil, tes penerimaan diluncurkan. Jika ada tes yang gagal, tim pengembang akan diberi tahu.
Awalnya, untuk setiap proyek bisnis, set sumber daya yang terpisah dibuat, termasuk alat CI / CD. Cukup cepat, realisasi datang bahwa dengan peningkatan jumlah proyek, pendekatan ini pasti gagal - tidak mungkin untuk mengelola kebun binatang seperti itu secara efektif. Dua tahun lalu, proyek unifikasi diluncurkan, yang berakhir 4 bulan kemudian. Dalam prosesnya, komponen inti sistem dialokasikan, bagi mereka proses perakitan dan penyebaran adalah sama untuk semua lingkungan. Kemampuan untuk menambah perakitan / penyebaran komponen tambahan khusus untuk proyek bisnis tertentu juga dijelaskan dan diimplementasikan. Saat membuat lingkungan baru, setiap instance TeamCity & Octopus tidak lagi diperlukan. Script ditulis bahwa, melalui API, membuat dan mengkonfigurasi semua hal yang diperlukan untuk perakitan dan penyebaran.
Kami sampai pada penggunaan lingkungan berikut: untuk pengembangan, setiap tim menggunakan dua lingkungan:
- yang pertama untuk, pada kenyataannya, pengembangan fungsionalitas baru, verifikasi fitur oleh penulis, dll;
- yang kedua adalah untuk stabilisasi.
Mungkin ada banyak set lingkungan seperti itu, melayani mereka cukup sederhana mengingat penyatuan yang dilakukan.
Ada juga lingkungan untuk penerimaan pembebasan oleh tim yang bertanggung jawab atas lingkungan tempur. Lulus tes akhir sebelum rilis dalam produksi.
Kami memiliki perjanjian dengan pengembang tentang perangkat untuk mengubah file konfigurasi. Di setiap proyek, ada file yang berisi sekumpulan parameter yang memiliki arti berbeda di lingkungan yang berbeda. Pengembang mengisi file dengan parameter yang diperlukan (string koneksi database, kunci koneksi, dll.), Nilai-nilai parameter ini adalah variabel. Untuk setiap lingkungan, nilai-nilai variabel ini adalah individual. Dengan pendekatan ini, pengembang tidak mengganggu pengumpulan secara lokal dan memeriksa sendiri. Variabel disimpan di Octopus Deploy.
Untuk pemantauan, kami menggunakan Monitor Azure, Wawasan Aplikasi, dan Log Analytics. Zabbix menjalani waktunya, mungkin di masa depan akan diberi peran terhormat pemeriksaan eksternal.
Ketika saya bergabung dengan perusahaan, menciptakan lingkungan baru membutuhkan waktu tiga minggu. Hampir tidak ada instruksi, perubahan dilakukan secara manual dan tidak direkam di mana pun. Perjalanan kami ke IaaC dimulai dengan otomatisasi sederhana, yang mengurangi proses menjadi 1 minggu. Sekarang menciptakan lingkungan baru membutuhkan waktu 4 jam. Otomatis sekitar 95% dari tindakan.
Backend kami ditulis dalam .net (4.6 / 4.7 dan inti), bagian depannya adalah JS. Untuk hosting kami menggunakan
Set Skala Mesin Virtual dan K8S. Karenanya, sangat mudah untuk menskalakan perubahan beban.
Bagaimana sistem bekerja di dalam
Kata Ivan Stolet, Kepala Platform Development Bright Box:
Anda selalu dapat menemukan diagram arsitektur saat ini
di situs .
Semua data dalam sistem disimpan terdistribusi. Ada basis data terpisah untuk penyimpanan data pribadi dengan referensi ke wilayah dan diatur sesuai dengan undang-undang setempat. Ada database di mana bagian konten dari layanan retensi pelanggan, penyimpanan berita, aplikasi, data dari berbagai sistem integrasi dealer dan produsen mobil diakumulasikan. Secara terpisah, informasi telemetri yang diproses dikumpulkan, serta pengaturan dan data lain yang diperlukan untuk memastikan pengoperasian layanan Remoto dan perangkat kami. Kami mengumpulkan data telemetri dingin secara terpisah menggunakan basis data yang dirancang untuk menyimpan sejumlah besar informasi. Selain itu, gudang data terpisah telah dibangun yang menyediakan kemampuan untuk mengoperasikan sistem AI Remoto. Dengan bantuan yang disebut crawler, semua informasi statistik yang diperlukan dikumpulkan, atas dasar itu, kecerdasan buatan memilih kelompok pengguna dan membangun "prediksi".
Pengumpulan data dari perangkat dilakukan menggunakan solusi IOT Microsoft. Perangkat terhubung ke platform, platform mengumpulkan semua telemetri dan menempatkannya di hub acara penyimpanan data sementara sementara. Pekerja kami sudah terhubung ke pusat acara, memproses telemetri, merekam data dingin dan data yang diproses, seperti rute dan acara lalu lintas, dan menjalankan perintah. Layanan terpisah dapat meminta data diagnostik dari perangkat, menganalisis kondisi mobil dan membuat laporan khusus.
Untuk aplikasi seluler khusus, API diterapkan, yang dengannya pengguna mendapatkan akses ke telemetri yang diproses, serta kemampuan untuk mengeksekusi perintah untuk perangkat yang dipasang di mobil. API yang sama digunakan untuk mendapatkan akses ke data layanan retensi pelanggan, pengguna menerima berita, penawaran khusus dari dealer dan produsen mobil di aplikasi mobile-nya, memiliki kesempatan untuk menggunakan layanan, misalnya, mengisi aplikasi untuk test drive atau pinjaman. Melalui aplikasi mobile, pengguna dapat mengatur pengaturan untuk perangkat, mengaktifkan layanan telematik, seperti mendorong kejutan, mempercepat atau meninggalkan zona, serta mengkonfigurasi start mesin otomatis sesuai dengan jadwal atau suhu.
Dealer, pada gilirannya, menggunakan portal yang disediakan memiliki kesempatan untuk menjalankan diagnostik pada perangkat pengguna, memblokir start engine jarak jauh, misalnya, untuk pekerjaan teknis atau layanan purna jual, membentuk penawaran pribadi khusus, dan juga memproses permintaan pengguna. Komunikasi dengan pengguna dalam kasus seperti ini paling sering dilakukan menggunakan pemberitahuan push.
Dealer juga memiliki kesempatan untuk menyesuaikan aplikasi mobile, dealer atau pembuat mobil dapat mengecat aplikasi dalam warna mereknya, mengubah ikon kunci, menentukan serangkaian fungsi yang tersedia dalam aplikasi dan beberapa fungsi kosmetik lainnya, portal terpisah telah dibuat untuk ini.
Untuk memberikan dukungan pelanggan, ada portal teknis di mana Anda dapat memvalidasi pengaturan pengguna dan perangkat mereka saat ini, mendiagnosis operabilitas perangkat, jika perlu, data dapat disesuaikan atas permintaan klien, misalnya, jika pengguna memilih model mobil lain selama konfigurasi, spesialis dukungan dapat memperbaikinya. Portal ini juga menyediakan kemungkinan FOTA (firmware over the air) memperbarui firmware suatu perangkat atau kelompok perangkat jika terjadi versi baru firmware dengan fungsi baru atau perbaikan bug.
Dan beberapa kata tentang keamanan
Komentar oleh Artyom Nerob, CISO:Hari ini, tim keamanan perusahaan dalam dialog aktif dengan bisnis.
Kami berusaha untuk mematuhi persyaratan hukum: undang-undang data pribadi dan GDPR. Lebih penting dari sebelumnya untuk menetapkan proses siklus pengembangan yang aman, mis. menambahkan beberapa titik kontrol ke prosedur pengembangan saat ini dalam bentuk verifikasi kode sebelum aplikasi dirilis, analisis kode pihak ketiga tambahan, meningkatkan kesadaran pengembang dalam hal cara menulis kode aman pada awalnya. Praktik dan standar dunia sangat merekomendasikan perhatian untuk keselamatan selama pengembangan, dan bukan setelahnya. Karena setelah rilis, biaya memperbaiki kerentanan adalah 30% lebih tinggi. Kami secara berkala memeriksa keamanan produk oleh pelanggan, mis. tes penetrasi. Dengan meningkatnya keamanan informasi, kami sekarang melewati tes ini dengan cukup sukses, dan tidak ada kerentanan dengan risiko kritis atau tinggi dalam produk dari rilis ke rilis.
Hari ini kami memiliki tim untuk melakukan tes penetrasi, dan kami menganggapnya sebagai tim yang akan membantu kami dalam proses pengembangan untuk melakukan beberapa tinjauan keamanan kode untuk dipertimbangkan dalam rilis mendatang. Ini tidak akan menjadi tes penetrasi penuh, tetapi hanya sebuah tinjauan yang akan dibangun ke dalam proses bisnis pengembangan kami, yang sangat benar dari sudut pandang siklus pengembangan kode aman.
Selain itu,
kami telah mengkonfirmasi sertifikat ISO 27001 , standar untuk manajemen keamanan informasi menurut audit oleh BSI.
Bagaimana kita hidup dan apa selanjutnya?
Di sini, di Bright Box, kami terus mencari cara untuk mengembangkan platform Remoto's Connected Car.
, , , , , . , , Honda, Motor Car, MINI. 2017 Zurich.

, Bright Box « ». , . , , :
: , .«»:
- ( ), , ( );
- ( );
- /, ;
- ;
- (///);
- .
, , , .
?, , .
, . work-life 1- , . .
, , , - .. , .
– .
? , .
, , . , 3 . .
, . :
– , . , «» . , .
– , . , – , , . , – 1-2% .
– , . 1- , .
, – .
– .
, , , .
Bright Box . , , ,
.

, Connected Cars
.
Driving to the future Medium .