我们的团队一直在调查我们的生产环境中的问题( 请参阅Stack Overflow post )。 我们仔细研究了应用层(即代码,日志等),并且也做了一些低层的包嗅探,但是没有用。 奇怪的是这个问题只发生在生产中。 更奇怪的是,在一年多的时间里,失败点的代码并没有改变。
我们现在正处于一个需要开始探索其他select的阶段,其中一个就是用一个新的替代生产环境。 这是我希望你们都能以某种方式帮助我的地方。
我正在寻找如何尽可能无缝地将旧生产环境换成新生产环境的build议/build议。 但是,在一段时期内,我需要新老环境共同运作,以certificate新的环境能够解决问题。 新环境将由一组pipe理员使用,而旧环境将由非pipe理员使用。 一旦我们完成了validation,旧的环境就会完全closures。
我正在考虑在服务器前放置某种代理,以便根据需要redirect请求,并查看Apache Tomcat的Load Balancer应用程序 。 我不确定这是否是最好的方法,所以我希望这里有人能提供一些build议。
假设
应用服务器技术
看着这个问题,我不知道这是一个系统级别的问题 – 在那里的描述听起来像一个应用程序错误。 无论哪种方式升级你的环境总是很好的思考,所以我会采取一些措施:-)
一个重大的软件更改或迁移的一般行动计划通常是这样的(从你的SO问题,无论我说DB /数据库你应该考虑你的App2服务器):
在你的情况下,取决于时髦行为出现的位置,你可能会在第3步中将大部分短路短路:如果你的pipe理员是唯一一个看到应用程序的行为不当的部分,那么你的pipe理员可以击败testing副本的环境,直到他们重现错误或者确信它已经消失(并且如果这个错误popup,你又回到了应用程序域)。
如果问题是面向用户的,唯一真正的解决scheme就是将新的东西放到用户可以获得的地方,这基本上意味着要经历整个过程。
由于您要并行运行环境,因此您也面临一些不同的挑战:如果两个环境都要写入数据库,则需要采取预防措施,以确保两个环境都将相同的信息写入其数据库副本(Multiplex负载平衡器上的连接),或者两个环境都可以安全地与单个数据库进行交互。
并行运行几乎消除了上面#5中的第一个和第三个项目符号(您不需要复制后端,而“旧”环境则继续运行 – 只需在旁边支撑新的项目)。
在你使用App1上的相同应用程序的情况下,你可以使用App2作为共享数据库,但是从软件的angular度来看,这是你需要考虑的事情(如果App2看到多个主机对话,App2会吓一跳)。
不pipe你做了什么,一定要坚持你的旧环境一段时间,而不要触及它(根据你的具体情况,这可能会更长或更短) – 例如,在我的公司大约8小时后,积累了太多的数据,我们无法回滚:数据丢失将是灾难性的,恢复时间长。
一旦你确定新的环境已经解决了你的问题(或者至less和老的环境一样好,没有新的问题),你可以把旧的东西变成一个开发实验室。