使用AWS将Web服务传输到Yandex.Cloud

大家好! 我叫Vitaly Davydov,我是Poteha Labs的创始人。

去年年底,Yandex为开发人员推出了一种新产品-Yandex.Cloud ,它为数据处理和存储提供计算能力和相关服务。 在本文中,我将讨论我们如何评估我们的项目之一向云的迁移,其功能和价格。

Yandex.Clouds概述

有两种方法来部署Web服务或移动应用程序。 让我们看一个数据库示例(作为Web服务的一部分):

  • 自我管理 -租车并在其上部署PostgreSQL。 他的postgres有其优点和缺点:如果负担很小,那么这样的解决方案就足够了。 但是容量越大,需要的维护越多,并且在某个时候,您将需要单独的DevOps工程师。
  • 完全托管 -选择云提供商并使用PostgreSQL作为服务。 在这种情况下,云提供商将承担整个基础架构的支持,并保证一切都会按照SLA进行 (关于服务级别的协议,这限制了最大不可用时间,一段时间内的最大总不可用时间 )。 基础架构支持没有问题。

选择云选项的人熟悉前三大主要服务提供商: Microsoft AzureAmazon Web Services(AWS)Google Cloud 。 他们提供了无限数量的虚拟机和数十种便捷服务,并且从三个选项中,您可以选择价格合适的解决方案。 我们通常与AWS合作,最近在俄罗斯使用AWS时会遇到很多麻烦。

AWS在俄罗斯的第一个功能与活动的ILV锁定相关,从初创企业到银行系统( Viber,Skyeng等 ),活动的ILV锁定在2018年就遭受了损失。

除此之外,从2019年初开始,亚马逊开始向俄罗斯公司收取使用其云解决方案的增值税(价格的20%)。 这不是特定于亚马逊的:增值税已经由Microsoft,Google和其他外国互联网公司收取,但是,在任何情况下,这对于使用常规服务的公司来说价格都是不愉快的上涨。

除国际知名公司外,俄罗斯还有云系统市场: Mail.Ru云解决方案平台, Selectel和一些规模较小的公司。 尽管许多服务仅提供铁租赁,但不等于云计算。 完整的云不仅提供租车服务,还提供一组附带服务以简化基础架构(例如,托管数据库)。

俄罗斯市场


在俄罗斯,成熟的云解决方案很少(即两个):来自mail.ru的MCS和最近推出的Yandex。Cloud

Yandex处理提供服务的问题,以便租赁服务生态系统。 开箱即用的云无法提供与AWS一样多的服务:计算机,数据存储,数据库,负载均衡器(alpha),容器编排(alpha),计划添加无服务器平台。 提议的服务集使您能够比在自己的基础架构上更快地设计和扩展大量业务解决方案,并且服务的数量也在不断增长。 云具有三个数据中心,因此您可以创建地理上分散的系统。

在2018年底,Cloud公开启动并首先打开了一个伙伴关系计划连接( 我们成为其中的第一批合作伙伴),并且从2018年12月7日起,每个人都可以使用它。 当您现在连接时,Cloud会为用户提供相识的赠款-2个月4000卢布 。 由于有了抢先体验,我们研究了将我们的一项服务从AWS迁移到云的机会,资费并进行了计算。

建筑学


现在,我们的Web服务可以在AWS上进行生产,并且由两个组件组成:前端和后端,因此我们将考虑按组件转移到Cloud组件。 我们使用以下技术堆栈来迁移应用程序:

- 前端 。 用React写的,渲染发生在客户端。 静态文件(html,脚本和样式)存储在Simple Storage Service(S3)上。 AWS前端架构

- 后端 。 在Elastic Compute Cloud(EC2)虚拟机上的docker容器中运行的django应用程序。 这些机器由弹性容器服务(ECS,一个免费的容器协调器)管理,对于数据库,我们在关系数据库服务(RDS)中使用PostgreSQL。 对于负载平衡-弹性负载平衡器(ELB)。 AWS后端架构
我们使用AWS CLI在ECS上更新服务,在S3上通过statics,通过GitLab CI部署应用程序。

