关于在EC2/S3上部署数据处理应用程序已经有很多文章,但我想知道,开发此类应用程序的典型工作流程是什么?
假设我有一TB的时间序列数据,并且已经将其存储在S3上。我该如何编写应用程序并进行交互式数据分析来构建机器学习模型,然后编写大型程序来测试它们?换句话说,在这种情况下,如何设置开发环境?我是否每次想要工作时都启动一个EC2实例,在其上开发软件并保存我的更改,然后关闭?
通常,我会启动R或Pylab,从本地驱动器读取数据并进行分析。然后我会基于这些分析创建应用程序,并让它在这些数据上运行。
在EC2上,我不确定是否可以这样做。人们是否将数据保存在本地进行分析,并且只有在需要运行大型模拟作业时才使用EC2?
我非常好奇知道其他人,特别是那些整个基础设施都基于EC2/S3的初创公司,正在做什么。
回答:
我们创建了一个基准,自定义AMI,其中包含我们知道始终需要的所有程序。
我们开发的(并持续更新的)软件存储在外部存储中(我们使用Maven仓库,但您可以使用任何与您的环境兼容的存储)。
然后我们启动我们的自定义AMI,里面包含我们需要的所有东西,从Maven部署我们软件的最新版本,我们就可以开始工作了。
所以工作流程是:
设置
创建一个包含我们始终需要的东西的自定义AMI
持续进行
在本地开发软件将二进制文件部署到外部存储(在我们的例子中是Maven仓库)根据需要启动多个自定义AMI实例从外部存储复制二进制文件到每个实例在每个实例上运行