当CICD这套流程逐渐地在企业中发展稳定之后,这个时候,研发人员可以很顺利地提交代码,测试人员也可以很顺利地拿到安装包,运维人员也很容易拿到可发布的安装包或服务,此时应该考虑为CICD添加一些消息流系统,这个消息流系统横跨了多个部门,多个团队,而参与到CICD实践中的所有团队成员将得益于这套消息流系统,比如研发人员提交了代码,他们希望别人Review这些提交的代码,那么就应该有另外一拨人(Code Reviewers)能够看到提交代码的信息,这些信息会及时地通知到Code Reviewers以便及时处理。这只是一个简单的使用场景,当你的CICD由成千上百人参与的时候,各种各样的消息应该及时传达到每一位相关者的手里,否则很难让大家进行高效地合作。因此一个完善的CICD策略应该包含信息流这样的系统,这个系统能够及时地将信息传达给相关者,同时新加入的成员也都很容易地加入到这个信息流系统中。接下来让我们看看如何使用AWS的服务来构建一个简单的信息流系统,这些服务将用到:SNS, Lambda, CloudWatch。下图就是整个信息系统所需的组件以及工作流。

从图中你可以看到最左边是开发者,他们提交了编写好的代码,而最右边是Code Reviewers,他们将接收到开发者提交的代码,然后进行代码Review。中间部分由CodeCommit、Lambda Function、CloudWatch、SNS构成,它们具体是按照以下过程进行互通互联的:

1.开发者将代码提交到CodeCommit
2.CloudWatch检测到CodeCommit中发生了改变,然后调用Lambda Function中自定义的函数
3.Lambda Function 将从CodeCommit拉取这些改变,并将这些信息打包,最终推送到SNS
4.SNS收到这些打包的信息后,进一步将其发送给每一位订阅者
5.订阅者可收到邮件通知

以上这个过程可以通过CloudFormation进行模板化,当别人使用这个模板时,就能很快地还原这个消息系统。
展开
digolds挖矿于2019-08-19 13:15发布的图片
评论