我正在编写一些定量市场研究软件,在工作中遇到了一些“盲人引领盲人”的情况。
我不太习惯编写 Web 应用程序或配置服务器;我编写的大多数代码都只供我自己在我的计算机上执行。老板说,现在是时候为我的一个研究项目提供漂亮的 Web 界面了,而我需要指定架构。公司的服务器人员只习惯使用普通的 LAMP 堆栈,他们很乐意提供帮助,但依靠我的指导。(?!)
以下是我想完成的事情:
- 将一些产品和客户电子邮件放入专门的数据库中。
- 从数据库中选择一些客户电子邮件子集和一些产品。
- 选择一些产品并创建相关的调查网页。
- 向客户发送电子邮件,要求他们进行调查。
- 记录他们的调查答案。
- 分析答案。
- 在网络界面上显示答案。
分析和界面非常针对行业,并且没有第三方提供此类市场研究软件,因此需要 DIY。
以下是我建议的做法:
- 用于产品和电子邮件插入的 Web 界面托管在公司内联网上。数据库仅接受内部连接。服务器上可能使用 Python 脚本来实际执行数据插入,因为必须先进行大量错误检查和其他与产品相关的处理,而我不想在 PHP 中执行这些操作。
- 访问数据库中的电子邮件地址并创建请求参与调查的电子邮件。同样,用 Python 编写。与 Amazon SES 交互以进行批量邮件传递。我是唯一有权执行此脚本的人。在我的 PC 上执行此操作。
- 创建调查(在我的 PC 上)。通过 sFTP 将调查内容手动转储到租用的 Azure 堆栈(我将称之为 VM1)。我应该为这个堆栈使用 nginx 吗?服务器人员只有 Apache 的配置经验。在发送电子邮件的日子里,VM 必须应对每小时 10k 个连接(当然,我会慢慢开始并监控它)。
- 提供调查 html 页面,使用 php 根据他们传递的散列调查 ID 变量向正确的人提供正确的内容。使用 php 将调查响应写入存储在另一个 Azure VM(称为“VM2”)中的数据库。通过两个 VM 之间的 VPN 隧道进行访问。
- 几天后,通过另一台运行 R 的虚拟机阅读调查回复。(从 VM2 到 VM3 的 VPN 隧道)。在 R 中加载数据后,关闭 VPN 隧道以隔离 VM3。仍然在 VM3 上,使用 R 进行处理,并通过 nginx、php 和 javascript 图表模块插件通过 SSL 连接将其提供给公司中其他感兴趣的人员。
我在这个列表中提出的建议真的愚蠢吗?将数据库隔离在单独的虚拟机中会增加安全性吗?还是我只是在自欺欺人?