第一眼:來自 MyOffice 的新企業郵件系統 Mailion 是如何工作的

第一眼:來自 MyOffice 的新企業郵件系統 Mailion 是如何工作的

大約四年前,我們開始設計一個名為 Mailion 的全新分佈式郵件系統,該系統專為企業通信而設計。 我們的解決方案基於雲原生微服務架構構建,能夠同時與超過1個用戶合作,並準備好滿足大型企業000%的需求。

在 Mailion 的工作過程中,團隊規模擴大了數倍,現在有近 70 名開發人員參與該產品。 從想法和第一個原型到試行商業版本的階段,我們已經走過了很長的路。 現在是時候告訴 Habr 我們正在創建什麼樣的產品、我們的郵件系統是如何安排和工作的、我們使用什麼技術堆棧以及為什麼我們的解決方案是企業通信的未來。 我們走吧!

哈布爾,你好! 我叫安東·格拉西莫夫 (Anton Gerasimov),是公司莫斯科開發中心開發部的負責人 我的辦公室。 今天我們想介紹 Mailion,這是一個全新的俄羅斯企業級郵件系統,它將成為流行的國外解決方案的一個有價值的替代方案。 Mailion 提供高負載能力、無與倫比的可擴展性和彈性,並且需要係統管理員的最少關注。

現在我們的開發處於測試階段,但是很快,根據我們的計劃,到2020年底,它將進入商業產品試點的狀態。

本文的大部分內容包含一般信息 - 不可能在一份出版物中涵蓋複雜的軟件產品。 我計劃寫一系列關於關鍵技術的故事的文章。 同時,為了您的方便,我提供以下內容:

什麼是企業郵件系統?

這個問題的簡單而明顯的答案是電子郵件和日曆工具。 但正如你所知,問題在於細節。

因此,我們正在創建具有高級調度功能的新一代郵件,該郵件主要針對企業部門和大公司。 我們專注於與大型商業和政府機構合作,這些機構可以提供 30 萬到數十萬個就業崗位。

我們的系統基於平台解決方案的原則。 我們以統一通信的概念為基礎,提供一種用於在一個系統內處理郵件、日曆和文檔的工具,並能夠通過連接其他模塊和組件來增強解決方案的功能。 順便說一句,擴展不僅可以由我們開發,也可以由我們的合作夥伴開發。 為此,還將發布相當廣泛的 SDK 工具包。

誰需要另一封郵件,為什麼?

大型企業已經形成了一個有趣的趨勢——企業正在經歷對協作功能的需求。 這不僅涉及員工通過轉移某些內容進行直接互動,還涉及共享郵件和角色箱的訪問權限、與大量參與者合作的能力以及各種公司職能的存在。

典型的企業功能是電子郵件召回機制,該機制在大公司中需求量很大,但實際上在 B2C 領域或小型企業中並未使用。 問題是,在小規模的用戶群體中,這種需求的可能性相當小,而且錯誤的成本也要低得多。 而且,在企業郵件系統之外根本不可能實現這一功能——即使在Google mail中也沒有Exchange用戶習慣的信件回复形式。 問題的根源在於上世紀80年代郵件協議的設計。

我們進行了數十次焦點小組討論,採訪了數百名用戶,並花費了數千工時來確定典型的郵件使用場景。 這使我們能夠仔細研究潛在用戶的需求及其業務流程的特殊性。 根據收到的數據,我們決定開發一種架構,以便在必要時能夠擴展到所需的負載量。 我們認為,根本沒有限制,但目前我們了解如何確保擁有數十萬用戶的公司的工作。

引擎蓋下隱藏著什麼

第一眼:來自 MyOffice 的新企業郵件系統 Mailion 是如何工作的

我們的產品包括電子郵件解決方案、日程安排工具、地址簿以及基於我們自己的 MyOffice 文檔管理解決方案的交互式文檔查看功能。

