您的公司如何部署其软件吗? [英] How does your company deploy its software?

查看:148
本文介绍了您的公司如何部署其软件吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前一个短的研究项目。我在工作的公司有一个越来越糟糕随着时间的推移一个非常沉重的释放过程。我们遇到越来越多的问题,每一个版本,它已经开始严重影响我们的交付时间表和每个版本的质量。我们提供的是部署在互联网上一个非常大的Web场大型SAAS产品。我们的部署过程是由一个专门的团队目前正在处理,以最少的开发者参与。我们主要是.NET店,但我们有一对夫妇的Java组件。

I am currently on a short research project. The company I work at has a very heavy release process that is getting worse as time progresses. We are encountering more and more issues with each release, which is starting to severely impact our delivery schedules and the quality of each release. We provide a large SAAS product that is deployed to the Internet on a very large web farm. Our deployment process is currently handled by a dedicated team, with minimal developer involvement. We are primarily a .NET shop, however we have a couple Java components as well.

我在研究我们如何能够提高我们的质量保证和部署过程,以减少浪费,我们的开发团队的机翼下带来更多的过程。我很感兴趣,听说贵公司是如何部署你的产品(preferably SAAS,但不限于此类产品)生产,并通过在那里的道路测试的征程。我很好奇,什么工作,什么也没有,我敢肯定,你们很多人有故事可讲。

I am researching how we could improve our QA and deployment process to reduce waste and bring more of the process under the wing of our dev teams. I am interested in hearing about how your company deploys your products (preferably SAAS, but not limited to such products) to production, as well as the journey through testing on its way there. I am curious what has worked, and what hasn't, and I'm sure many of you have stories to tell.

修改(其它RFC):

正如我继续我的研究,我碰到了持续部署的理念,由IMVU的3D在线社区队显然首创。这听起来像一个有趣的概念,如果或许有点复杂。我很好奇,如果有人在这里的SO与持续部署的经验吗?特别是对于大型,复杂的项目,有许多地方吧。你不一定必须不断地部署到生产环境......我们的短期需求,我们只会看看持续部署内部开发/ QA / perftest环境。如果有人已经实施了持续部署,我也很想听听你是如何管理数据库架构和数据更改/回滚。

As I have continued my research, I came across the concept of "Continuous Deployment", apparently pioneered by the IMVU 3d online community team. It sounds like an intriguing concept, if perhaps a little complex. I am curious if anyone here on SO has any experience with continuous deployment? Particularly with a large, complex project that has many parts to it. You don't necessarily have to continually deploy to production...for our short-term needs, we would only look at continuous deployment to internal dev/qa/perftest environments. If anyone has implemented continuous deployment, I am also curious to hear how you managed database schema and data changes/rollbacks.

谢谢!

推荐答案

我们部署一个金融服务的SaaS解决方案,以亚马逊的AWS的云环境。我们的解决方案是100%的Java这么多的工具并不适用于你,但这个概念应该。

We deploy a financial services SaaS solution to the Amazon AWS cloud environment. Our solution is 100% Java so many of the tools don't apply to you but the concepts should.

首先,我们减少了多少惊喜,当谈到时间通过运行一个持续集成过程中做一个发布。任何时间源$ C ​​$ C由任何开发者检查了,整个解决方案的自动生成,所有的单元测试自动运行。故障通知通过电子邮件发送给问题和团队领导开发者。

First of all, we reduce the number of surprises when it comes time to do a release by running a continuous integration process. Any time source code is checked in by any developer, the entire solution is automatically built and all unit tests automatically run. Failure notifications are emailed to the developer in question and team lead.

AWS是围绕虚拟机的概念。我们通过创建一个虚拟机映像(Amazon称之为AMI的),利用这种包含操作系统和应用程序(Java的,DB等)的特定版本是我们的愿望。构建过程产生的所有部署的工件,然后把它们拷贝到基于该AMI正在运行的实例。这是完全一样的程序适用于所有环境(测试,演示,PROD),除了一个单一的配置项目,封装版本的差异(例如连接字符串)。

AWS is built around the concept of virtual machines. We leverage this by creating a virtual machine image (Amazon calls them AMI's) that contain the specific version of the OS and applications (Java, DB, etc) that we desire. The build process creates all deployable artifacts and then copies them to a running instance based on that AMI. It's the exact same process for all environments (TEST, DEMO, PROD), except for a single configuration project that encapsulates version differences (e.g. connection strings).

QA测试结果,在测试环境中。一旦他们同意的版本,我们重复定位PROD构建过程(使用完全相同的版本控制的修订版。请记住,每个环境之间的唯一区别是配置的项目)。

QA tests the result in the TEST environment. Once they approve the version, we repeat the build process targeting PROD (using the exact same version control revisions. Remember, the only difference between each environment is one config project).

在这一点上,我们创建基础AMI与PROD code的基础上运行的虚拟机(实例),并将其命名为分期。分期进行一系列的验收测试,自动和手动。这里是非常好的一部分......现在,我们燃烧这样的环境(基础AMI加上我们的应用程序的新版本)转换成的的AMI(虚拟机映像)。然后,我们创建了我们的应用服务器基于这个新形象新的运行实例,更新负载均衡器,使其指向这些新的情况下,只是杀老的实例。这就是使用虚拟机的美丽(至少,这是一种美的)。

At that point we create a virtual machine (instance) running on the base AMI with the PROD code base and call it STAGING. STAGING goes through a series of acceptance tests, both automated and manual. Here's the really nice part... now, we burn this environment (base AMI plus new version of our application) into a new AMI (virtual machine image). Then we create new running instances of our app servers based on this new image, update the load balancer to point to these new instances, and just kill the old instances. That's the beauty of using virtual machines (at least, that's one of the beauty's).

每当我们需要调整能力(高峰小时/天),我们创建新的应用服务器实例从同一个生产AMI和负载均衡器注册。当峰值已经过去,我们只是从负载均衡轮换删除它们,然后几分钟后杀了额外的实例(允许现有会话来完成)。

Whenever we need to adjust capacity (peak hours/days), we create new application server instances from the same production AMI and register them with the load balancer. When the peak is over, we just remove them from the load balancing rotation, then kill the extra instances after a few minutes (to allow for existing sessions to complete).

这篇关于您的公司如何部署其软件吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