为了找到你,CTO 和你唠唠研发都做啥?
?
?
本文是神策數據 CTO 曹犟親筆撰寫的深度招聘解讀系列「神策招人記」的第一篇,還有續集哦~如果通過我們的這些介紹,讓大家對一個企業服務公司,一個大數據公司有了新的認識,對于大數據這件事情增加了一些興趣,那么就達到了我們的目的。
前天,我們發了一篇文章「“數”天下神人,都“據”于此」的招聘文章,秉承我們一貫的作風,我們希望能夠讓這些招聘文章盡可能“硬”一點、“干貨”多一點,因此,我們計劃出一系列「神策招人記」的干貨文章,希望大家讀了文章之后,對于一個典型的大數據企業服務公司是如何運作的?面臨著哪些挑戰?以及是如何不斷解決問題的能夠有更好地了解。
神策數據作為一個成立快 4 年的大數據企業服務初創公司,服務了越來越多的客戶,在整個行業里面有了一些影響。同時,我們在博客上分享的神策分析產品的技術架構以及開源的數據采集 SDK,也讓越來越多的同學開始知道并且關注我們。我們也非常希望能夠有更多志同道合的、對于大數據、對于分布式處理感興趣的同學能夠加入我們,一起做一些有趣并且激動人心的產品,推動整個行業的發展。因此,我們覺得有必要通過一系列文章,向那些可能愿意加入我們的同學們,介紹一下神策數據,介紹一下整支團隊具體是做什么的、每天會碰到哪些問題、有哪些有意思的技術挑戰。
我們首先會從技術團隊開始聊起。神策數據目前擁有一支超過一百人的技術團隊,相比較創業之初只有研發,現在整個技術團隊的分工越來越明確,整體上可以分為研發、產品、售前、技術服務四個大的部門。在這篇文章里面,我們會首先介紹研發內部各個團隊的職責和要解決的技術問題,希望能夠對大家有所幫助。
神策數據為客戶提供了如下圖的產品矩陣,產品矩陣中的每個產品各自解決不同的問題,例如,神策分析是一個具有較好可視化和分析能力的非常靈活的高性能的海量用戶行為實時分析工具,神策推薦是一個基于強大的數據處理分析能力采用領先的深度學習算法技術來提升多維度業務指標的個性化推薦框架,神策標簽和自動化運營產品則主要解決用戶畫像與精準運營的需求。雖然每個產品解決不同的問題,但與此同時,它們又復用一套底層的數據平臺,共享平臺提供的海量數據的處理能力。整個產品矩陣可以針對不同行業的客戶的不同需求,自由組合,提供了從數據采集到傳輸、存儲、分析、建模、可視化、應用的整體解決方案。
因此,在研發團隊內部,也基本是按照數據處理的過程,劃分為數據采集、數據導入與預處理、分布式存儲、分布式查詢、數據中臺、基礎平臺化、用戶標簽、數據可視化、機器學習等不同的技術方向和團隊。下面我們依次進行介紹。
數據采集團隊
對于所有的數據平臺和數據產品來說,數據采集都是整個數據處理過程的起點和重中之重。不管最后這個數據是用于統計報表還是用于個性化推薦,采集到的數據質量,都直接關系到最終應用的質量。正因為如此,我們對于數據采集投入了很大的精力,成立了專門的數據采集團隊。
數據采集團隊主要解決在不同環境下以最高的效率、最低的代價采集數據的問題。目前由于處理的主要是用戶行為數據,因此數據采集團隊目前主要在 Android App、iOS App、小程序、網頁等客戶端以及服務端提供具體的方案采集用戶行為相關的數據。
數據采集團隊提供的方案會以各個端的 SDK 為載體,SDK 提供了對數據的本地緩存、加密、網絡傳輸、一致性保證等能力的封裝,并對外提供統一的數據抓取接口。而在幾個典型的客戶端,如 Android App 和 iOS App,數據采集團隊還提供了統稱為“代碼埋點”和“全埋點”的兩種集成方式。
“代碼埋點”可以理解為直接調用 SDK 提供的數據抓取接口來采集用戶行為,而“全埋點”則可以理解為在客戶端用戶進行特定動作時,自動觸發 SDK 的數據抓取接口來自動采集對應的用戶行為。值得一提的是,數據采集團隊的工作基本都以開源項目(開源網址為:https://github.com/sensorsdata/)的形式對外開放,回饋給整個行業。
除了開發與維護 SDK 之外,數據采集團隊還需要結合客戶的具體應用情況與行業特性,為客戶制訂整體的數據采集方案,并且協助客戶一起保證數據采集的正確性與時效性。當然,除了針對用戶行為數據的采集之外,隨著神策數據整體業務范圍的擴大,未來數據采集團隊也需要探索更多其它類型數據的采集方案。
目前,數據采集團隊已經在數據采集的性能損耗、數據傳輸的一致性、接口的易用性、SDK 的穩定性、全埋點的兼容性、數據調試與校驗、與 Deeplink 的結合等具體技術點上做了非常多的工作,但也依然有很多技術難點等待攻克,因此,我們也非常希望有在 Android、iOS、JS 底層開發方面有經驗,并且對數據采集、大數據感興趣的同學加入我們,一起打造一個行業內首屈一指的數據采集方案。
數據導入與預處理團隊
神策數據服務了不少日 PV 超過百億的客戶,這代表著每天需要導入的數據超過百億。而神策分析又是一個純實時的數據分析系統,期望所有的數據都能夠以秒級的延遲完成導入。在這樣的數據量下,如何在保證完成對數據的基本預處理的情況下,還能讓所有的數據實時導入,就變成了一個頗具挑戰的技術難題。
我們的數據導入預處理團隊,主要就是解決數據導入過程中的一系列問題。例如,在數據導入過程中,如何高效率地完成一些數據預處理工作,從最簡單的 IP、User-Agent 等基礎字段的解析,到會有上下文依賴的 ID-Mapping(在實時系統中,有上下文依賴的處理環節一直都會是一個技術挑戰,這里也不例外);當突發流量高峰時,如何保證數據不丟失;在多個數據處理節點組成的集群內,如何做好各個節點之間的協同;如何設計良好的對外編程接口,讓客戶能夠方便高效地在數據導入環節嵌入自己的數據處理邏輯。以上所列出的這些技術問題,由于海量數據與實時處理兩個大的前提,會變得更有挑戰,當然,也會更有趣。
我們歡迎所有對于數據預處理、分布式處理有興趣,或者有一定 Java 開發經驗的同學加入我們,跟我們一起探討這些很有可能在如此大規模數據和如此高時效性要求下才會發現的問題,一起讓客戶有限的硬件能夠處理更大量級的數據。
分布式存儲團隊
采集的數據,最終要通過預處理環節后導入到存儲介質中。而分布式存儲團隊,則主要圍繞著如何更有效率地存儲數據來進行工作。
存儲的效率可以從這幾個方面來衡量,數據寫入的效率、數據讀取的效率以及數據所占用的磁盤空間。數據寫入的效率,是指如何用盡可能短的時間,實時寫入盡可能多的數據;數據讀取的效率,則是指針對特定的數據讀取和掃描請求,如何在盡可能短的時間內完成;數據所占用的磁盤空間,則是指相同的數據到底需要在磁盤上占用多少空間。
從具體的工作內容上講,分布式存儲團隊會基于 Kudu、HDFS 等開源組件,在列存儲、數據壓縮算法、查詢算子下推、掃描預測算法、數據一致性等方面,進行深入的探索與研究。我們非常歡迎在分布式存儲方面有經驗或興趣,或愿意參與對主流開源組件的修改與優化的技術同學加入我們,一起繼續這方面的工作,探索如何用最好的方式,存儲每天千億級別的數據,并且在數據的寫入和查詢上達到一個平衡。
分布式查詢團隊
數據的查詢是數據的非常基本也是非常重要的應用,以神策分析為例,作為一款用戶行為分析產品,最重要的就是要為客戶提供靈活快速的分析能力。從最初只有 3 個單薄的基礎分析功能,到現在支持 10 個復雜的分析模型聯合構建的場景化分析能力,離不開對數據查詢引擎的深度開發。同時,面對數以 TB 級別的海量數據,如何還能保證隨機查詢的秒級響應,也是分布式查詢團隊面臨的主要的挑戰。
分布式查詢引擎團隊的首要職責就是要配合產品設計,高效地實現各種靈活復雜的分析模型。這里所謂的“高效”,一方面指開發速度快、穩定性高,另一方面也要求最終實現的功能在性能方面達到最優。為此我們已經做了大量的努力,例如我們基于 Impala 原有的執行框架,設計實現了 Transform 數據處理模型,以此為基礎實現的各種分析模型,不但邏輯結構簡單、代碼少,執行性能也比使用 Impala 的原有方式有 10 倍以上的提升。同時,為了盡可能地為客戶節省寶貴的計算資源,也是進一步提高查詢的整體響應速度,我們還研發了適用于用戶行為分析場景的查詢緩存機制。正是這層層優化的不懈努力,保證了神策分析卓越的用戶體驗。
除了功能研發之外,分布式查詢引擎作為計算的“終結者”,如何保障其穩定運行,亦是同樣重要的工作。神策眾多家客戶的環境可謂千差萬別,除了框架的保障,我們也開發了各種針對查詢的監控及問題排查工具,以方便定位問題,節約運維成本。
不僅僅是神策分析,產品矩陣內的很多其它數據產品,也需要用到查詢能力,分布式查詢團隊,還需要考慮如何為這些產品來提供統一的查詢能力,并進行相應的性能優化。在這個過程中,對于需求的抽象、架構的設計都有很高的要求。
分布式查詢引擎的研發方向充滿挑戰,但這也同樣證明了我們團隊對技術的不懈追求。我們熱切期盼對分布式查詢引擎有所研究,并且熟練掌握 C/C++ 和 Java 語言的資深研發工程師的加入,與我們一起追求性能的極致,讓數據本身成為數據分析能力的唯一局限。
數據中臺團隊
神策數據目前正處于從單一產品向產品矩陣演進的過程中,而這多個產品都是圍繞數據處理展開的,所以每個產品都有數據導入、數據存儲、數據查詢這方面的功能需求。在這個前提下,數據中臺團隊的工作,就是對這些通用的數據處理能力進行很好的抽象與平臺化,讓我們在研發不同的產品時可以專注于產品本身的業務與功能,而不用從頭開始造輪子。
數據中臺團隊目前面臨的主要技術挑戰有:如何提供一個在產品功能需要急速迭代的情況下仍然能夠保證整個后臺穩定可靠的業務開發框架;如何設計良好可靠且易擴展的 API 接口,既能滿足可視化團隊同學的使用需求,又能滿足深度集成客戶的 API 調用需求;如何在多個產品線既有大量的邏輯耦合又有自己的特殊要求的情況下劃分服務的邊界和進行微服務的設計;如何解決分布式事務和元數據緩存的問題。數據中臺團隊已經在解決以上問題的過程中積累了豐富的經驗,也進行了很多有效的嘗試,但同時我們也面臨著很多新的技術挑戰。
數據中臺團隊作為整個神策數據平臺前端請求的排頭兵和后臺查詢的守門員,承擔著非常多的產品功能迭代和產品矩陣化的需求,一方面需要團隊同學有著扎實的技術和代碼基礎,另一方面也需要對整個業務需求有著清醒的認識和理解。我們也歡迎更多的對大數據產品后臺、業務框架開發、微服務設計感興趣,或者有 Web 開發相關經驗的同學加入我們,我們可以一起一邊解決有挑戰性的技術難題,一邊去打造全新的有創造性的大數據分析產品。
基礎平臺化團隊
雖然與大部分 SaaS 公司在商業模式上一樣,都是以按年收取產品和服務費用為主。但與大部分 SaaS 公司不同的是,出于對數據隱私、數據安全性、數據的充分應用等方面的考慮,神策數據在第一個產品的第一個版本,就具有私有化部署的能力。而隨著這幾年我們的客戶規模進一步擴大,大部分客戶也的確如我們預料的那樣選擇了私有化部署模式,私有化部署能力也客觀上成為我們的一大殺手锏。
不過,私有化部署也會帶來很多技術上的挑戰,如何能夠讓一套產品兼容不同的軟硬件環境,在數百上千個環境內穩定運行,如何能夠盡可能減少安裝、部署與運維的代價等等,都是客觀存在的技術難題。這幾年里,我們也注意到市場上的不少友商也先后嘗試私有化部署,有些也最終放棄了。這些都說明私有化部署相對于 SaaS 服務具有自己的獨特技術難題。
我們的基礎平臺化團隊就是致力于解決這類問題。他們工作包括兼容市面上各種不同的 Hadoop 發行版;開發無人值守、一鍵安裝的自動化部署工具;開發統一的資源調度與管理平臺等。我們歡迎在自動化運維方面有經驗,或對私有化部署有興趣的同學加入我們,一起在這方面進行更加深入的探索。
用戶標簽團隊
我們目前主要處理的還是用戶行為相關的數據,而在用戶行為相關的應用上,基于用戶行為來理解用戶,據此生成用戶標簽,完成對用戶的刻畫與畫像是一個廣泛存在并且非常有意義的應用場景。也因為此,我們將于用戶標簽、用戶畫像相關的工作單獨抽象成一個具體的技術方向。
用戶標簽團隊主要負責與用戶標簽的計算、管理、展示、查詢、審批、權限等功能的設計和研發工作,并與我們的數據分析師、行業專家團隊一起,抽象銀行、券商、零售等各個不同行業對于人群刻畫、用戶畫像方面的需求,與機器學習團隊一起選擇合適的算法完成對人群的分類與預測等。我們歡迎那些對于用戶畫像有興趣,或者有分布式數據應用經驗的同學加入這個團隊,一起探索用戶畫像與用戶標簽在各個不同行業的落地與應用。
數據可視化團隊
報表與多維查詢,都是非常直觀也非常有價值的數據應用方式。而對這一類數據應用類型來說,如何讓查出來的數據,以圖形化手段,更加清晰和有效地將信息傳達給數據的使用者,就是一個非常有意義的話題。從很多實際的例子中我們可以知道,同樣的一組數據,可視化展示得好還是不好,會直接影響使用者對于數據的解讀,從而最終影響基于數據做出的決策。因此,在我們看來,數據可視化并不是一個讓數據“好看”的花里胡哨的工作,而是一種真正專注于讓揭示繁雜的數據背后的規律,給使用者提供靈感,輔助使用者完成決策的很有意義的事情。
具體到實際的工作中,數據可視化團隊需要從頭研發或者基于開源組件,完成各個分析模型分析結果的圖表化展示,以直觀便捷的方式讓使用者能夠與數據進行交互,方便地完成數據的鉆取與篩選。同時,數據可視化團隊還有一部分工作是完成產品矩陣內各個產品的用戶交互界面的開發。我們非常歡迎對數據可視化感興趣,有一定前端開發經驗的同學們加入這個團隊,一起開發一個極美觀與易用性一體的數據產品。
機器學習團隊
大數據與機器學習,在很多應用場景上是一體兩面。除了神策推薦這樣一個一聽名字就知道用到了機器學習技術的個性化推薦產品以外,在神策分析、標簽和運營產品中,機器學習技術也廣泛得到了應用。例如,在神策分析中,我們需要用到機器學習技術來預測流量趨勢,當數據發生異常時來自動發現異常主要體現在哪些維度上,或是找到某個特定流程中完成了轉化和未完成轉化的兩類典型客戶群體在用戶屬性和行為上有什么差異。在神策標簽和運營產品中,機器學習技術也被廣泛用于對用戶的精準識別、預測和運營中。也正因為如此,我們的機器學習團隊除了繼續開發、交付神策推薦產品之外,還需要和其他團隊的同事一起合作,探索機器學習技術在其他幾個數據產品中的落地可能性等。
機器學習團隊內部分為算法與策略工程化兩個技術方向,算法方向的同事會更專注于算法本身的選擇、開發與調優,而策略工程化方向的同事則會更專注于算法的工程化、數據流的開發,服務的穩定性等。我們非常歡迎對機器學習有興趣,愿意在真實的海量數據環境下驗證算法的實際效果的同學們加入我們,一起來探索數據除了分析報表以外,還能有哪些更智能的、更有趣的應用。
謹以此文章,獻給在人生十字交叉口徘徊、或在求職路上迷茫、或對大數據和數據分析感興趣、或渴望加入我們卻不知突破點的有志之士們,希望對你們有所幫助!
?
更多詳情,可關注【神策數據】公眾號了解~?
總結
以上是生活随笔為你收集整理的为了找到你,CTO 和你唠唠研发都做啥?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2019 神策春招 | “数”天下神人,
- 下一篇: 神策 FM | “微信之父”张小龙的四大