由於我們談論的是企業級解決方案,因此成熟的搜索引擎也是企業郵件不可或缺的一部分。 我們的解決方案能夠跨所有組件進行端到端形態搜索。 另外,整個郵件系統基於自己的存儲,也針對協作進行了優化。

MyOffice 郵件系統之間有什麼區別

Habr 的讀者如果已經使用過 MyOffice 解決方案,就會知道 MyOffice Mail 是作為商業產品的一部分出現的。 那麼問題來了 - 它與我的團隊開發的企業郵件系統 Mailion 有什麼區別?

我們MyOffice決定,為了滿足各種規模的公司的需求,有必要做兩個企業級的郵件系統。 MyOffice Mail 產品適用於擁有數千或數万用戶的組織。 對於較大的結構,使用Mailion更​​為方便,這是MyOffice的新產品,它基於Cloud Native微服務架構構建,具有前所未有的可擴展性和容錯能力。

客戶在選擇產品時,需要提前決定公司進一步發展的策略。 對於任何組織來說,實施郵件系統都是一個複雜的項目,不涉及快速用一種解決方案替換另一種解決方案。 因此,應提前考慮最大可能負載、容錯和自愈標準以及地理分佈因素。

這兩個 MyOffice 郵件系統有根本的不同。 它們是使用不同的技術堆棧構建的,並且根據將部署郵件系統的部分的目的和目標來選擇每個系統的工具。 我們對郵件系統中應包含的內容以及設計方法的同步有共同的產品願景。 但這是針對不同用戶群體設計的兩種產品。

開發商面臨哪些挑戰

在下文中,我將僅討論新的企業郵件系統Mailion。

我們進行了徹底的研究並分析了現有電子郵件解決方案的優缺點。 我們的專家過去直接參與高負載系統的創建,他們積累的經驗使我們能夠快速識別任何知名產品的主要痛點——磁盤輸入和輸出(IO)的性能。

可以說,加速IO操作的任務已經成為我們面臨的主要挑戰。 有必要專注於解決我們的具體任務,我們開始創建和開發自己的二進制數據存儲系統。 這種方法有一個非常明顯的經濟成分——我們不僅需要存儲數據,還需要執行大量的磁盤輸入和輸出操作。

這樣的決定並不容易。 我們查看了很多旨在存儲信息的企業級產品,但找不到任何現成且適合我們要求的產品。 畢竟,我們不僅需要存儲數據,還需要不斷地與他們合作,並且不是以獨占的方式訪問一個用戶,而是保證幾萬個用戶協作的可能性。
因此,我們確定最優先的企業標準是處理大量數據。

可靠性

此外,這與其說是存儲問題,不如說是處理和快速訪問這些信息的任務。 要求保證高可靠性指標——整個方案的連續運行時間應在99,9%的水平。 然而,郵件系統必須自主地做出有關退回郵件處理的正確決策。 只有這樣,才有可能避免出現導致特定公司業務流程癱瘓的故障。

容錯

我們制定了一套適用於每個組件的措施,並選擇了確保容錯的方法。 特別是,企業郵件系統使用數據仲裁、服務預留和無狀態控制,以及自己的路由和基於共識的仲裁機制。

高容錯性的標準是每個組件中都存在自測試機制。 Mailion不斷分析這個或那個函數是否正確執行或不正確,這個或那個塊是否正常工作。 這是系統出現故障時自我修復的手段之一。 信息不應該丟失,解決方案最終應該進入一致的狀態。

必須明白,一般來說,預見生活中所有可能發生的事件是不可能的——你無法欺騙物理學。 但我們堅持這樣的設計方法,使我們能夠以相當高的信心談論正確處理某些模式的事故。 我們還有一個龐大的測試團隊,不斷嘗試破壞產品中的某些內容。 有時他們會成功。 基於這個事實,我們開始了一個事件,我們對此進行了詳細的研究,並在此基礎上創建了一個新的機制來消除此類問題。

