我们以成人2的方式玩汽车:我们如何成为汽车共享的远程信息处理供应商,并在全球开设了5个办事处

2年前,我们在Habr上开了一个博客,首先是有关我们的工作,我们使用的技术和发展方向的评论文章 。 自2017年以来,情况发生了很大变化,今天我们将告诉您如何做出决定-互联汽车全球管理平台,该平台已被许多级别的用户和公司使用。 从问题陈述到部署,按过程细分材料。



旗舰产品Bright Box- Remoto-是用于互联汽车的技术先进,功能丰富的平台,其中包括设备,面向经销商和汽车制造商的软件以及面向用户的移动应用程序。 根据车主的主要Bright Box分析,结果表明,他们首先需要远程控制门锁,气候控制和搜索带有震动或疏散警报的汽车。 后者已经是经典。 现在,Remoto模块为用户提供了以下服务:车辆功能的远程控制,从硬件和CAN,GPRS,SMS,蓝牙接收数据的能力以及对电子点火装置的输出功率的控制。 用户在移动应用程序中接收此信息。

这样的用户不仅可以是机器的所有者。 对于许多汽车市场参与者而言,可收集的信息可能是有用的工具。 例如,汽车共享。 如今,汽车共享公司是汽车市场上最活跃的参与者。 莫斯科已成为参与汽车共享的汽车总数的第一城市。 到2020年,俄罗斯的汽车共享量将达到4万辆。 汽车共享公司成为以下数据的所有者:里程,GPS坐标,速度,车门状态和燃油水平。 这一切的关键是智能手机,这是一种更便宜,更安全的选择。

YouDrive的联合创始人兼业务开发总监Andrey Kuprikov和Bright Box的客户之一:
“没有远程信息处理解决方案的汽车共享很难想象。 我们的平台有义务收集有关汽车,其发生方式和发生方式的所有可能信息。 否则,将影响业务。 远程信息处理可提供有关维修和备件成本,由于速度爱好者的故障而导致正在维修的汽车的停机时间的信息。 使用车载远程信息处理设备,您可以建立独特的用户忠诚度计划。”

自今年年初以来,Remoto已成为两家大型汽车共享公司YouDrive和EasyRide的解决方案提供商,其车队中有1000辆汽车。 在汽车共享中使用该解决方案不仅方便,而且从安全性和财务角度考虑也很有效-以降低事故风险和忠诚度计划的形式。 随着汽车共享的发展,用户数据正在积累,现在汽车共享(如银行)具有一定的客户评分系统。 我们写了汽车共享用户计分算法的操作逻辑,首先分析基于急加速和制动的计分算法 ,然后根据速度,发动机速度和加速度计指标的值分析了驾驶风格分析算法



但是,我们不仅在俄罗斯市场上积极开展工作,而且这是另一个挑战。 随着工作地域的扩大,很明显,正确有效地重组工程垂直领域是发展的关键时刻。

首席产品官Vitaly Baum说
以及首席工程官Vyacheslav Sokolov:

我们的系统由一组组件组成。 在工程中,专门的团队负责。 实际上,工程包括3个业务流程和一组支持服务。

在工程部门内可以区分以下业务流程:
  • 开发具有与汽车集成的嵌入式软件的远程信息处理设备。 与硬件工程部门打交道。
  • 按业务部门的顺序为特定客户制造设备的过程。 负责制造
  • Remoto Cloud Services的开发,负责客户端,用户和远程信息处理设备的交互。 它是大量的后端服务,具有一组针对各种用户,客户端移动应用程序和Data Lake的门户。 生产由产品管理部门处理。 整个软件部分的开发是由产品开发部门提供的,该版本包括发行和支持以及RCS运营团队。


值得注意的是,确定特定功能的功能要求的任务在于产品管理部门,该部门除了产品专家外,还包括分析师和设计人员。 此外,要求还送至产品开发部门,该部门面临着将功能分解为系统组件(包括设备固件)的艰巨任务。 该任务由产品开发架构师以及系统分析师团队处理。

产品规划是什么样的? 最近,产品管理已成为工程团队的一部分。 这种组织结构反映在我们的工作方式中。 PM团队确定总体上应该是哪种产品,应该具有什么功能,而与系统组件无关。 结果很简短-对任务中需要完成的工作的简要描述。 之后,准备功能规范(我们称为FSD)或一组工作案例-例如,在产品中发送应用程序“维护注册”的功能。 每个功能由一组相似的工作故事来描述。



项目经理也参与技术设计。 他们对功能规范进行技术分析,并创建技术设计-TDD(技术设计文档),与开发人员讨论该技术设计,并将其纳入他们的理解之下。 编写完功能要求和技术设计后,我们便开始在界面上工作-这是用户体验界面。

