【Gogolook伺服器总监实战经验大分享】老旧系统上云端三大要诀
2017-07-09 07:56:44 | 来源:ithome | 投稿:小唯 | 编辑:dations

原标题:【Gogolook伺服器总监实战经验大分享】老旧系统上云端三大要诀

Gogolook伺服器总监叶秉哲表示,架构脆弱的应用程序,如果搬迁上云端,只会让其缺点更加倍放大,像是云端环境自动水平扩充的功能,让原本只出现在一台伺服器上的程式臭虫,蔓延到更多主机上。

图片来源:

iThome

从实体伺服器、虚拟机,到现在火红的容器及无伺服器技术,IT技术的演进,让软件无论在部署、调度,或是硬件资源使用都更有效率。在2014年Docker热潮刚掀起不久,Gogolook伺服器总监叶秉哲就已经尝试在公司正式环境导入Docker容器。每当他在授课或是与开发社群交流示范使用Docker快速部署,这门技术的便利性,往往都让在场人士感到相当兴奋,但是他不时听到许多人反应:“用Docker部署像是上太空,但是回到自己的工作职场时,工作手法仍然感觉像在杀猪公。”

为何相比利用Docker,传统手动部署方式会让开发者感受如此落差?叶秉哲表示,由于许多公司目前的IT架构仍依赖传统应用程序的设计方法,过多的老旧包袱,导致企业没办法导入Docker、微服务架构,甚至是无伺服器技术。

而追根究柢,叶秉哲归纳出这些传统应用程序往往存在三大弊病,即使云端技术已经发展10年有余,这些企业仍只能望洋兴叹,始终无法踏入这道门。第一项弊病是,这些应用程序自动化程度不足,依赖过多手动程序部署,虽然可以在小规模丛集上顺利运作,“但离上云端还有一大段路。”

其次,老旧应用程序过度脆弱,可能肇因过去的设计没有纳入容错度或N+1备援设计等,“导致软件架构非常脆弱,只要部分元件失灵,整个系统就会无法运作。”最后一项常见问题则是应用程序与底层架构的相依性过高,导致搬迁上云端的工作相当不易。

叶秉哲直言,如此架构的应用程序,如果搬迁上云端,只会让缺点更加倍放大,云端环境自动水平扩充的功能,让原本只出现在一台伺服器上的程式臭虫,蔓延到更多主机上。

软件要上云端先搞定自动化

软件如果想要上云端,免不了的第一优先任务,就是先让IT架构更加自动化。开发过程高度依赖手动作业的企业,常得靠开发团队有自己独特的一套解决方法,但叶秉哲表示,假设应用程序每次改版,都必须依赖工程师手动测试、部署,“容易发生低级错误。”

像是在现代软件开发中,每个开发者理应熟悉版本控制系统,但他曾与一些开发者分享敏捷开发失败经验时,叶秉哲才发觉,原来台湾某些公司的软件开发流程竟然还没有导入版本控制系统。

因此叶秉哲认为,导入自动化的第一步,就是使用版本控制系统。他解释,利用版本控制系统,才能够统一管理企业內部运作的软件,也让散落在各处的系统元件进行集中管理,“如果开发者自己留了一些系统元件在个人电脑、桌电,都是非常危险的举动。”

不只程式码要纳入版本控制系统,在现在软件开发过程中,开发者多半也会引用不同的函式库,但是Java、Ruby或Python等不同的程式语言,都有自家的套件管理系统,叶秉哲建议,这些软件应该也要一并列入版本控制系统,“套件管理系统的版本也要管理,未来追溯问题才会更容易。”

在程式码管理完成自动化后,下一个重点就是部署流程自动化。引入部署自动化时,“一定可以发现某些隐藏的系统元件,没有纳入集中管理”,叶秉哲表示,这也是企业没办法提高自动化程度的一部分原因。他认为,当程式码提交至版本控制系统后,“后续的编译、QA流程,或是部署到正式环境,都要设法自动化。”在实作上可用传统脚本程式自动部署的作法,或是使用Ansible或Jenkins这类的DevOps工具。

在自动化流程中,叶秉哲提醒,企业也要一并处理每台电脑的组态设定问题。他举例,许多开发者在导入版本控制软件GitLab时,以为只需部署到本地伺服器就能顺利运作,但是GitLab是利用Ruby△on△Rails开发的软件,必须注意Ruby版本支援度的问题。叶秉哲表示,软件部署牵扯到许多细节,“如果软件没有统一系统组态管理,贸然搬迁到云端上运作会很危险。”而当自动化流程建置完成后,企业就能让开发环境与正式环境的组态设定趋于一致,也能避免软件虽然可在开发端顺利运作,但是却在测试、正式环境中失灵的情况,“这样企业就拿到上云端的第一张门票。”他说。

强化软件结构,单一节点故障照样运作

而软件上云端的第二项重要任务,就是处理软件脆弱性问题。叶秉哲比喻,受伤流血时,人体会产生新组织取老旧组织,同理,在设计架构时,不该预设系统不会失灵,“即使其中一台伺服器停止服务,软件也要能够正常运作。”