系統如何應對崩潰

市場經常問這樣一個問題:如果系統突然失去與其中一個節點的連接,會發生什麼情況? 如果您計劃實施地理分佈式解決方案,這樣的請求尤其重要。

在設計此類安裝時,必須考慮客戶的需求及其可靠性標準。 假設數據網絡的連接在任何地方都是相同的,這是錯誤的。 在企業系統中,甚至信號通過光纖的速度也很重要。

如果客戶對可靠性要求很高,那麼我們會建議安裝在多個數據中心,這些數據中心將通過專用通信線路連接。
儘管如此,仍不能排除郵件系統其中一個節點完全斷電的情況。 在這種情況下,該段的主數據的工作將暫停,但其餘部分將像什麼都沒發生一樣工作。 系統將通知管理員節點丟失,員工需要採取一些適當的措施。

此外,我們的郵件系統可以配置為在數據中心內進行預訂。 這種方法將確保數據中心內多個節點丟失時的可操作性,並且沒有人會注意到其中一個節點的丟失——當然,監控系統除外。 當發生此類事件時,只需重新分配負載即可。 因此,在設計郵件系統時,重要的是要考慮餘量——在事故中可能“丟失”多少組件以及哪些組件。

獨立

絕對可靠的系統並不存在,但無論如何都會發生故障。 因此,在設計郵件系統時,提供快速定位故障的能力非常重要,這將使故障能夠在一定的SLA期限內得到消除。 此外,故障應由系統自行消除,同時盡量減少系統管理員和維護服務的干預。

操作簡便

當然,大型系統不能不需要高素質員工的關注。 但我們在設計時考慮的方面之一是系統應該易於管理並且不需要任何獨特的能力。

經濟效率

當然,要使用任何此類企業系統,需要對員工進行培訓 - 畢竟我們談論的是非常巨大的規模。 因此,在創建我們的產品時,我們專注於降低系統的總擁有成本。 對於任何企業來說,監控支出效率並努力避免無休止地向運營支出注入資金非常重要。

去中心化

為了實現我之前談到的原則,系統必須完全分佈式——集中式方法總是受到硬件使用條件的限制。

當然,你可以購買一台大服務器,並嘗試將所有應用程序和服務放在上面。 但係統越大,整個設計就越複雜,這樣的系統的可靠性正在穩步下降——畢竟一台服務器就意味著單點故障。 我們的工作越集中,我們就越依賴這個中心點。

系統要求

當我們談論複雜的企業郵件系統時,我們需要明白,不存在“工作的最低配置”之類的東西。 任何大型實施的核心始終是認真的設計工作。 它允許您將特定業務的需求與郵件系統的最佳配置關聯起來。

企業郵件系統是一個靈活的工具,可以根據大量參數進行定制。 我們根據自己的方法進行負載測試,這使我們能夠根據十幾個基本標準和數百個可能標準的分析來模擬負載。

可以說,在準備實施項目時,計算將顯示組織現有業務流程中用戶的工作強度。 同時,對許多輸入參數進行分析,並根據可能的負載,決定所需的計算能力——從一台計算機到整個機房。

因此,談論一些最小配置並不完全正確。 特別是,我們還有一個僅在一台機器上運行的演示站。 但我們知道,企業部門的工作需要在數十甚至數百台虛擬機上安裝。

技術棧

在創建產品時,我們特別注意代碼的許可純度。 MyOffice 制定並執行了高質量標準,這要求我們完全自行開發產品,盡量減少外部代碼的參與。

Mailion 的大部分代碼都是內部開發的,這些代碼完全歸我們所有,我們可以根據需要進行更改和修改。 我們郵件系統的大部分代碼都是用Go(Golang)自寫的。 除了 Go 之外,我們還使用 C++ 和 Java Script ES6 作為 Web 部分。

