vsettan 2018-06-25
开发者和程序员准备好转到云了吗?在决定之前,请了解一些你需要考虑的事项。
IT基础设施正在积极地转向云环境。大多数企业已经为迁移到云平台建立了新的愿景。这些积极的变化是由高层管理人员(首席技术官,首席执行官和CDO)推动的,而底层架构师则针对云原生应用程序讨论SaaS,PaaS和微服务。任何一方都会时宜的让开发者跟进新的技术方向。
云应用程序具有独特的功能,例如支持分布式体系结构,具有高扩展性和灵活性,可跨越多个云环境(独立于供应商的方法)。从云计算应用程序开发到生产支持,需要遵循完全不同的工具和技术来利用云平台的完整优势。为开发人员提供适合开发,调试和测试基于云的工具的培训是一项关键挑战。本文将介绍云环境的新方法和工具。
假设客户希望开发具有高度可扩展基础架构的新服务,来支持物联网和大数据平台。功能式编程是需要考虑的最佳选择之一。顶级云提供商支持功能编程(AWS Lambda, Azure functions, Google Cloud functions, IBM whisk等等)。
启动时间,内存效率,二进制大小和并发性是在云平台上开发微服务体系结构时的关键因素。
Golang:如果选择云计算平台,并试图决定他们想用什么语言来探索云架构,那么请考虑Go。Go是一个不错的选择,它包含了诸如并发性,轻量级,静态类型和编译语言等特性。英国的一家银行(Monzo)已经通过Go语言使用微服务完全构建了完整的银行业务架构。
Java:大多数产品都是用Java开发的,并且有大量的开发人员社区可用。Spring Boot和Java模块(来自JDK-9.0)是云原生体系结构的不错选择。这是将遗留系统迁移到云平台的良好开端。
.NET Core:正如我们所知,微软很久以来一直不支持开源社区。这是许多公司未采用.NET的主要原因之一,但微软总是提供无缺陷的开发工具,简单的语法和很好的教程。微软最近认识到,开源选项为Azure云提供了更多创新和更多业务。因此,.NET核心被开源社区所吸引。也Azure云平台的最佳选择之一。
R:不管行业如何,数据科学的热度都在计算机世界中流行起来,但如果仔细观察,还没有出现用于解决数据科学难题(统计和数学)的新语言。由于云以较低的成本提供巨大的计算机处理能力,业界试图使用旧技术和工具解决人工智能难题。R是S编程语言的一个实现。S创建于1976年,R库实现统计和数学功能。
Python:Python支持多种编程范例并检查强类型。它很容易学习,并具有强大的分析库。它得到了开源社区的大力支持。这些是Python吸引数据科学家的原因。
大规模扩展前端服务并尝试使用连接池与RDBMS数据库进行通信将无法满足实际使用情况。需要选择以云为中心的数据库来构建强大的存储平台。
Amazon DynamoDB:它可以在任何规模上提供单位毫秒的延迟。数据以NoSQL格式存储,并支持文档,键值存储模型以及构建图数据库。
Azure Cosmos DB:它支持具有水平扩展的全球分布式数据库。数据存储在NoSQL格式上,保证99%的单位数毫秒延迟。它不仅支持文档,图形,键值,表格和列族数据模型,还支持针对多种语言扩展的API。
MongoDB:MongoDB是早期提供的NoSQL数据库之一。这对客户来说是一个非常好的开源和低成本的模式。
IBM Cloudera DB:Cassandra是Cloudera的基础数据库。它支持基于Java的API与NoSQL数据库进行通信。
Oracle NoSQL DB:最后,Ooracle还加入了NoSQL DB,并支持水平负载平衡和缩放节点。
微服务架构为处理故障,路由和服务发现带来了新的挑战。在大规模构建以云为中心的服务时,需要考虑ServiceMesh。
什么是服务网格?
服务网格被buoyant.io描述为:“用于处理服务到服务通信的专用基础设施层。它负责通过构成现代云原生应用程序的复杂拓扑结构来可靠地传递请求。实际上,服务网格通常作为轻量级网络代理的数组来实现,这些代理与应用程序代码一起部署,而不需要应用程序的注意。简而言之,它充当与微服务进行通信的代理层。”
Linkerd:它在服务之间进行通信,并提供访问微服务的抽象层。主要功能包括服务发现,负载平衡,熔断,动态请求路由和分布式跟踪。
Envoy:最初建在lift内部使用,它已经作为服务网格平台开源。这不是为Kubernetes平台设计的。Istio正试图解决这些问题。
Istio:它创建带有负载平衡服务的部署服务网络以进行服务身份验证。服务监控是其支持的关键功能之一。未来,我们可能会得到红帽等大厂商的专业服务支持。
物联网是所有行业的又一增长点。许多人都听到过“数据是一种新石油”这句话。自动驾驶,移动设备和更多设备将大量数据向云平台推进。事件溯源是捕获完整在线用户活动的另一个领域。例如,如果你登录并浏览一些移动设备并添加到购物车,移除购物车并添加了另一个品牌,则会将这些数据作为事件溯源并存储以备将来使用。尝试解决这些问题的数据流工具包括:
Kafka:Kafka topic是一系列记录。Kafka producer API和Kafka consumer API支持与Kafka topic进行交互。Kafka集群具有创建许多代理和服务器的内置功能。
容器化是在云环境中运行软件的一揽子工具。每个包都有一个代码,环境变量,库和更多。这些软件包仅在任何云环境中使用,并为大规模迁移到不同的云环境提供了灵活性。
Docker:它为打包和分发容器应用程序提供了一个开放标准。Docker引擎允许构建和运行容器。
Kubernetes:它为无缝运行多个容器提供了一个底层平台。它支持容器的编排,分发和扩展,Docker镜像运行在Kubernetes环境中。
拥有这些工具和技术仅仅是迈入云平台的开始,可能会根据特定的上下文和用例进行更改。大型企业需要在构建云平台的同时,更重视开发人员的工具和技术。需要为应用程序开发,存储,安全,日志记录和调试,监控和测试创建技术路线图。