在无可用机器的情况下部署短时进程的最佳方法

46次阅读
没有评论

问题描述

是一名新手 DevOps 工程师,他创建了一个转换器,希望部署它。这个转换器可以将一个 3D 模型从一种格式转换为另一种格式,用户可以在平台上查看输出文件,并在需要时下载文件。在进行性能基准测试时,他发现当处理大文件时,转换过程最长可达 1 分钟。他先在 Azure 上进行开发,然后本周迁移到了 AWS。目前,转换器一次只能处理一个文件,它使用 Blender 的 Python 库和一个 C++ 库(当尝试使用 Docker 时,这些库已构建在容器内)。他最初尝试创建了一个 Docker 容器,用于处理重型二进制大对象(Blob),但发现 Docker 并不适用于读取本地文件。他正在寻找适合部署这个转换器的合适模型,他想知道 Docker 是否是一个好的解决方案,如果不是,是否还有其他方法可以实现。

解决方案

请注意以下操作可能会受到云平台和工具的版本差异。在执行操作前请确保已备份数据。

使用 AWS Lambda 进行部署

考虑到转换器的性能要求和无需手动管理基础设施的需求,AWS Lambda 是一个值得考虑的解决方案。Lambda 是 AWS 提供的无服务器计算服务,它可以根据事件触发执行代码,而且可以自动进行横向扩展以处理多个请求。

以下是使用 AWS Lambda 部署转换器的步骤:

  1. 打开 AWS 控制台,导航到 Lambda 服务。
  2. 点击“创建函数”,选择“从头开始”。
  3. 输入函数名称、运行时环境(Python)和执行角色。
  4. 在函数代码部分,上传你的转换器代码或在在线编辑器中编写代码。
  5. 配置触发器,可以选择根据 S3 存储桶事件触发 Lambda 函数。
  6. 配置内存和超时等资源。
  7. 点击“创建函数”。

使用 Lambda 部署的好处是,它会根据实际请求量自动扩展,无需手动管理服务器,同时还能够与其他 AWS 服务无缝集成,比如 S3 存储桶用于存储输入和输出文件。

使用 AWS ECS 进行部署

如果你更倾向于使用容器化部署,AWS ECS(Elastic Container Service)也是一个选择。ECS 可以管理容器化应用程序的部署、扩展和运行。

以下是使用 AWS ECS 部署转换器的步骤:

  1. 打开 AWS 控制台,导航到 ECS 服务。
  2. 创建一个 ECS 集群,选择 Fargate 或 EC2 模式。
  3. 创建任务定义,配置容器、映像和依赖。
  4. 创建服务,指定所使用的任务定义,配置实例数量等。
  5. 配置网络和负载均衡等。

ECS 提供了更多的灵活性,可以自定义容器环境,适用于更多的应用场景。

结论

根据你的需求和偏好,AWS Lambda 和 AWS ECS 都可以作为部署转换器的有效方式。Lambda 提供了无服务器的自动扩展特性,而 ECS 则提供更多的自定义选项。在做出决策之前,建议根据实际情况进行性能测试,并考虑云平台和工具的版本差异。同时,你还可以考虑其他云提供商的解决方案,以便做出更好的选择。

正文完