剩下的5%是數據庫等所謂的“重組件”。 其中包括 RethinkDB、ArangoDB 和 Redis。 在關鍵技術中,我還注意到 gRPC——一種遠程過程調用系統,用作通過 API 進行交互的單一機制,這是一個重要的部分。

產品由什麼製成

企業郵件系統不是“真空服務器”。 我們的產品包括大約 70 個組件和 45 項支持郵件系統的服務。 所有這些元素都是從頭開始編寫的,並且是 MyOffice 自己開發的。

該系統最明顯的部分是服務器複合體,它提供存儲、郵件、日曆和搜索系統以及 Web 客戶端。 我們還正在開發多個用戶應用程序,併計劃在商業發佈時為我們的用戶提供基於我們的 Web 客戶端技術的新“瘦客戶端”。

郵件系統兼容性

Mailion 根據標準協議工作。 為了開始使用我們的解決方案,您只需設置客戶端應用程序並繼續在熟悉的環境中使用它們。 例如,您可以使用 MyOffice Mail 附帶的客戶端應用程序。

此外,為了方便用戶,我們創建了一個特殊的插件,可以提供從 Exchange 的無縫過渡。 在它的幫助下,用戶在更換郵件服務器時將能夠繼續使用 MS Outlook - 他們甚至不會注意到與通信工具的日常交互發生了變化。 這樣的插件可以讓您順利地從舊郵件系統轉移用戶,而無需停止整個組織的工作。 如果您需要為數十萬用戶更換工具,這一點尤其重要。

易於管理

我們公司郵件系統的一個特點是管理員的參與極少。 在設計時,我們試圖在定制的可能性和管理的複雜性之間找到平衡。 為了實現這一目標,我們需要對複雜企業系統管理員的行為模式進行大量研究。

正如我之前所說,我們的團隊由高素質的專家組成 - 他們每個人都擁有豐富的管理經驗。 因此,在開發系統時,我們試圖將他們的經驗轉移到用戶管理複雜產品時的需求。 換句話說,了解了潛在的問題,我們就在架構設計層面提前預見了解決問題的方法。

例如,

  • 提供了將系統組件隔離到容器(包括基礎設施容器)中- 這有助於我們提高安全級別,靈活配置組件之間的訪問,並且還允許我們快速將新項目包含在所需的支持系統和平台列表中按業務;
  • 單一的開發和部署方法、所有組件的單一配置格式有助於更容易理解和更高效的工作並降低支持成本;
  • 自己的系統安裝程序,基於常用的部署工具,讓您集中、靈活、易懂地管理安裝;
    微服務架構,服務之間業務邏輯職責劃分清晰,有助於理解系統的方案,更高效地支持;
  • 系統的基礎設施部分基於熟悉的解決方案,採用最佳實踐,並且還允許與企業中的現有系統集成,從而簡化了公司內部系統的調試;
  • 為此,將在存儲設施中提供基於人工智能的系統,該系統將能夠獨立識別潛在故障並管理設備。

現代設計

產品設計花費了數千工時。 在開發之前,任務是使界面現代化——簡單且直觀。 當您設計一個需要默認包含許多特定功能的企業系統時,這是很棘手的。

第一眼:來自 MyOffice 的新企業郵件系統 Mailion 是如何工作的

當然,設計不能“刻在石頭上”或批准簽字蓋章——它是一種活的工具,它在不斷發展和完善。 四年來,我們對設計進行了多次改造,但思想上並沒有發生根本性的變化。 構建整個企業產品線的關鍵原則是創建通用的設計系統。

在設計企業郵件系統時,我們特別注重三個關鍵領域的開發——適應性、一致性以及適應客戶企業形象的能力。

適應性

Mailion企業郵件系統界面的一個設計特點是能夠在任何尺寸屏幕的設備上顯示。 所有視覺組件均經過精心繪製,在移動設備上工作時可正確縮放,甚至非常適合觸摸屏上的手指控制。 此外,當應用程序窗口的大小發生變化時,列佈局也會發生變化——列的大小按比例移動,嚴格按照富互聯網應用程序概念的假設。

