我想知道将代码部署到AWS EC2实例的更好方法。
在我的工作场所,我们有一个项目,Jenkins部署的工作将会进行(1):
另一方面它会去(2):
第二个场景看起来比第一个场景简单得多,即使我经常看到第一个场景,或者它的变体。 我可以看到第一个在实际部署之前运行测试会更好,但除此之外我没有看到它有多大优势。
根据您的经验,哪一个会更好(省略测试部分)? 其中任何一个我都不知道有任何明显的安全问题吗?
答案 0 :(得分:1)
使用代码部署的第一种方法意味着您可以使用许多部署配置。
这可以用于与应用程序相关的更改或基础结构更改。
正如您所提到的,要部署的应用程序的假象上传到S3,CodeDeploy完成其余部分,具体取决于部署配置。这使您可以灵活地自动回滚更改等。
此外,我相信在使用链接到CodeDeploy的基础架构时不需要ssh访问,因此这减少了与密钥等相关的一些维护和安全问题。
从基础设施方面。在AWS中构建一些负载平衡基础架构(ELB + ASG)并将其链接到CodeDeploy相对容易。代理人就是所需要的。但是,如果您需要调整基础架构,即向外扩展或向上扩展。可以通过CodeDeploy及其部署配置相对容易地引入这些更改。
此外,从S3存储桶中,您可以合并一个由部署阶段组成的CodePipeline,而不是直接转到CodeDeploy,这些部署阶段部署到连接到CodeDeploy的不同环境。这意味着Jenkins运行的某些测试任务可能会被委托给CodeDeploy或CodePipeline中的一个阶段,从而导致最终的CodeDeploy阶段。
这些只是我认为第一种选择更好的原因。总而言之,我认为从长远来看,第一个选项在战略上更有用,假设您的需求可能会发生变化。通过利用CodeDeploy,您可以在以后调整和扩展您的方法。
希望这有帮助! 帕特里克