第一眼: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 邮件系统之间有何区别?

已经有使用 MyOffice 解决方案经验的 Habr 读者知道商业产品包括“MyOffice Mail”。 那么问题来了 - 它与我的团队开发的企业电子邮件系统 Mailion 有什么区别?

我们MyOffice决定,为了满足不同规模的公司的需求,有必要创建两个企业级电子邮件系统。 MyOffice Mail 产品适用于用户数量达到数千或数万的组织。 对于较大的结构,更建议使用Mailion——新的MyOffice产品,它基于云原生微服务架构构建,具有前所未有的扩展和容错能力。

客户在选择产品时,需要提前决定公司进一步发展的战略。 对于任何组织来说,实施电子邮件系统都是一项复杂的项目工作,不涉及快速用一种解决方案替换另一种解决方案。 因此,应提前考虑最大可能负载、容错和自愈标准以及地理分布因素。

这两个 MyOffice 电子邮件系统根本不同。 它们是使用不同的技术堆栈构建的,并且根据将部署邮件系统的部分的目的和目标来选择每个系统的工具。 我们对邮件系统中应包含的内容以及设计方法的同步有共同的产品愿景。 但这是针对不同用户群体设计的两种产品。

开发者面临哪些挑战?

在本文中,我将只讨论新的企业邮件系统 Mailion。

我们进行了深入的研究并分析了现有电子邮件解决方案的优缺点。 我们的专家过去直接参与创建高负载系统,他们积累的经验使我们能够快速识别任何知名产品的主要痛点——磁盘输入和输出操作(IO)的性能。

可以说,加速IO操作的任务成为我们面临的主要挑战。 有必要专注于解决我们的具体问题,我们开始创建和开发我们自己的二进制数据存储系统。 这种方法有一个非常明显的经济成分——我们不仅需要存储数据,还需要执行相当多的磁盘输入和输出操作。

这个决定并不是轻易做出的。 我们研究了很多以存储信息为目的的企业级产品,并没有找到任何现成的、适合我们要求的产品。 毕竟,我们不仅需要存储数据,还需要不断地与数据合作,并且不是以独占的方式访问一个用户,而是保证数万个用户之间协作的可能性。
因此,我们确定,我们最优先的企业标准是处理大量数据。

可靠性

此外,这与其说是存储问题,不如说是处理和快速访问这些信息的任务。 要求保证高可靠性指标——整个方案的连续运行时间应达到99,9%的水平。 同时,邮件系统必须自主做出有关处理拒绝的正确决定。 只有这样,我们才能确保不出现导致特定公司业务流程瘫痪的故障。

容错

我们制定了一系列适用于每个组件的措施和选定的方法来确保容错能力。 特别是,企业邮件系统使用数据的仲裁处理、服务的保留和缺席状态的控制,以及基于共识的路由和仲裁支持自己的机制。

高容错性的一个标准是每个组件中存在自检机制。 Mailion不断分析这个或那个函数是否正确执行或不正确,这个或那个块是否运行正确。 这是系统出现故障时自我修复的手段之一。 信息不应该丢失,解决方案最终应该达到一致的状态。

你必须明白,不可能预见生活中所有可能发生的事件——你无法欺骗物理学。 但我们坚持这样的设计方法,使我们能够以相当高的信心谈论正确处理某些模式的事故。 我们还有一个庞大的测试小组,总是试图破坏产品中的某些东西。 有时他们会成功。 这个事实引发了一个事件,我们对此进行了详细研究,并在此基础上创建了一个新的机制来消除此类问题。

系统如何应对事故

市场经常问这样一个问题:如果系统突然失去与其中一个节点的通信,将会发生什么情况? 如果您计划实施地理分布式解决方案,则此请求尤其重要。

在设计此类安装时,必须考虑客户的需求及其可靠性标准。 认为数据网络连接在任何地方都是相同的想法是错误的。 在企业系统中,甚至考虑通过光纤的信号速度也很重要。

如果客户对可靠性要求较高,那么我们会建议安装在多个数据中心,这些数据中心将通过专用通信线路连接。
不过,不能排除邮政系统其中一个节点完全断电的情况。 在这种情况下,该段的主数据的处理将暂停,但其余部分将像什么都没发生一样工作。 系统将通知管理员节点已丢失,并要求员工采取适当的措施。

此外,我们的邮件系统可以配置为在数据中心内进行预订。 这种方法将确保数据中心内多个节点丢失时的可操作性,并且没有人会注意到其中一个节点的丢失——当然,监控系统除外。 当发生此类事件时,只需重新分配负载即可。 因此,在设计邮件系统时,重要的是要考虑余量——在事故中可能“丢失”多少组件以及哪些组件。

独立

不存在绝对可靠的系统,并且可能会以某种方式发生故障。 因此,在设计邮件系统时,保证故障快速定位的能力非常重要,这样可以在一定的SLA期限内消除故障。 而且,故障应该由系统独立纠正,同时尽量减少系统管理员和运营服务的干预。

操作简便

