Kes 05 · Kerja Terpilih
Lantai kejuruteraan: berbilion tera, dan pasaran yang berjalan sendiri
- Operasi lampau — hak milik majikan
Sebelas tahun merentas dua penggal di syarikat AdTech yang sama: empat tahun sebagai satu-satunya jurutera bahagian hadapan pada penukaran platform, kemudian sebuah pasaran pengiklanan layan diri yang dibina dari hujung ke hujung, kemudian perkhidmatan bahagian belakang yang membawa puluhan ribu permintaan sesaat.
- Peranan
- Software Engineer, kemudian Senior Software Engineer
- Keupayaan
- Skala · Platform · Kejuruteraan langsung
- Bidang
- Teknologi pengiklanan — operasi penerbit, jualan dan kempen
- Tempoh
- Dua penggal, sebelas tahun
Konteks
Sebuah syarikat teknologi pengiklanan yang menjalankan platform penerbit, jualan dan operasi kempen. Saya menyertainya pada 2011, keluar pada 2017 untuk memulakan syarikat sendiri, dan diminta kembali dua kali dalam dua tahun berikutnya; saya kembali pada 2019 pada gred yang lebih tinggi dan kekal sepanjang pandemik.
Masalah dan kekaburan
Tiga masalah berbeza sepanjang sebelas tahun, tetapi satu bentuk yang berulang: sesuatu yang berfungsi pada satu skala tidak berfungsi pada skala seterusnya, dan penyelesaiannya tidak pernah berada di bahagian yang semua orang sedang perhatikan.
Peranan saya
Tahun satu hingga empat: satu-satunya jurutera bahagian hadapan pada penukaran permukaan pengendali platform itu daripada yang lama kepada yang baharu, serta QA. Tahun kelima: saya meminta pengurus saya memindahkan saya ke bahagian belakang dan permintaan itu diluluskan — ⛔ saya tidak ditugaskan semula, saya yang meminta. Kemudian saya membina pasaran pengiklanan layan diri B2B syarikat itu, melapor terus kepada CTO. Pada penggal kedua saya mengetuai penambahbaikan bahagian belakang dan API serta pemindahan ke permukaan API yang baharu.
Mengenal pasti keperluan
Permukaan pengendali itu bukan latihan reka bentuk, ia masalah kebolehgunaan dengan mata komersial: satu saluran jualan yang membawa peluang melalui peringkat keyakinan sehingga menjadi perjanjian yang dimenangi dan seterusnya ke kitaran hayat kempen, satu pengurus kempen di atas hierarki negara, pengiklan, kempen, penerbangan, penempatan dan kreatif, serta satu portal penerbit yang merangkumi konfigurasi slot iklan, pengumpulan pendapatan dan permintaan bayaran. Untuk menjadikannya betul, saya perlu duduk bersama operasi iklan dan jualan, ⛔ bukan bersama satu spesifikasi.
Seni bina dan pertukaran
Kerja skala itu ialah pemindahan seni bina lama ke permukaan API yang baharu, dan kedua-dua bahagiannya berbalik kepada satu perkara: keluarkan kerja daripada laluan permintaan. Telemetri iklan — setiap tera, klik, dan elemen mana di dalam sesuatu iklan yang diklik — akan membanjiri pelayan jika setiap peristiwa membuat panggilannya sendiri, jadi peristiwa dikumpulkan dan dihantar pada selang tetap ke perkhidmatan simpan kira yang berasingan, diproses di luar sistem utama, dan ditulis semula. Pelaporan sebelum ini dijana secara segerak, jadi sesuatu halaman tersekat semasa laporannya berjalan; itu dipindahkan ke kelompok pekerja, dengan halaman dimuatkan serta-merta dan kerja itu melapor kembali apabila siap.
Pelaksanaan dan integrasi
Pasaran itu ialah permukaan komersial yang lengkap: pengiklanan dibungkus menjadi pakej dan tawaran, satu lapisan keahlian yang sengaja dibuat ringkas di atas teras yang rumit, disambungkan ke enjin API syarikat, dengan pesanan dan pengurusan sendiri oleh pelanggan, muat naik kreatif, tambah nilai mata prabayar dan potongannya di pihak pembeli, serta pengumpulan pendapatan dan permintaan bayaran di pihak penerbit. Penerbit boleh menyenaraikan pakej, menetapkan penempatan mereka dan menjual.
Kawalan operasi
Penghantaran laporan dijadikan idempoten — memuat semula halaman tidak boleh mencetuskan semula kerja yang sudah berjalan, iaitu kegagalan yang setiap pengguna akan jumpa dalam masa seminggu. Cache berbilang lapisan, penalaan pertanyaan pangkalan data dan pemfaktoran semula Node.js pada laluan yang paling sibuk.
Kesan
Skala platform: perkhidmatan bahagian belakang itu membawa puluhan ribu permintaan sesaat dan berbilion tera iklan setiap bulan. Angka itu menggambarkan platform tersebut, ⛔ bukan satu komponen yang saya miliki seorang diri — saya bekerja pada laluan bahagian belakang tertentu di dalamnya. Pada laluan tersebut, pengumpulan berkelompok, penalaan pertanyaan, cache berbilang lapisan dan pemfaktoran semula Node.js yang diterangkan di atas telah membawa masa respons p95 ke julat bawah 100 milisaat, diukur pada laluan yang diubah.
Pengajaran yang boleh digunakan semula
Kedua-dua kemenangan skala itu datang daripada langkah yang sama — keluarkan kerja daripada laluan permintaan — dan tiada satu pun memerlukan penulisan semula. Angka daya pemprosesan itu ialah akibat daripada keputusan tersebut, ⛔ bukan pencapaian tersendiri, dan saya lebih suka ditanya tentang mekanismenya berbanding angkanya.
Bukti awam
Semua di atas ialah apa yang boleh dibincangkan secara terbuka. Apa yang ditahan, dan apa yang sedang disediakan:
Dekad ini lebih sesuai disokong oleh satu set slaid berbanding satu repositori — projek P8 — kerana kerjanya terlalu lama dan terlalu banyak milik pelanggan untuk dibina semula dengan jujur.
Jawapan datang daripada tapak ini. Ia akan beritahu anda apabila sesuatu projek tidak berbaloi dibina.