因此,产品工程师为客户形成了一组特定的实用程序“单位”(“注册维护”可以是这样的实用程序单位),并将其传递给描述此逻辑集合的专家。 维护申请中的有用性意味着客户可以在表格中填写必要的信息,这与经销商提交维护申请时所期望的一致。 产品专家还分析市场,研究产品中应该包含什么以及它给客户带来什么价值。

今天,我们的产品专家与公司内部的业务或直接与客户进行更多的沟通。 路线图由路线图委员会组成,该委员会包括公司的高层管理人员,以考虑公司发展的所有领域。 该委员会每季度开会一次。

这样做是为了协调共识并确保产品完整性,以使功能平稳地适合产品的当前愿景。

有一项单独的服务-网络安全,该服务与后端部门中与设备和专家一起工作的人员进行交互,以识别漏洞,关闭漏洞并评估可能导致这些风险的风险。 今天,首席产品工程官(同时也是产品团队的负责人)负责该部门的任务,而她又与客户进行了沟通,并了解了遵守所有网络安全标准所需要的内容。 所有这些都包含在发布计划中,漏洞已经关闭,证书已经获得,并且总体上消除了安全漏洞。

在工程人员确定了功能并由安全部门评估了功能之后,其规格将交给产品开发团队,在该团队中,工作组将根据系统的组件分解功能-与后端有关,与设备有关,移动应用程序应具有的功能。 产品开发团队和硬件工程团队同意合作,一切都归结为共同计划,团队意见不一。

我们如何部署


在开发结束时,收集到的结果将接受集成测试并推广到云平台上的版本。 在我们托管(Azure)的云平台上,为客户托管环境。 环境由工程师,DevOps和支持人员在其中的运营团队负责。

DevOps高级工程师Vladimir Glazkov的评论:

我们的整个基础结构被描述为代码。 我们仅通过代码进行所有更改。 这种方法降低了更新过程中人为因素的风险。 它还使您可以为某些临时的紧急需求快速部署环境的其他实例。 如果发生计算能力故障(VM / VMSS),则可以快速部署新实例。

关于CI / CD-目前,我们使用大量的TeamCity / Octopus Deploy。 TeamCity正在组装.net项目,启动单元测试,然后在Octopus中创建一个发行版并将其部署到适当的目标(VM / VMSS / K8S)。 成功部署后,将启动验收测试。 如果任何测试崩溃,将通知开发团队。

最初,为每个业务项目创建了单独的资源集,包括CI / CD工具。 很快,人们就意识到,随着项目数量的增加,这种方法注定要失败-根本不可能有效地管理这样的动物园。 两年前,发起了一个统一项目,该项目于4个月后结束。 在其过程中,分配了系统的核心组件,对于它们,所有环境的组装和部署过程都是相同的。 还描述并实现了添加特定于特定业务项目的附加组件的组装/部署的功能。 创建新环境时,不再需要TeamCity和Octopus的单个实例。 编写了脚本,通过API来创建和配置组装和部署所需的所有东西。

我们使用以下环境:为了进行开发,每个团队都使用两个环境:

  • 首先是事实上的新功能的开发,作者对功能的验证等。
  • 第二是为了稳定。

可以有许多这样的环境集;鉴于所执行的统一,对它们进行维护非常简单。

还有一个环境可供负责战斗环境的团队接受释放。 它在生产发布之前通过了最终测试。

我们已与开发人员就转换配置文件的设备达成协议。 在每个项目中,都有一个文件,其中包含一组在不同环境下具有不同含义的参数。 开发人员使用必要的参数(数据库连接字符串,连接键等)填充文件,这些参数的值是变量。 对于每个环境,这些变量的值都是单独的。 使用这种方法,开发人员不会干扰本地收集和检查自己。 变量存储在Octopus Deploy中。

为了进行监视,我们使用Azure Monitor,Application Insights和Log Analytics。 Zabbix正在度过自己的时光,也许将来它会被任命为外部检查的光荣角色。

当我加入公司时,创建新环境花了三个星期。 几乎没有说明,更改是手动进行的,没有记录在任何地方。 我们到IaaC的旅程始于简单的自动化,将流程缩短为1周。 现在创建一个新环境需要4个小时。 自动化约95%的动作。

我们的后端是用.net(4.6 / 4.7和核心)编写的,前端是JS。 对于托管,我们使用虚拟机规模集和K8S。 因此,在负载变化时很容易缩放。

系统内部的工作方式


平台开发负责人Ivan Stolet说:Bright Box:


您始终可以在该站点上找到当前架构的图表。