当然,大型系统不能不需要高素质员工的关注。 但我们在设计时考虑的方面之一是系统应该易于管理并且不需要任何独特的能力。

经济效率

当然,要与任何此类企业系统合作,需要对员工进行培训——毕竟,我们谈论的是真正巨大的规模。 因此,在创建我们的产品时,我们专注于降低系统的总拥有成本。 对于任何企业来说,监控支出效率并努力避免无休止地将资金投入运营支出都很重要。

去中心化

为了实现我之前谈到的原则,系统必须是完全分布式的——集中式方法总是受到硬件使用条件的限制。

当然,您可以购买一台大型服务器并尝试在其上安装所有应用程序和服务。 但系统越大,整个设计就越复杂,这样的系统的可靠性也在稳步下降——毕竟一台服务器就意味着单点故障。 而且我们的工作越集中,我们就越依赖这个中心点。

系统要求

当我们谈论复杂的企业电子邮件系统时,我们需要明白,不存在“运行的最低配置”之类的东西。 任何大型实施的基础始终是认真的设计工作。 它允许您将特定业务的需求与邮件系统的最佳配置关联起来。

企业电子邮件系统是一种灵活的工具,可以根据大量参数进行配置。 我们使用自己的方法进行负载测试,这使我们能够根据对十几个基本标准和数百个可能标准的分析来模拟负载。

可以说,在准备实施项目时,计算将显示组织现有业务流程中用户工作的强度。 在这种情况下,会分析许多输入参数,并根据可能的负载,决定所需的计算能力——从一台计算机到整个机房。

因此,谈论一些最小配置并不完全正确。 特别是,我们还有一个仅在一台机器上工作的演示台。 但我们知道,在企业部门工作需要在数十甚至数百台虚拟机上安装。

技术栈

在创建产品时,我们特别注意代码的许可纯度。 MyOffice 建立并运行了高质量标准,这要求我们完全独立开发产品,尽量减少外部代码的参与。

Mailion 的大部分代码都是我们自己的,我们完全拥有这些代码的权利,并且我们可以根据需要进行更改和修改。 我们电子邮件系统的大部分代码都是用 Go (Golang) 内部编写的。 除了 Go 之外,我们还使用 C++ 和 JavaScript ES6 作为 Web 部分。

剩下的5%就是所谓的“重组件”,比如数据库。 其中包括 RethinkDB、ArangoDB 和 Redis。 在关键技术中,我还会提到gRPC——一种远程过程调用系统,它用作通过API进行交互的单一机制,这是一个重要的部分。

产品由什么组成?

企业电子邮件系统不是“真空服务器”。 我们的产品包括大约 70 个组件和 45 项维护邮件系统的服务。 所有这些元素都是“从头开始”编写的,并且是 MyOffice 自己开发的。

该系统最引人注目的部分是服务器复合体,它提供存储、邮件、日历和搜索系统以及 Web 客户端。 我们还正在开发多个用户应用程序,并计划在商业发布时为我们的用户提供基于我们的网络客户端技术的新“瘦客户端”。

与邮件系统的兼容性

Mailion 使用标准协议进行工作。 为了开始使用我们的解决方案,您只需配置客户端应用程序并继续在常用环境中使用它们。 例如,您可以使用 MyOffice Mail 产品中包含的客户端应用程序。

此外,为了方便用户,我们创建了一个特殊的插件,可以提供从 Exchange 的无缝过渡。 在它的帮助下,用户在更换邮件服务器时将能够继续使用 MS Outlook - 他们甚至不会注意到与通信工具的日常交互发生了任何变化。 该插件可以让您顺利地从以前的邮件系统转移用户,而无需停止整个组织的工作。 如果您需要更换工具来为数十万用户提供服务,这一点尤其重要。

易于管理

我们公司邮件系统的独特之处在于它几乎不需要管理员的参与。 在设计时,我们试图在定制的可能性和管理的复杂性之间找到平衡。 为了实现这一目标,我们需要对复杂企业系统管理员的行为模式进行大量研究。

正如我之前所说,我们的团队由高素质的专家组成 - 他们每个人都拥有丰富的管理经验。 因此,在开发系统时,我们试图将他们的经验转移到用户管理复杂产品时的需求。 换句话说,了解了潜在的问题,我们在架构设计层面主动提供解决方案。

Например,

  • 提供系统组件隔离到容器中,包括基础设施组件——这有助于我们提高安全级别,灵活配置组件之间的访问,也使我们能够快速将业务所需的新项目纳入支持的系统和平台列表中;
  • 统一的开发和部署方法以及所有组件的单一配置格式有助于更清晰、更高效的操作并降低支持成本;
  • 您自己的系统安装程序,基于熟悉的部署工具,让您集中、灵活、清晰地管理安装;
    微服务架构,服务之间业务逻辑职责划分清晰,有助于理解系统的运行方案,更高效地提供支持;
  • 系统的基础设施部分基于熟悉的解决方案,采用最佳实践,还允许与企业内现有系统集成,从而简化了公司内部系统的调试;
  • 为此,存储设施将拥有一个基于人工智能的系统,该系统将能够独立识别潜在故障并控制设备。

