PM 要懂的技術名詞與資料通訊概念 — 暫存技術、Data Layer、SDK篇
暫存技術
Cache 快取/緩存
很多的檔案與資料更新的頻率並沒有其他檔案來得頻繁且具必要性,例如:使用者的帳號密碼與個人資料、線上學習平台上的影片檔、網站上的 CSS、HTML 等等,並不需要每一次載入都跟 server 要一次資料,可以先把他暫存在附近的某處,下一次要讀取就從那個地方拿,更快。那難道就不存入資料庫了嗎?不會的,指使把資料庫在這些檔案上的更新頻率,從即時更新調整成每週更新、每月更新或每年更新一次。
可以想像成我們去一個 200 坪的餐廳吃 buffet,取餐區離我的座位很遠,所以提供一個餐車給我,把確定一定會吃的餐點都先放在上面,這樣我就不用每次想吃,都要離開座位到遙遠的取餐區再取一次,只有當我的餐車內已經沒有我想吃的餐之後,在去取。這個比喻其實還是有點不夠貼切,不過用來形容快取的速度 vs. 跟 server 再要一次相同資料的速度,相信大家還是可以理解為什麼這個技術會被廣泛使用。
那麼快取跟從資料庫取有什麼不一樣?資料庫是實體檔案,所以實際上都要從「硬碟」存取,而快取是跟「記憶體」存取所以比較快。
CDN ( Content Delivery Networks )
Cloud Service 裏面其中有一塊叫做 CDN。例如:Netflix 的主機在美國,但是我要從亞洲到美洲把影片檔拉出來給數百萬在台灣的使用者觀看,你可以想像這個一次性傳輸量有多大。這時候就需要把一部分靜態的資料放在就近的地方,減少資料傳輸的負擔。比如在日本設置一個機房放置這些靜態資料,這樣要呼叫就很快了。Netflix 在全球有上千萬使用者,作為串流娛樂平台最重視體驗,這時候使用 CDN 服務就不會不合理了,他可以很大程度地減輕主機的負擔。
Cookie &Session
Cookie 對行銷人應該都不陌生,各大廣告平台的 retargeting 廣告都仰賴對 Cookie 的存取。最近數位行銷最熱門的議題之一,也是在討論當個資意識抬頭, cookie 消失了我們還可以怎麼樣找到精準的受眾?
那什麼是 Cookie 呢?Cookie 就是存在本地端或有時候我們會說存在 Client 端,也就是你的電腦本身或是電腦裡用的瀏覽器上的暫存檔案內,並透過獨特的 id 號碼最各式各樣的行為與身份追蹤。Cookie 能暫存的時限大概在一個月左右,session 最長可以到約 1000 分鐘。
Session 最常見的應用就是紀錄已經登入過的登入資料,Session 會去讀取存在 Cookie 內的,這個 client 與 server 上次的對話狀態,而這個狀態可以有一個獨特 id 可以辨識,他就可以判斷不需要擋下你的請求。
本地端 :常聽到工程師說「在本地端就找得到」,這個本地端指的就是使用者自己的電腦裡。
Client 端:常聽到工程師說「這要看 client 端 xxoo」,這裡的 client 端通常指的是瀏覽器 ( Browser )。
了解存技術可以幫助 PM 理解可以如何提高產品效能、改善用戶體驗、降低成本。
延伸:後 Cookie 時代的接班人 — contextual targeting 內容資料比對技術
Data Layer
工程師應該會覺得這個問題很蠢,我有一度非常困惑到底什麼叫做 data layer?以及為什麼要叫他 data layer ? 我曾經因為問了這個問題,主管很不耐煩的跟我說,data layer 就是 data layer,不要想得那麼複雜!我覺得對非技術出生的人來說,能夠把技術知識圖像化,是比較容易與我們溝通的方式。我當時就是卡在一個預定的假設:他會叫 data layer 一定是因為資料是以某種型態被儲存以方便獲取。會不會是就要用 layer 形狀去定義每個資料之間的關係?答案:不是!XD
不過之所以會要叫 Data Layer 確實隱含了一個很重要的觀念就是,在軟體世界裡面,明確的「從屬關係」和「母子關係」是很重要的。所以 A 資料層包含B資料層,或者,C 資料層的存取權限比 A 資料層高。這些都是在編寫程式上的商業邏輯時很重要的關係指令,所以如果想理解一個服務、或一個演算法,從「從屬關係」和「母子關係」來理解 Data Layer 就會比較有概念了。這對我在看區塊鏈相關文章的時候也有了比較大的幫助,雖然還是很吃力 ><。( 工程師都說只有我才會有這種怪問題..不過我還是想分享一下哈哈!)
SDK ( Software Development Kit )
我覺得既然上次都聊到 API 了就不能不聊 SDK 。SDK 相當於開發集成工具環境,API就是數據接口。在 SDK 環境下調用 API 數據。
SDK 通常是指由專業性質的第三方服務商提供專業服務的集合,來實現軟體產品某項功能的工具包,比如提供 Android 開發工具、或者基於硬體開發的服務等。也有針對某項軟體功能的SDK,如推送技術、圖像識別技術、行動支付技術、語音識別分析技術等,軟體圈大多鼓勵開源,一些功能性的 SDK 已經被當作一個產品來運營。開發者不需要再對產品的每個功能進行開發,選擇合適穩定的SDK服務並花費很少的經歷就可以在產品中集成某項功能。
瀏覽 1,651 次