金蝶云星空环境管理金蝶中国交付支持中心2•环境管理定义•现状分析•多环境管理•协同开发环境•补丁更新规范•公有云环境管理•性能优化•安全管理提纲3环境管理定义什么是环境管理?•这里“环境”是指“开发环境+测试环境+生产环境”,为了保障系统的生产环境高效、持续稳定的运行,则需要一整套环境管理机制及措施来保证,其中开发环境和测试环境的质量决定生产环境的质量⚫环境部署规划⚫环境准备⚫DEMO环境搭建⚫开发环境搭建⚫测试环境搭建构建阶段⚫开发规范管理(协同平台)⚫补丁发布计划⚫补丁更新规范管理⚫测试服务器性能跟踪测试阶段上线阶段⚫UAT测试计划⚫补丁更新规范管理⚫UAT环境搭建⚫生产环境搭建⚫补丁更新规范管理⚫补丁更新记录蓝图阶段验收阶段环境管理到底要做哪些工作呢?项目中是否需要专门设一个“环境管理”这个角色?什么样的人员才能胜任环境管理这份工作呢?•必须具有较强的技术功底,熟悉星空产品,能懂星空开发的人员为佳•对项目中选用的数据库非常熟悉,了解系统数据库运行的各项指标,能应对数据库异常的各种问题排查,包括性能问题•能了解星空产品架构,能懂星空补丁更新原理,能制定部署过程的各项规范•需要,是否专职取决于项目大小和交付周期,对于交付周期短、时间紧的项目,需要专职,否则兼职则行,但需专人⚫补丁更新规范管理⚫补丁更新记录⚫运维交接的资料整理4现状分析目前环境管理突出问题分析缺乏专业人员环境管理混乱补丁更新不规范不使用协同开发平台无备份和备灾补丁元数据冲突直接使用BOSIDE开发补丁更新不通知系统使用人员问题多、很难查原因无补丁更新计划随意在生产环境更新补丁环境出问题时束手无策元数据覆盖元数据和代码无版本管理不敢打补丁问题反反复复出现直接连生产环境修改不通过测试直接更新生产环境出问题时不知道找谁5多环境整体介绍多环境的要求✓星空产品交付,如果有客户化开发,基本要求至少要有四个环境,分别为开发环境、集成测试环境、UAT环境、生产环境✓为了保证开发及部署规范管理,星空开发统一使用协同开发平台,统一管理元数据和代码✓这四个环境的要求是:①开发环境的成果必须是在开发环境经过自测以后才构建发布到集成测试环境②集成测试环境必须与开发环境分开,元数据及插件的更新必须以安装包的形式,不能直接在对应的环境修改元数据和更新插件③UAT环境需要与集成测试环境分开,可以为一个服务器的2个账套,但UAT环境需要用客户的真实数据,数据需定期与生产环境保持一致,防止有些BUG因为数据的原因在测试时未测出来造成对生产环境的影响开发环境生产环境集成测试环境开发环境(DEV环境)⚫该环境下软件开发人员进行编码、系统调试及单元测试;⚫开发环境统一使用协同开发平台,协同平台会在本机创建开发环境,本机作为应用服务器,数据库服务器可以为本机,也可以为非本机集成测试环境(SIT环境)⚫该环境下交付顾问(测试人员)组织开展全业务场景的正向和逆向业务用例测试;⚫集成测试的目的是校验系统功能、性能和可靠性等要求;生产环境(PRO环境)•该环境为日常生产环境,环境的更新有严格的管控要求•UAT通过补丁包部署到生产环境,必须是同一补丁包•系统是稳定和干净的•生产环境的补丁更新周期远小于测试环境,生产环境在补丁更新前必须在测试环境通过严格的测试,UAT环境需与生产环境保持一致。UAT环境UAT环境(用户验收测试环境)⚫该环境用作客户测试,通过客户测试后会生成UAT测试报告;⚫上线前UAT环境可以为生产环境的一个账套,但上线后UAT环境不能放在生产环境,必须与生产环境分开6多环境管理✓针对多期不断迭代开发时,开发环境和基础测试环境都需要至少两套来解决一期到二期过度期间BUG修复及紧急补丁更新.✓一期Bug阶段同时也是二期开发阶段,需要将将二期开发与一期BUG修改开发环境分开,需在协同中另建一个应用管理✓二期部分开发完成需要测试时,需要将二期测试环境与一期BUG测试环境分开✓各环境通过补丁更新的方式进行环境更新,不允许直接通过BOSIDE直接连接进行修改,能更新到生产环境的标准是:需要在测试环境中完全通过测试验证华海IT平台应用一期BUG修复应用生产环境二期测试环境一期测试环境开发环境集成测试环境协同平台生产环境阶段一期一期bug二期华海IT平台应用UAT环境UAT环境7多环境部署集成测试环境开发环境生产环境UAT环境开发完成生成补丁包部署到集成测试环境◼开发环境、集成测试环境、UAT环境、生产环境须严格分离;◼开发环境、集成测试环境、UAT环境、生产环境的版本及补丁须保持一致;◼只有通过UAT测试后客户化开发补丁包才能正式部署到生产环境;集成测试通过补丁包部署到UAT环境UAT通过补丁包部署到生产环境8协同开发环境✓对于多人的团队协作开发必须使用协同平台进行统一管理,不仅能规范管理、能多人协作、而且通过平台操作非常方便,平台集成了开发工具,还能在线构建、在线编译,在线快速构建二开补丁包,保证部署的质量✓通过协同开发时,可以连本地数据库,同步元数据的方式将服务器的元数据与本地保持一致。原理说明:•实现多人异地不同环境协同开发的原理:1.所有人都在同一个应用中2.元数据和代码通过“签入”实时签入协同平台的SVN服务器中3.即使环境不同,账套不同,只要在同一个应用中都可以通过SVN仓库拉取到应用的数据4.“签出”时在SVN服务器做标记,该文件被锁住,其他人需要编辑该元数据文件时需要这个人签入后才可以使用,另外一个在使用时需要先同步,然后再“签出”,防止多人编辑时冲突问题协同平台应用本地工作区SVN服务器来自服务器A的BOSIDE来自服务器B的BOSIDE本地工作区…….…….9协同开发模式VS传统开发模式传统开发模式协同开发模式独立开发,手工合并全部开发内容,并且需要开发环境在同一个服务器和数据中心多人异地协同开发,随时随地获取最新开发内容同一个云之家账号即使是在不同的服务器、数据中心,仍可从协同服务上获取到该账号的全部应用内容无调试环境一键搭建开发环境以供插件调试无SVN管理功能,易出现平行扩展导致冲突协同平台提供SVN服务严格的源码、元数据统一版本管控先目后纲:零散开发,再合并制作部署包应用整体管理:一键构建生成部署包无源代码分析功能源代码分析,检查代码、脚本的风险,保障正式环境安全性无打通云ERP通道,快速实现二开包上线无项目零成本提炼成产品无行业产品直接发布到金蝶云开放平台10协同开发规范•扩展字段标识、字段名、实体名,前面必须须加“开发商代码”,每个项目都有统一开发商代码.•插件命名标准:{开发商标识}.{项目}.{工程归类,细分模块,可以使用四级命名空间,如:{开发商标识}.{项目}.{工程归类}.{模块名}•多选基础资料,注意对应的表名不能重复,否则会报错•继承标准单据在增加多个单据体分录主键注意不要重复,默认为:FDetailID,必须不能重复,否则会报错命名规范•在扩展单据之前,必须先获取最新版本,基于最后一层扩展,签出后修改,修改完及时签入并注明修改内容•平行扩展的情况,不得随意更改数据库,因数据库修改不全会操作数据丢失,采用调整上下级加载顺序,打包的时候将sql脚本打进去•禁止直接删除本地协同工作区里的文件,删除文件请在协同选中业务对象右键删除或者移除•在已经存在的单据中再扩展修改字段长度时,需先在协同平台先修改长度,然后需形成修改长度的数据库脚本,并放入协同平台的“安装脚本”菜单下的“SQL里脚本”,(因为对已经存在的数据库字段,在BOS里修改长度时数据库结构中的长度不会自动更新)•禁止在生产环境上直接修改,禁止在非开发环境修改之后,反向部署到开发环境,必须在开发环境修改,再通过部署包部署•二次开发修改元数据时连账套时需直接连开发账套,不要直接连测试账套和生产账套•开发完成的内容通过自己单元测试后及时签入,签入前保证质量,对于开发代码需要保证能编译通过•开发环境,禁止打私包,要扩展或者新增业务对象等请直接在协同上面操作协同操作规范✓项目组的成员(开发+实施)增加和修改元数据都需要在协同平台修改✓使用协同开发平台人员必须遵循下面(命名规范+协同操作规范)的要求✓开发人员开发过程中必须遵循技术装备包中的《星空客户化开发规范》、《开发最佳实践》进行开发,技术装备包下载地址:https://pan.yunzhijia.com/s/MTIyMTUzMSw2MDk2#/share/0,所在目录为:02开发过程管理/04构建目录下.11补丁更新规范-补丁部署要求开发环境集成测试环境UAT环境生产环境✓补丁部署环境包括4个环境:开发环境、集成测试环境、UAT环境、生产环境✓对于补丁来源包括:研发标准补丁、星空补丁、第三方星空补丁、第三方非星空补丁✓补丁更新时需要遵循补丁更新先后顺序原则:标准补丁→二开补丁->第三方标准补丁->第三方二开补丁✓对于上线后的补丁更新,需要每次补丁更新时说明补丁更新内容(包括研发补丁更新),影响范围,遵循严格的补丁更新流程✓4个环境补丁更新顺序依次为:开发环境->集成测试环境->UAT环境->生产环境,如下图顺序,对于生产环境的补丁更新,要求更加严格,必须为在UAT环境测试通过后,将同一部署包更新到生产环境12环境管理要求✓由于环境比较多,需要项目经理指定专门的环境管理人员,对补丁更新进行控制,必须有金蝶方和客户方的环境管理人员。✓各环境管理人员必须对对应的环境负责,专门的环境管理人员需要制定补丁更新策略和更新规范,补丁更新参照补丁更新规范进行补丁更新✓项目经理需要对环境的最终质量和环境稳定负责✓项目经理需要指定金蝶方管理员及确定客户方管理员,并填写以下表格,并通知项目组,在补丁更新过程中有环境问题的和补丁更新问题的可以找到对应的人去查原因.环境类型金蝶管理员客户管理员开发环境集成测试环境UAT环境生产环境13补丁更新规范✓星空的二次开发需统一在协同开发平台,使用在线构建的方式统一生成二开补丁,补丁发布到集成测试环境前需要统一发布开发环境,需开发人员进行初步验证,保证补丁的质量,开发的代码需保证代码没问题,编译能通过才能签入到协同平台,保证协同在线构建成功✓上线前开发环境及集成测试环境的补丁更新,可以进行每天更新,也可以根据现场情况,每天适当增加补丁更新频率,但更新频率一般不要超过3次,生产环境补丁更新上线后一般控制在一周更新一次,如果因为特殊情况需要增加补丁更新的,需走补丁更新申请流程✓生产环境补丁更新前需提前通知客户,并注明补丁更新内容,更新完成后需要进生产环境检验是否能正常运行,做初步检查,检查没问题后通知客户补丁更新完成环境类型更新周期构建时间更新时间验证确认开发环境每天6:00-7:00PM7:00-8:30PM无测试环境每天无7:00-8:30PM晚上8:30之后生产环境每周(允许追加)无7:00-8:30PM更新前必须在测试环境回归验证通过14补丁更新步骤1.首先需要收集补丁更新包,星空二开包需要从协同平台在线构建中直接构建,然后下载补丁包,并确定好补丁更新顺序,补丁更新顺序参照前面补丁部署要求.2.生产环境确认更新补丁时,提前一天知会实施小组,安排顾问做回归测试,系统管理员在更新补丁当天18点前收集回归测试结果,向项目经理汇报;3.生产环境更新补丁前10分钟通过云之家、微信、系统广播等提醒用户服务器更新补丁时间,预计什么时间完成;4.更新补丁前备份补丁包、备份数据库;5.服务器补丁日志存档,如有报错发给开发小组核查并及时修复;6.更新服务器补丁记录,通知用户恢复使用,同时提供补丁更新内容清单,通知顾问验证问题修复情况。15临时补丁要求临时补丁申请流程1.顾问整理补丁更新需求,列出需打包的原因、影响范围并提供具体的补丁,上报系统管理员;2.系统管理员汇总打包需求上报项目经理;3.项目管理组接到反馈后,评价补丁风险,安排回归测试;4.项目管理组根据回归测试情况确认什么时间更新补丁包。临时补丁申请条件1.中断性错误或阻塞,导致部分业务无法开展;2.有重大缺陷,比如影响整体性能,导致用户访问慢等;3.全局性影响,不仅影响单独某个业务,还影响关联业务。-16数据回迁规范为了保证开发质量,快速定位问题,需要定期回迁生产环境数据中心到测试环境、开发环境。在数据迁移过程中,要保证数据的安全、完整,严格执行数据保密协议,数据仅做项目开发、测试使用,不得以任何方式传播项目资料。1.管理员定期对生产环境、测试环境数据中心进行备份;2.在生产数据中心回迁过程中,如果确认覆盖测试环境,请提前做好测试环境数据中心备份;3.开发环境管理员密码项目开发负责人统一管理,测试环境管理员密码由金蝶方管理员统一管理;4.及时更新测试环境回迁数据中心补丁更新记录。17环境部署注意事项1.管理员定期对生产环境、测试环境数据中心进行备份;2.在生产数据中心回迁过程中,如果确认覆盖测试环境,请提前做好测试环境数据中心备份;3.开发环境管理员密码项目开发负责人统一管理,测试环境管理员密码由金蝶方管理员统一管理;4.及时更新测试环境回迁数据中心补丁更新记录。18公有云环境管理与私有云环境管理区别类别私有云环境公有云环境生产环境运维验收前:环境管理人员验收后:客户的系统管理员总部公有云营运团队生产环境部署下载安装补丁后,环境管理人员在生产环境部署1.通过协同开发平台,关联租户,直接点“上线申请”进行补丁更新2.可以在协同平台,也可以通过www.ik3cloud.com申请补丁更新.生产环境开通1.准备硬件服务器→部署服务器→装好软件(包括产品及数据库)2.产品订货→下载许可-→引入许可→生产环境开通1.产品订货→申请开通云环境2.运维人员发送验证邮件→激活与绑定→云服务环境开通共同点:1.都必须都有4个环境:开发环境、集成测试环境、UAT环境、生产环境2.在开发环境、集成测试环境、UAT环境的规范管理及部署方式一样3.在协同平台上进行开发的方式完全一样.19公有云生产环境二开部署1.关联申请:✓申请应用与公有云租户关联(见右图1)✓企业IT管理员在www.ik3cloud.com上审核关联申请2.二开包部署(1)提交部署包的上线申请信息两种方式:a.协同直接提交(见右图2)b.通过www.ik3cloud.com,通过提单申请(2)总部公有云运维人员审核上线申请(3)等待平台自动部署补丁包关联申请(图1)上线申请(图2)20性能优化-星空系统优化方法优化原则:排查->诊断->优化,复杂的问题进行拆解,各个击破•去掉插件后,看加载时间变化,判定插件对性能的影响•星空的自身性能跟踪工具,看平台中加载的各主要方法的耗用时间,客户端使用“http数据”,HTML5使用“ctrl+alt+F9”.•HTML5流氏布局部分页签加载,逐步排查是什么页签的数据加载引起性能问题性能排查方法单据类操作、服务类•判定是元数据引起性能还是插件引起的•如果是元数据引起的可以判定是什么页签引起的性能问题,并确定影响性能的页签加载的原因,找出是由于字段太多还是超长的大文本字段引起,还是SQL引起的•如果是插件引起的,需要查出插件影响性能的原因性能诊断方法•单据设计时字段要合理,不要有冗余字段,每个字段长度需要设置合理•单据页签不能冗余,页签过多时HTML5采取流式布局,加载时部分加载•需要批量处理的需要进行批量处理,不能循环到服务端执行性能优化方法•星空的自身性能跟踪工具,看平台中加载的各主要方法的耗用时间,客户端使用“http数据”,HTML5使用“ctrl+alt+F9”.性能排查方法•是否由于向服务端请求太多•是否有死循环、死锁•是否未执行批量操作方法•是否有循环刷新整个单据的控件方法性能诊断方法•需要批量处理的需要进行批量处理,不能循环到服务端执行•不要在插件中循环去执行更新页面,只能局部更新字段•SQL中避免死锁、死循环性能优化方法性能优化21性能优化-系统整体卡顿怎么办?1.检查EM表现,如数据库服务器是否存在阻塞,长时间SQL✓如果存在阻塞则需要解决阻塞,分析SQL2.数据库服务器CPU使用率是否长时间超过80%如果存在则可能有以下原因✓硬件资源可能不足,如果硬件资源不足,则需增加硬件资源配置✓业务操作时,数据查询范围有可能不精确,需分析其SQL语句3.应用服务器的CPU使用率是否长时间超过80%✓环境是否变化:如是否增加二开功能,升级补丁✓分析二开代码✓业务系统变化:在线用户数增加,业务量变大,成本计算,月结处理等对于业务量大及在线用户数多的情况,如果影响性能建议增加多台应用服务器做集群4.或者应用服务器的内存使用率是否接近物理内存的80%,或者超过80GB?✓处理方式同上(应用服务器CPU)5.使用本机的http://localhost/k3cloud是否有一样卡顿✓不卡:检查客户端网络✓卡:检查数据库和应用服务器间网络,maxuserport是否有设置,网卡参数设置6.使用万维网的客户端和使用局域网的客户端是否一样卡顿?✓不卡:具体端的网络问题22性能优化-系统闪退怎么办?1.查看星空日志(1)路径✓管理中心站点:Kingdee\K3Cloud\ManageSite\App_Data\Log✓业务站点:kingdee\WebSite\App_Data\Log✓数据库日志:Kingdee\K3Cloud\ManageSite\App_Data\DataBase\Log(2)关键字:Exception✓从日志文档里排查Exception所抛出的日志内容,分析是否有引起闪退的执行的方法及SQL语句2.操作系统日志✓类别:应用程序/系统✓级别:警告/错误✓来源:(1)WAS异常:为应用程序池“K3Cloud”提供服务的进程在与WindowsProcessActivationService通信时出现严重错误(2)IIS-IISReset主动重启:从用户NTAUTHORITY\SYSTEM收到IIS停止命令。记录的数据为状态代码。(3)ApplicationError(4)ASP.NET4.0.30319.0(5).NETRuntime23日志查看—ApplicationError“w3wp.exe”应用程序执行报错日志信息:错误应用程序名称:w3wp.exe,版本:7.5.7601.17514,时间戳:0x4ce7afa2错误模块名称:KERNELBASE.dll,版本:6.1.7601.17514,时间戳:0x4ce7c78c异常代码:0xe0434352错误偏移量:0x000000000000a49d错误进程ID:0xd18错误应用程序启动时间:0x01d125ab7126552c错误应用程序路径:c:\windows\system32\inetsrv\w3wp.exe错误模块路径:C:\Windows\system32\KERNELBASE.dll报告ID:0d6f5a7d-91a9-11e5-83e8-42f2e965e2624日志查看—WindowsErrorReporting错误存储段,类型0事件名称:APPCRASH响应:不可用CabID:0问题签名:P1:w3wp.exeP2:7.5.7601.17514P3:4ce7afa2P4:KERNELBASE.dllP5:6.1.7601.17514P6:4ce7c78cP7:e0434352P8:000000000000a49dP9:P10:…可在此处获取这些文件:C:\ProgramData\Microsoft\Windows\WER\ReportQueue\AppCrash_w3wp.exe_9de88496dbc53314e0670dd2989efeba4faf1_cab_14f4b91225日志查看—ASP.NET4.0.30319.0来源于“ASP.NET4.0.30319.0”错误信息:Anunhandledexceptionoccurredandtheprocesswasterminated.ApplicationID:/LM/W3SVC/1/ROOT/K3CloudProcessID:3352Exception:System.AggregateExceptionMessage:ATask'sexception(s)werenotobservedeitherbyWaitingontheTaskoraccessingitsExceptionproperty.Asaresult,theunobservedexceptionwasrethrownbythefinalizerthread.StackTrace:atSystem.Threading.Tasks.TaskExceptionHolder.Finalize()InnerException:System.NullReferenceExceptionMessage:Objectreferencenotsettoaninstanceofanobject.StackTrace:atKingdee.BOS.Core.DynamicForm.PlugIn.ControlModel.Control.SetEnabled(StringpolicyKey,Booleanvalue)atKingdee.K3.SCM.IOS.Business.PlugIn.IOSCreateSettleTran.SetButtonEnable(BooleanisCanUse)atKingdee.K3.SCM.IOS.Business.PlugIn.IOSCreateSettleTran.FinishProgress()atKingdee.K3.SCM.IOS.Business.PlugIn.IOSCreateSettleTran.b__16(AsynResultresult)atSystem.Threading.Tasks.Task.Execute()26星空安装环境注意事项1.私有云环境数据库强烈建议不要放到虚拟机里面•虚拟机环境可能没有最优化•没有机构高可用和做灾备•性能比直接部署物理机差•逻辑错误,无法发现,导致备份文件故障以及当前数据文件故障后,无法还原数据库,只能补录数据2.当生产环境数据为Oracle时,其操作系统建议使用Linux操作系统,使用windows系统问题多•Linux系统安全好、性能好、稳定好•比起其他操作系统,如:AIX、HP、WINDOWS等,ORACLE对LINUX系统的的支持力度最大,补丁最完全3.Oracle数据版本选择建议:•11.2.0.4或12.1.0.2(暂不推荐12.2,18C,19C及后续版本)•金蝶云星空产品当前使用的ODP.NET驱动,也就是连接应用系统和数据库的接口程序,只在11204,12102版本认证过,高于此范围的,遇上故障的机会会增多•12.2.0.1,是12.2版本的初始发行版,对比18C(12.2.0.2),还是19C(12203),不论是BUG,还是性能,问题都是最多的,这个版本一般只用于学习、测试,不用于生产.27安全管理-备份管理公有云备份策略:1、备份对象:正式数据中心2、备份频率:每天一次3、备份时间:凌晨00:00—03:004、备份类型:完整备份5、备份格式:.bak6、存储位置:本地和异地同时存储7、保存时间:本地保存当天的备份文件,异地保存最近30天的备份文件私有云备份策略(可参照公有云备份策略)28星空部署中的安全性部署的一般安全性考虑1.不要在服务器上做桌面工作2.服务器的操作系统需要定时安装系统安全补丁3.如果服务器不需要对外系统集成,可以不用上网4.服务器端口不能直接暴露在公网,要有DMZ和反向代理5.服务器密码定时更改Thanksterimakasih感謝谢谢ありがとうขอบคุณ