一致性

Mailion企業郵件系統的設計基於系統化方法。 我們從2017年初就開始發展這個方向,當時談論設計系統還不像現在那麼流行。 設計系統是一組用於視覺和技術執行的規則和工具,反映了產品的理念並不斷發展。 我們引入它是為了簡化開發和設計之間的溝通。

企業形象定制

我們的設計是一條“變色龍”,可以適應任何客戶的企業形象。 所有界面元素的顏色都是通過變量定義的。 因此,通過更改幾種顏色的基本集,您可以立即為所有應用程序重新著色。

字體也通過變量定義:界面可以使用客戶公司的企業字體,如果客戶的品牌手冊提供的話。 同時,不同的字體可能有不同的字母大小,我們也考慮到了這一點。 例如,16 號的 PT Sans 看起來明顯比相同 16 號的 Roboto 小。 因此,我們根據特定字體的特徵調整文本塊的大小。

我們將專門撰寫文章來介紹顏色庫的結構以及使用字體的特殊性。

移動應用

移動應用程序是任何現代郵件系統不可或缺的一部分 - 用戶應該能夠隨時隨地工作。
現在我們剛剛形成企業移動應用程序的概念,它們應該考慮到MyOffice郵件系統功能的差異,並為企業使用電子郵件和日曆系統提供不同的方法。

智能媒體面板

我們的焦點小組表明,用戶發現熟悉的電子郵件系統的界面很麻煩。 我們採訪的受訪者指出,處理日曆事件和附件特別困難。 我們試圖實現響應式界面並提高生產力 - 使我們的產品易於使用。

媒體面板是一種新的協作工具,可以組織有關對話的所有信息,並提供對對話參與者列表、已發送文檔的鏈接和版本的即時訪問。

該工具在用戶必須處理數百個帖子的大型跟踪的情況下很有幫助。 您經常需要查找僅在其中一個文檔或圖片中的文檔或圖片。 媒體面板創建電子郵件線程中所有項目的列表並將它們顯示在一個位置。 因此,找到所需的對像變得更加容易。

本土化

對企業郵件系統的需求不僅僅存在於俄羅斯用戶中。 MyOffice一貫奉行進軍國外市場的政策,因此產品本地化問題備受關注。

在我們的產品中,從一開始就在系統基本部分的層面上提出了外語本地化的需求。 就其本身而言,添加新語言對我們來說並不是一個大問題——這是一個完全可以理解的任務,我們知道如何解決。

現在用戶可以使用俄語和英語。 在下一個版本中,我們將在企業郵件系統中添加對 MyOffice 產品所使用的語言(法語、西班牙語、葡萄牙語等)的支持。 在某些方面,我們比鄰近部門的同事更容易,因為對於郵件和日曆系統,只需要考慮字母表以及處理日期和時間的特殊性 - 幸運的是,我們沒有公式,就像在電子表格編輯器中一樣。

是的,我們正在招聘!

創建我們的產品花了數百人年。 儘管我有很多願望,但我無法在一篇文章的框架內一次性講述所有內容。 儘管如此,我希望本出版物能夠作為了解我們產品的起點 - 正如我上面所說,我計劃繼續更詳細地討論解決方案本身及其功能,以及我們的開發方法。

我還要毫不謙虛地說,如今全世界開發此類郵件系統的公司屈指可數。 這是一項非常複雜的工程任務,既需要深入了解企業客戶的需求,又需要對大型組織的業務流程、現代設計和開發趨勢進行透徹分析,還需要大量有能力的專家。 我們的郵件系統每天都在不斷發展。

現在我們幾乎已經開放了 五十 發展中的空缺。 如果您想與我們合作創建一款可以改變企業界對電子郵件的看法的產品,請與我們合作。

來源: www.habr.com

添加評論