而在软件开发的实作观念,就是纳入冗余(Redundancy)的设计理念,降低系统执行对单一伺服器的依赖程度。叶秉哲解释,也就是要做到,没有一台伺服器或软件元件是系统执行时不可或缺的项目。即使单一节点运作失灵,其余节点还可以继续正常运作,并且快速地复制出另一提供同样服务的节点,为故障基础架构争取恢复正常运作的时间。

而冗余设计的实作技巧中,系统要先具有并行(Concurrency)运算的能力。在开发软件中,叶秉哲建议,开发者可以加入多执行绪、多程序、协程(Coroutine)或非同步运算,“这样才满足冗余设的先决条件。”

加入无状态设计

强化软件结构时,无状态(Stateless)也是一个设计重点,如此系统才能更方便的增生服务。叶秉哲表示,如果软件的状态储存在记忆体或某台伺服器中,一旦该设备毁损,无法找寻相关遗留的数据。

但有些软件元件不易纳入无状态的设计,此时开发者就得从持久储存的设计着手,“减低软件与后端储存系统的相依性”,叶秉哲建议,资料存取层(Data△Access△Layer,DAL)不应该与软件绑死,而要独立抽象化为一个软件层,未来想要更换解决方案也会更简单。

像是过去Gogolook是采用Google的公有云服务,但后来选择搬迁至AWS,因为当时资料存取层的设计做到独立且抽象化,才让搬迁过程变得更顺利,“区隔软件与资料间的相依性,企业的营运弹性就会更大。”

靠监控机制掌握系统健康

此外,企业对于自家系统也要建立监控机制,掌握基础架构的健康指标,像是CPU、记忆体使用效率、效能表现、IOPS等数据,“如果软件上云端却不知道它的运作状况,这表示软件非常脆弱。”叶秉哲表示,Log资讯是企业常忽略的另一个关键,在传统软件设计中,大多开发者都选择将Log纪录储存在自己的设备上。他表示,如此设计也将导致软件脆弱化,“一旦设备损坏,开发者也无从追溯故障的原因”,慎重处理Log资讯的储存也是上云端的重要功课,他建议,可以搭配Logstash、Fluentd、Flume等系统日志收集工具,或是选用Datadog等解决方案。

解开软件与底层基础架构的耦合

上云端前置作业的最后一步,就是要降低软件与底层架构的耦合度。叶秉哲表示,如果两者相依度过高,企业就很难导入新技术或将系统搬迁至云端。而企业在导入自动化、统一管理系统组态的同时,也在盘点软件与底层基础架构的相依程度,“特别要解开储存、网络元件与底层的耦合。”

在新型软件开发的潮流中,许多开发者也会先设计API再进行实作,叶秉哲表示,现在软件运作的平台除了PC、Web,还要纳入行动端,“API架构设计完后,后续的软件开发才能分头进行。”

他表示,良好的API规画,就可以降低软件与底层的耦合性,因此也减少上云端的难度,例如想善用AWS的无伺服器服务Lambda,“应用程序有一个好的API架构是先决条件”,这样公有云服务只需要呼叫企业內部的API,就可以执行运算。

前置作业虽困难但仍然要做

在云端时代,现在除了私有云、混合云,许多厂商也开始导入跨云架构,同步使用不同的公有云服务。而企业想要享受云端的好处,也得要做好上云的前置作业,叶秉哲表示,部署自动化大约1至2个月就能完成,而反脆弱化则需要更多时间,“虽是苦功但仍然得做,否则企业会失去软件开发的竞争力。”

tags:

上一篇  下一篇

相关:

美三大股指全线收涨 [热事件]

欧美股市结束本周的最后一个交易日。美东时间周五美国公布的6月非农数据强于预期,受此影响美国三大股指高开高走全线收涨。欧央行可能会放弃购债承诺,欧洲三大股指涨跌不一。美国公布的6月非农数据好于预期,美元反

G20汉堡峰会三大看点引人关注:恐将是“艰难的” [生活]

在本届G20峰会上,各方能否在有关重大多边议题上加强合作、美国总统特朗普与俄罗斯总统普京的首次会晤如何展开以及德国如何确保峰会安保万无一失成为各方关注的三大看点。本届峰会将是“艰难的”G20汉堡峰会主题为“

IDC:2017年Q1全球云端基础建设市场规模达80亿美元,占全球IT支出近4成

图片来源: IDC 日前,IDC发布全球云端IT基础建设追踪季报,云端基础建设厂商在2017年第一季的营收相较于2016年第一季,成长了14.9%,达到80亿美元的市场规模,且占了2017年第一季39%的全球IT支出。在2017年第一季云

周三大盘站上3200点 [热事件]

收盘翻了下几个蓝筹白马股,中国平安市值超过9000亿,招商银行超过6000亿,贵州茅台接近6000亿,格力美的合起来也超过5000亿,海康威视接近3000亿,这六个股票合起来,市值就超过了三万亿,都是上半年领涨的龙头股。

乌克兰警方破获散布NotPetya的来源伺服器,竟来自会计软件公司

示意图,与新闻事件无关。 路透、BleepingComputer 及BBC等媒体报道,乌克兰警方周二破获据信是散布NotPetya勒赎软件的伺服器,该伺服器来自会计软件公司。?乌克兰警方破获的伺服器属于市占最大的会计软件M.E.Doc的

站长推荐: