技术与基础设施
我们使用开放式标准和有弹性的基础设施来提高工作的长期可持续性。
标准
我们所有的工作都尽可能地使用开放的、非专有的数据标准和文件格式,以帮助提高我们工作的长期可持续性,并确保所有产出成果不受技术变化的影响。我们也支持通过网络API和数据下载链接使我们的数据可以被第三方重新使用。
系统架构
我们的系统架构通常以PHP为基础,也使用Python,运行在Apache上,从XML文件、MySQL数据库和Lucene索引中提取数据。
我们的网站前端是用PHP(Symfony框架)、Java、Bootstrap、XHTML和CSS构建的,并适时运用Ajax风格技术。我们在加大对于React的运用。而在图形建模、数据可视化和制图方面,我们使用JS库,如3D.js、node.js和leaflet.js。对于三维建模方面(如http://www.markmybird.org),我们使用WebGL。
对于需要分布式计算能力的大规模计算任务,我们使用谢菲尔德大学的Hadoop集群,Apache Hive,以及亚马逊AWS。
我们的移动应用在适当的时候被开发成移动网络应用(通常当应用需要下拉并显示数据时),因为这种方法具有可持续性和平台无关性,而更复杂的应用则用C或Java开发,然后进行编译以适应特定的移动操作系统。
我们通过为项目团队提供访问内容管理系统(CMS)来创建研究资源。该系统是围绕项目需求专门设计的,因此无论研究人员身在何处,都可以集中创建和管理数据,并使用不断发展的终端用户界面进行实时预览。CMS还使研究人员能够在项目的资助期结束后继续创建和管理他们的数据。我们目前使用PHP Sonata Admin进行管理构建。
基础设施
我们的服务器是运行Ubuntu的专用虚拟机(VMs),由谢菲尔德大学的计算服务中心托管和维护。我们的服务器系列包括用于内部开发和测试在线资源的开发服务器、用于长期托管可公开访问的资源的生产服务器、以及用于托管支持生产服务器上资源的数据库服务器。我们目前运行两个开发服务器、六个生产服务器和两个数据库服务器。所有数据资产,如主要的源数据集,都存储在我们的专用存储区域网络(SAN)上,它的功能是数据存储库(用于长期的数据管理)和数据服务器(为数据库和生产服务器提供数据)。我们所有的服务器都存放在专用的数据中心。
我们在Github中使用专用的源代码存储库,使开发团队能够存储、跟踪、版本控制和部署代码变更。我们使用渗透测试软件,如sqlmap(http://sqlmap.org)和OWASP ZAP(https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project)来测试代码漏洞,并遵循OWASP安全建议和最佳实践。我们有自己的服务管理系统,用于管理开发项目的概况、状态和托管等信息。在线项目管理系统Basecamp(更常见的使用是Google Team Drive)用于管理和分享项目的非技术方面(如项目文档、关键节点、任务清单)。
翻译:林正昕 刘艺 张嘉琪