本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
评测
对应用程序进行容器化评测有助于发现依赖项和风险。评测还有助于将应用程序分类为优先级组,以实现现代化改造和迁移。
在评测阶段,重点关注以下关键领域:
-
容器化的操作系统依赖性 — 诸如 AWS App2Container 之类的自动容器化工具对容器化的应用程序框架和操作系统存在一些限制。有关受支持的应用程序的更多信息,请参阅 App2Container documentation。
-
监管合规 - 最有效的做法是,在目标环境中部署容器化应用程序之前,确保其符合所有法规,而不是在部署后被动地采取行动以减轻影响。检查映像中的漏洞、未经授权的容器间通信、对容器和数据的访问控制以及自动扫描以防止恶意活动。
-
灾难恢复(DR)解决方案 - 每个应用程序都有特定的停机时间服务水平协议(SLA)。在规划容器集群的分布时,记住应用程序的恢复点目标(RPO)和恢复时间目标(RTO)。默认情况下,App2Container 会将应用程序部署到多个可用区。
-
数据存储 - 容器最好是无状态的。对于有状态容器,数据必须存储在容器外部。如果容器停止使用,您可以使用映像和连接的外部卷启动一个新容器,数据不会丢失。
-
配置和密钥管理 - 可通过目标环境的参数存储或密钥存储来存储和检索容器中的配置和密钥。确保只有相关容器才能访问这些密钥,这一点至关重要。所有关于配置和密钥的操作都应记录下来。容器和密钥存储之间的通信通道必须是安全的。
-
日志管理 - 为了进行审计,每个容器生成的日志都将发送到容器外部的日志管理服务。由于应用程序由多个服务和进程组成,而每个服务和进程都驻留在不同的容器中,因此每个容器中的日志都应具有唯一 ID。
-
构建和部署流程 - 大多数企业都有某种构建和部署流程来发布应用程序和功能。要利用容器化的优势,应使用 CI/CD 管道自动构建和部署应用程序。管道带来的优势包括:一键式基础设施预置和停用、快速和防错部署、自动化以及更短的新功能发布时间。
-
上游和下游应用程序 - 最好的做法是将所有相关应用程序进行批量容器化和迁移。在不可行的情况下,应安全地打开从容器化应用程序到上游和下游应用程序的通信通道。确保该通道支持的带宽不会干扰应用程序功能。
-
许可证依赖项 - 在容器中运行多个应用程序实例,成本可能会很高。检查在容器上部署软件的合同和资格。了解使用哪些工具来计量容器上消耗的软件。
-
应用程序服务器或工作计算机上的容器化可能性 - 容器化过程会消耗服务器上的额外资源,如磁盘空间、计算能力和内存。必须对应用服务器进行分析,以确保其能够支持容器化过程。否则,您可以使用具有所需资源并能与应用程序服务器通信的工作计算机。
-
容器方面的开发人员技能和生产支持 - 当前的应用程序团队应提高自己在容器化技术方面的技能。该团队应能排查流程中的问题,根据需要调整配置,并为部署在容器上的应用程序提供支持。
你可以使用 App2Container 对在 Linux 上运行的 Java 应用程序进行容器化,例如独立应用程序、Apache Tomcat、IB JBoss M、Oracle。 WebSphere WebLogic您还可以使用 App2Container 对 Spring Boot 等通用 Java 应用程序进行容器化。应用程序容器化适用于微服务和分布式应用程序。尽管所有 Java 应用程序都可以使用 App2Container 进行现代化改造,但以下标准可以帮助您选择合适的应用程序进行现代化改造,以加快迁移速度:
-
打包为单个二进制文件的应用程序更容易容器化。此外,还可以使用 Java 运行时环境(JRE)对 Java 应用程序进行容器化。每个容器都可以使用其所需的特定 JRE。
-
无状态应用程序是实现容器现代化的不错选择。这些应用程序在本地存储的信息极少,大部分数据都存储在持久数据存储中。
-
使用持续集成和持续部署(CI/CD)管道发布的应用程序非常适合容器化。对每个应用程序进行容器化处理并引入容器编排平台,比如 Amazon ECS 或 Amazon EKS,并由 App2Container 自动处理。
大多数企业应用程序都集成了各种其他服务,如身份验证、持久数据存储、缓存、异步通信、日志和通知。容器化应用程序应在本地使用所有现有集成点进行测试,以成功实现容器化。准备迁移到时 AWS,必须将所有适当的集成点和数据存储迁移到 AWS。在 AWS平台上部署应用程序容器之前,必须先对配置进行必要的更新。
存储在文件系统中的数据可以迁移到 AWS 使用各种适合用例的工具
AWS 提供自己的监控和操作数据记录以及名为 Amazon CloudWatch 的可视化服务。可以将 CloudWatch 代理与应用程序一起打包到容器中以使用此服务。
对于没有源代码或无法维护源代码的组织而言,App2Container 非常适合容器化,因为它在应用程序的运行时环境中运行,不需要源代码。