系统中的所有数据都是分布式存储的。 有单独的数据库用于存储关于该地区的个人数据,并根据当地法律进行组织。 有一些数据库,其中存储了客户保留服务的内容部分,新闻存储,应用程序,来自经销商和汽车制造商的各种集成系统的数据。 另外,还将收集处理后的遥测信息以及必要的设置和其他数据,以确保Remoto服务和我们的设备的可操作性。 我们使用旨在存储大量信息的数据库分别收集冷遥测数据。 此外,还建立了单独的数据仓库,这些仓库提供了操作Remoto AI系统的能力。 借助所谓的搜寻器,收集了所有必要的统计信息;人工智能在此基础上选择了用户组并建立了“预测”。

使用Microsoft的IoT解决方案从设备收集数据。 设备连接到平台,平台收集所有遥测并将其放入中间临时数据存储事件中心。 我们的员工已经连接到事件中心,过程遥测,记录冷数据和已处理数据(例如路线和交通事件)并执行命令。 单独的服务可以从设备请求诊断数据,分析汽车的状况并生成自定义报告。

对于自定义移动应用程序,将实现一个API,用户可以使用该API访问处理后的遥测,以及执行针对安装在汽车中的设备的命令的功能。 使用相同的API来访问客户保留服务数据,用户在其移动应用程序中接收新闻,经销商和汽车制造商的特别优惠,并有机会使用服务,例如填写试驾或贷款申请。 通过移动应用程序,用户可以设置设备的设置,激活远程信息处理服务,例如推动冲击,加速或离开区域,以及根据计划或温度配置发动机自动启动。

经销商反过来使用提供的门户,有机会在用户的设备上运行诊断,阻止远程引擎启动(例如,进行技术工作或售后服务),形成特殊的个人出价,还可以处理用户的请求。 在这种情况下,与用户的通信通常是使用推送通知进行的。

经销商还可以自定义移动应用程序,经销商或汽车制造商可以使用其品牌的颜色来绘制应用程序,更改键图标,确定应用程序中可用的功能集以及一些其他修饰功能,为此已创建了单独的门户。

为了提供客户支持,有一个技术门户网站,您可以在其中验证用户及其设备的当前设置,诊断设备的可操作性,必要时可以根据客户的要求调整数据,例如,如果用户在配置过程中选择了其他汽车型号,则支持专家可以对其进行修复。 该门户还提供了在新版本的固件具有新功能或错误修复的情况下,FOTA(空中固件)更新一个设备或一组设备的固件的可能性。

关于安全的几句话


CISO Artyom Nerob评论:

今天,公司的安全团队正在与企业进行积极对话。

我们努力遵守法律要求:个人数据法和GDPR。 建立安全的开发周期流程比以往更加重要 在发布应用程序之前,以代码验证的形式在当前的开发程序中添加一些控制点,进行第三方代码分析,从而提高了开发人员对最初编写安全代码的意识。 世界惯例和标准强烈建议在开发过程中而不是在开发过程中关注安全性。 因为在发布之后,修复漏洞的成本要高出30%。 我们会定期检查客户的产品安全性,即 渗透测试。 鉴于信息安全性的提高,我们现在已经非常成功地通过了这些测试,并且从发行到发行的产品中都没有存在严重或高风险的漏洞。

今天,我们有一个团队进行渗透测试,我们认为它是一个团队,可以帮助我们在开发过程中对代码安全性进行一些审查,以在将来的发行版中予以考虑。 这些将不是完整的渗透测试,而只是将纳入我们的开发业务流程中的审查,从安全的代码开发周期的角度来看,这是非常正确的。

此外, 我们已经通过BSI的审核确认了ISO 27001的信息安全管理标准证书

我们如何生活以及下一步是什么?


在Bright Box,我们一直在寻找开发Remoto的互联汽车平台的方法。
, , , , , . , , Honda, Motor Car, MINI. 2017 Zurich.



, Bright Box « ». , . , , :

: , .

«»:

  • ( ), , ( );
  • ( );
  • /, ;
  • ;
  • (///);
  • .

, , , .

?

, , .
, . work-life 1- , . .

, , , - .

. , .

– .
? , .



, , . , 3 . .



, . :

– , . , «» . , .

– , . , – , , . , – 1-2% .

– , . 1- , .

, – .



员工出生时,公司会以婴儿车礼物或现金支付的形式提供令人愉悦的奖金。

而且,如果您准备早于该法令就离开该法令,则可以放心地根据公司的政策确定薪水的奖金附加费。

Bright Box正在寻找人才。如果您阅读的内容似乎离您很近,并且喜欢汽车和人工智能,那就来吧



您可以在此处订阅来自互联汽车世界的常规新闻,文章和分析在Medium上还有一个官方的Driving to the future博客

Source: https://habr.com/ru/post/zh-CN453032/


All Articles