数据已成为一项战略优势,甚至不再是一个问题。 现在,每个业务都是数据业务,仅存储和归档数据已不再足够,您需要能够采取行动:保护,培育,开发,购买和出售数据。 数十亿美元的业务都围绕着它建立。 但是,许多企业已经遇到了这样一个现实,即其传统平台并未构建为将数据视为如此宝贵的资产。 我们会继续看到由于几年前做出的软件设计决策而没有机会的公司,没有预见性就可以预测这种趋势。

如果您参考经典的软件设计原理和最佳实践,您将看到构建数据层抽象和将系统其他功能区分开来的蓝图。 直到今天,我仍然看到开发人员在质疑为什么需要这些抽象—想知道要付出什么。 但是,对于大多数公司而言,算计的日子已经到来或很快到来,如果您没有正确构建数据架构,它将无法为业务提供支持,因为它会响应这种过渡。

根据我所看到的内容,这是我对为什么今天几乎所有企业都需要数据服务的看法。
为什么需要战略数据服务

多个数据存储是关键

存在任何软件抽象的主要原因之一是允许您轻松地将一个组件换成另一个组件。 您可能超出了数据库的范围或实现了当前解决方案功能之外的新业务需求,并且必须进行切换。 将软件编写到可以替换基础实现的接口,即可实现此目的。 这称为解耦,它只是好的软件设计。

为什么需要战略数据服务

但是我们现在正在进入数据存储专业化的世界 不同的数据存储存在唯一的原因,并且擅长于不同的事情。 存在某些数据的唯一目的是存储非常特定类型的数据并对其进行特定处理。 最终,您可能希望或需要将这些独特功能用作竞争优势,甚至是关键价值主张。 我们看到市场上数据源的多样化,尤其是在开源世界中。 数据存储现在有特色 如果不是现在,您可能会在某个时候使用其中一个以上。
为什么需要战略数据服务

为什么需要战略数据服务

一个完美的示例用例是社交网络中的一条消息。 这条数据具有许多潜在用途,并且使用单个数据存储并不容易实现所有这些用途。 但这没关系,因为您已经解耦了(对吗?)。 现在,您可以将消息记录在社交图数据库中,以便可以按兴趣对用户进行聚类并预测关系。 将消息写到分布式搜索数据存储中之后,您可以稍后搜索消息,这非常适合。 而且,您可以在关系数据库之上进行分析,趋势和仪表板,以保存机器学习模型的输出。

除了功能之外,从技术角度来看,您通常还必须在CAP算法的一致性,可用性和分区容忍度之间进行权衡。 到目前为止,还没有一个数据存储能够吃到饱,但是有了数据服务, 您就可以了

微笑服务

正确构建的数据抽象层可能最终将成为有状态服务(与无状态服务相对,无状态服务本身并不做任何事情)。 这些服务在您的体系结构中是独立存在的,这些组件能够与其他组件通信,并且具有自己的行为。 处理数据时,这非常方便。 例如,如果您担心可用性,某些数据存储区将要求您在事后验证写入持久性。 如果您的服务独立运行,则可以在适当的时候进行此工作,对使用该服务的任何人或任何人透明。 或者,您可能希望通过使数据服务将数据通过管道传输到机器学习模型来对其进行分类或进行情感分析来挖掘数据。 也许您想根据人口普查数据在其位置中查找客户人口统计数据,并使用该信息预测收入水平。
为什么需要战略数据服务

为了实现这种类型的数据相关的行为,我在一个数据服务使用一个演员系统的一个巨大的风扇。 您的数据服务可以托管一个参与者系统(或执行工作流逻辑的任何事务)来处理整个数据工作流-确保可用性,挖掘,传输以及您需要进行的任何处理。 您最终将希望获取收到的数据并对其进行充实(如果您今天还没有):对它进行地理位置定位,分类,对其进行计算,发出警报,等等。 例如,您可能希望将事务性数据输入到系统中,并以不同的时间间隔对其进行汇总,以便可以在其上运行机器学习模型来预测未来的趋势。 这是完美的选择。

数据服务的大脑不必是参与者模型,那里还有许多其他选项可用于执行数据工作。 Hadoop是一个经典的例子,但是Spark和Storm等新手将完成许多相同的事情。 这些框架中的大多数都具有可用于扩展它们的挂钩,如果它们将在将来为您提供良好服务,那么这非常重要。 (再次考虑,将其分隔为数据服务的面将使您在需要时甚至可以使用其中的一种以上。)关键是数据处理和工作流程应由数据服务本身进行控制和编排–数据服务的用户不必担心数据会发生什么变化,他们应该能够以某种形式获取数据并读取回去。

如果您喜欢它,那么应该在上面放一个API

想要成为一家纯粹的数据公司? 这些公司仅提供公共API,而不必支持复杂的用户界面。 拥有正确构建的数据服务使您可以非常轻松地执行此操作。 许多应用程序框架将使您将接口变成几乎零工作的符合标准的REST API。 只需将服务放在Web服务器中,然后让框架对其进行查看并将其转换为API。 即使您的公司没有直接销售API,您的客户也一定会喜欢它,即使没有要求也是如此。

为什么需要战略数据服务

看到公司将API作为一个单独的项目来构建它们几乎可以一无所获时,总是令人失望。 这表明代码库最初没有正确构建-在业务发展之前必须解决技术债务。

结束?

当然,这些并不是将数据服务集中在体系结构蓝图中的唯一原因。 (但是,严重的是,您需要更多的理由吗?)我很想在Hacker News主题中听听您对此的评论和想法。

翻译自: https://www.javacodegeeks.com/2014/07/why-you-need-a-strategic-data-service.html

相关文章: