考虑将应用程序从.NET移植到Erlang - 需要建议

时间:2010-11-23 23:31:06

标签: erlang application-lifecycle

我正在寻找Erlang的未来版本的分布式软实时托管的基于Web的电话应用程序(即Erlang看起来绝对是这种应用程序的完美选择)。我来自.NET背景,此应用程序的当前版本使用C#,WCF和JQuery的组合来提供服务。我现在需要Erlang允许我在我的正常运行时间中添加额外的9,并允许我为我的服务器节省更多的爆炸。

以前我在这里建立了一个开发过程,将VS.NET,GIT,TeamCity和MSI文件的自动部署结合到我们维护的各种环境中。它并不完美,但我们现在都很满意。我想知道像我们这样的过程是否适合这种完全不同的技术堆栈(LYME)?

我确信我们之前使用.NET解决的所有编程挑战都可以通过Erlang在更少的代码中得到更好的解决,所以我完全按照语言选择进行销售。通过阅读有关Erlang的Pragmatic和O'Reilly书籍,我还不了解的是,我应该如何调整我的软件工程和应用程序生命周期管理(ALM)流程以适应新平台。我看到就地代码更新可以使我(以及我的测试和操作团队)的生活变得更加容易(与尝试在Windows网络中部署MSI文件的可怕痛苦相比)但我不确定应该如何改变当我使用Erlang时。

你好吗:

  • 在Erlang中进行持续集成(常用吗?)
  • 在QA循环期间使用它(我们经常使用GIT运行并发主题分支,获得自己的mini-QA循环,因此它们都被部署到测试环境中)
  • 构建代码并将其分发到DEV,TEST,UAT,STAGING和PROD环境
  • 将代码生成阶段集成到您的构建周期中(我们目前使用MSBUILD + T4模板)
  • 集中记录一堆不同的服务器(我们目前使用的是Log4Net,MSMQ等)
  • 使用SCOM等工具发出警报
  • 确定某人/某物是否错误配置了您的生产服务器
  • 仅在足够的质量保证(仅限授权人员)后才允许生产热修复
  • 描述您的应用的效果(计算和通信)
  • 与基于Windows的活动目录服务器进行交互

我想我需要知道什么对你有用,为什么!您使用了哪些工具和框架?你尝试了什么失败了?如果你能重新开始,知道你现在知道什么,你会做些什么?

1 个答案:

答案 0 :(得分:8)

哇,多长的帖子。首先,你应该知道99.9%和更好的kool-aid在盲目时喝酒有点危险。是的,你可以获得一些惊人的稳定性数字,但你需要以促进这一点的方式编写你的程序。它不是免费的。魔术也不会发生这种情况。您的应用程序必须以其他子系统恢复的方式设计。 OTP将为您提供很多帮助 - 但仍需要时间来学习。

持续集成:轻松完成。如果你可以通过build-bot调用rebarmake,你可能已经在这里设置了。查看eunit,封面和Erlang QuickCheck(迷你版本对于初学者免费) - 所有这些都可以从钢筋运行。

质量保证周期:我这里没有任何问题。同样,如果使用rebar,您可以构建最小化erlang vm的嵌入式版本,您可以在任何地方复制并运行(它们是自包含的)。您甚至可以通过稍微更改代码路径来轻松地将修复程序热部署到此类系统,以便覆盖更新的修复程序。你的选择很多。 Git已经在这里帮助了你很多。

环境化:轻松完成。

记录集中化:查看SASL和error_logger。你可以在这里做任何你想做的事。

警报:系统可以根据您的需要进行探测(在Erlang中内省很强)。但是你可能需要编写一些代码才能将它连接到你选择的系统上。

配置错误:配置文件是Erlang术语。如果可以计算,则可以完成。

安全:限制有权访问的人。在我看来,这是一个人的问题,而不是技术问题。

概要分析:cprof,cover,eprof,fprof,instrument +一些用于执行相同操作的分布式系统。随机抽样也很容易(在Erlang中内省很强)。

Windows互动:不知道。 (偏见:上次我专业使用Windows是在1998年左右)。

一些个人观察:

你最大的问题可能最终是你试图将Erlang塞进你现有的流程中,它可能会抵制。这是一个新的环境,因此在某些地方需要新的方法,您应该期望在此过程中适应和解决限制。普遍的共识是它可以工作(它适用于几个大型网站)。

看起来你有一个完善而严格的流程。这个过程可以牺牲多少才能让位于一种新的思维方式?

你的程序员是否愿意抛出几乎所有的OO知识?如果没有,你将以社会问题而不是技术问题结束。然而,如果他们像我一样,他们会欢呼,拍手并通过使用有趣的语言以新的方式解决一个有趣的问题而获得持续的高度。

你有多少经历过Erlang经验的程序员?如果你的人数较少,那么首先要在一些较小的子系统上切牙,然后朝着更大的目标努力。获得系统的全部好处需要数月甚至数年。可以在几周内获得部分利益。