tanghoong cv

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
High-volume events batched out of the request pathWithout batching, every impression and click would be one call into the main servers. With batching, events accumulate and ship on a fixed interval to a separate bookkeeping service, which writes back, so the main request path stays thin.WITHOUT BATCHINGMain serversfloodedOne call per event — every impression, every click.WITH BATCHINGAccumulatefixed intervalBookkeepingseparate serviceMain serverswritten backOne batch instead of thousands of calls.
Anonymised. No client name, no industry, no real endpoints.

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.

Ini kaedah di sebaliknya

Jawapan datang daripada tapak ini. Ia akan beritahu anda apabila sesuatu projek tidak berbaloi dibina.

Mari berbual

Forward Deployed Engineer · Forward Deployed AI Engineer · Applied AI Engineer · Solutions Engineer · Customer Engineer · AI Solutions Architect · Technical Delivery Lead

Berpangkalan di Selangor, Malaysia. Terbuka kepada kerja di tapak pelanggan di Lembah Klang, termasuk penempatan jangka panjang, serta projek berpangkalan di Singapura dan di rantau Asia Pasifik. Warganegara Malaysia, sedia berpindah ke Singapura — kebenaran bekerja tajaan majikan akan diperlukan.