现代设计

产品设计花费了数千工时。 开发任务是使界面现代化——简单且直观。 当您设计企业系统时,这很困难,默认情况下该系统必须包含许多特定功能。

第一眼:MyOffice 的新企业邮件系统 Mailion 如何工作

当然,设计不能“刻在石头上”,也不能通过签名和印章来批准——它是一种活的工具,它在不断发展和完善。 四年的时间里,我们对设计进行了多次改造,但思想上并没有发生根本性的变化。 构建整个企业产品线的关键原则是创建通用的设计系统。

在设计企业电子邮件系统时,我们特别注重三个关键领域的开发——适应性、一致性和适应客户企业风格的能力。

适应性

企业邮件系统 Mailion 界面设计的一个特点是能够在任何尺寸屏幕的设备上显示。 所有视觉组件都经过精心渲染,它们在移动设备上运行时可以正确缩放,甚至对于触摸屏上的手指控制也非常有用。 此外,当您更改应用程序窗口的大小时,列布局也会发生变化 - 列的大小按比例变化,严格符合富互联网应用程序概念的假设。

一致性

Mailion企业电子邮件系统的设计基于系统方法。 我们从 2017 年初就开始开发这个领域,当时谈论设计系统还不像现在那么流行。 设计系统是一套用于视觉和技术执行的规则和工具,反映了产品的理念并不断发展。 我们引入它是为了简化开发和设计之间的沟通。

建立企业形象

我们的设计是“变色龙”,能够适应任何客户的企业风格。 所有界面元素的颜色都是通过变量定义的。 因此,通过更改几种颜色的基本集,您可以立即为所有应用程序重新着色。

字体也通过变量定义:界面可以使用客户公司的企业字体(如果客户品牌书中有规定)。 同时,不同的字体可能有不同的字号,我们也考虑到了这一点。 例如,16 号的 PT Sans 看起来明显比相同 16 号的 Roboto 小。 因此,我们根据特定字体的特征调整文本块的大小。

我们将专门撰写文章来介绍颜色库的结构和使用字体的功能。

手机应用程序

任何现代电子邮件系统的一个组成部分都是移动应用程序 - 用户应该能够随时随地工作。
现在我们刚刚形成企业移动应用程序的概念;它们应该考虑到MyOffice电子邮件系统功能的差异,并为企业使用电子邮件和日历系统提供不同的方法。

智能媒体面板

我们的焦点小组表明,用户发现传统电子邮件系统的界面很麻烦。 我们采访的受访者指出,处理日历事件和附件尤其困难。 我们试图实现响应式界面并提高生产力 - 使我们的产品易于使用。

媒体面板是一种加快协作速度的新工具,它组织所有有关信件的信息,并提供对信件参与者列表、链接和已发送文档版本的即时访问。

该工具在用户必须处理数百条消息的大轨道的情况下很有帮助。 您经常需要查找仅在其中一个文档或图片中的文档或图片。 媒体面板创建电子邮件链中所有元素的列表,并将它们显示在一个位置。 因此,找到所需的对象变得更加容易。

本土化

不仅俄罗斯用户需要企业电子邮件系统。 MyOffice奉行进军国外市场的一贯政策,因此非常注重产品本地化问题。

在我们的产品中,最初在系统的基本部分层面就提出了外语本地化的需求。 就其本身而言,添加新语言对我们来说并不是一个大问题——这是一个完全可以理解的任务,我们知道如何解决。

目前,用户可以使用俄语和英语。 在即将发布的版本中,我们将为企业电子邮件系统添加对 MyOffice 产品使用的语言(法语、西班牙语、葡萄牙语等)的支持。 在某些方面,这对我们来说比邻近部门的同事更容易,因为对于邮件和日历系统,我们只需要考虑字母表以及处理日期和时间的功能 - 幸运的是,我们没有像下面这样的公式电子表格编辑器。

是的,我们正在招聘!

创建我们的产品花了数百人年。 即使我愿意,我也无法在一篇文章中一次性告诉你所有内容。 尽管如此,我希望本出版物能够作为了解我们产品的起点 - 正如我上面所说,我计划在未来更详细地讨论解决方案本身及其功能,以及我们的开发接近。

我还要毫不谦虚地说,如今全世界开发此类邮件系统的公司屈指可数。 这是一项真正复杂的工程任务;它需要深入了解企业客户的需求、对大型组织的业务流程、现代设计和开发趋势以及相当数量的有能力的专家进行彻底分析。 我们的邮政系统每天都在发展。

现在我们几乎已经开放了 五十 发展中的空缺。 如果您想与我们合作创建一款可以改变企业界对电子邮件的看法的产品,请与我们合作。

来源: habr.com

为具有 DDoS 保护、VPS VDS 服务器的站点购买可靠的主机 🔥 购买具备 DDoS 防护的可靠网站托管服务,包括 VPS 和 VDS 服务器 | ProHoster