服务架构在Yandex.Cloud上的外观:

- 前端 。 代替S3,使用Yandex Object Storage,您还可以从中分发站点静态信息。 Yandex.Cloud上的前端架构

- 后端 。 代替EC2,使用的是Yandex Compute Cloud,其结构类似:还有块存储,与计算机分开存在。 Cloud现在尚没有可立即使用的ECS类似物(但在Alpha版本中,有Yandex实例组,它们在此基础上承诺提供托管的容器服务)。 因此,目前,您需要使用Kubernetes或Rancher来代替ECS,而您需要自己部署。 云中的Yandex负载均衡器也是alpha版本,因此,现在,您可以使用在另一台计算机上提升的Nginx作为均衡器。 对于PostgreSQL,Cloud具有用于PostgreSQL的Yandex托管服务。 Yandex.Cloud上的后端架构

费用估算


在研究了可能的架构之后,我们对云上的服务成本进行了估算( 官方价格在此处 )。 在下表中,我们服务的每个要素的近似费用(标明的价格不包括增值税)。

什么多少钱 ($)/月
wsYandex云
负载均衡器
(1个。,1 GB RAM,1vCPU 100%,10 GB SSD)
1,300(20)630(10)
应用实例
(2个.. 4 GB RAM,1vCPU 100%,20 GB SSD)
7,400(115)2,350(36)
容器ORE的实例
(牧场主)
--630(10)
资料库
(2个,4 GB RAM,1vCPU 100%,100 GB SSD)
12,800(198)630(10)
对象存储
(10 GB,1,000,000 PUT,10,000,000 GET)
585(9)470(7)
公共IP
(2个AWS,4个Yandex.Cloud)
470(7)380(6)
传出流量
(500 GB)
2 925(45)635(10)
合计25480擦 (392美元)9695擦。 (149美元)

对于我们的参数,云比AWS便宜2.6倍。 为该服务向云过渡的融资一定是有利可图的(针对云的详细计算 ,对于AWS,您可以使用在线计算器 )。

Yandex.Cloud服务的功能


  • Yandex Compute Cloud与EC2的不同之处在于,在EC2上,您只能同时通过RAM和CPU增加计算机的功能,并且在Cloud中它们是独立的(对于每个vCPU,您可以选择1至8 GB RAM),从而提供了更大的灵活性。
  • Yandex对象存储与S3 API兼容。 在这些缺点中,尚无法在您的域上配置https证书。 使用Cloudflare证书解决了该问题,然后将保护从用户到外部API层的流量。 这是一个快速简便的选择。 您还可以配置服务器端渲染,因此我们正在等待Cloud添加此功能。
  • Cloud还没有用于异步集中式日志收集的服务(类似于AWS CloudWatch),因此,要收集和分析日志,您需要连接第三方解决方案。
  • 资源访问控制:在AWS上,这是通过在身份和访问管理(IAM)服务中创建的角色完成的,并自动分配给ECS群集内的所有实例。 云还具有自己的IAM ,但其中尚不提供AWS中的粒度权限。
  • 虽然没有用于计算的GPU机器。

结论


总之,我们重点介绍了尝试使用Yandex Cloud的原因:

  • 潜在的大量基础设施服务;
  • 某些服务可使用与AWS兼容的API,从而大大简化了过渡。
  • 关税低于西方国家的关税;与美元汇率无关;
  • 防止突然锁定;
  • 俄罗斯的一个数据中心,因此,始终会执行有关保护用户个人数据的法律。

对于2019年,Cloud计划发布已宣布的服务并添加新服务。 我们认为,通过这样的功能和关税,它将能够成为亚马逊在俄罗斯市场上的强大竞争对手。

感谢您的关注,我将在评论中回答问题。

感谢Wife( pruzhinkina )和Kirill( kpotehin )在撰写评论时所提供的帮助

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


All Articles