技术与基础设施

我们使用开放式标准和弹性基础设计来提升长线工作的稳定性。

标准

我们的工作都尽可能地使用开放式、非专有性数据标准和文件格式,以帮助我们提升长线工作的可持续性,并确保所有产出成果不受技术变化的影响。我们也支持第三方通过Web APIs和数据下载链接来使用数据。

体系架构

我们的系统架构通常基于PHP,也使用Python,运行在Apache上,从XML文件、MySQL数据库和Lucene搜索中提取数据。

我们的网站前端构建使用PHP(Symfony框架)、Java、Bootstrap、XHTML、CSS,并适时运用Ajax风格技术。我们在加大对于React的运用。而在图形建模、数据可视化和地图绘制方面,我们使用诸如3D.js, node.js, leaflet.js这样的JS库。在3D建模方面,我们使用WebGL(如http://www.markmybird.org)。

对于需要分布式计算能力的大规模计算任务,我们使用谢菲尔德大学的Hadoop集群,Apache Hive,及Amazon AWS。

我们的移动应用通常开发成移动web应用程序(通常这种情况下应用程序需要下拉和显示数据),因为这种方法受制于可持续性和平台的不确定性,因此在开发更复杂的应用程序时,我们使用C或Java,然后进行编译以适应特定的移动操作系统。

我们通常向项目团队提供内容管理系统(CMS),来帮助他们获取研究资源,CMS会根据项目专门设计,可以集中地创建和管理数据,无需考虑研究人员的位置,并使用不断发展的终端用户界面进行实时预览。CMS还使研究人员能够在项目资助期结束后很长时间内继续创建和管理他们的数据。我们目前使用PHP Sonata来行进管理构建。

基础设施

我们的服务器是运行Ubuntu的专用虚拟机(VMs),由谢菲尔德大学的计算服务中心来托管和维护。我们的服务器家族包括用于在线资源的内部开发和测试的开发服务器、用于长期托管公共可访问资源的生产服务器、以及用于托管支持生产服务器上的资源的数据库服务器。我们目前运行两个开发服务器、六个生产服务器和两个数据库服务器。所有数据资产,如一级源数据集,都存储在我们的专用存储区域网络(SAN)上,SAN充当数据存储(用于数据的长期管理)和数据服务(将数据提供给数据库和生产服务器)。我们所有的服务器都位于专用的数据中心。

我们在Github中使用了一个专用的源代码存储库,使开发团队能够存储、跟踪、版本控制和部署代码更改。我们使用渗透测试软件,如sqlmap(http://sqlmap.org)和OWASP ZAP(https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project)来测试代码漏洞,并遵循OWASP安全建议和最佳实践。我们有自己的服务管理系统,用于管理关于配置、状态和开发项目托管的信息。运用在线项目管理系统Basecamp(或更常使用Google Team Drive)来管理和共享项目的非技术方面(如项目文档、关键节点、任务列表)。

翻译:张嘉琪