全面实时监测,数字化浪潮下的银行创新“蝶变”

2022-08-05

近几年,随着互联网及人工智能的逐渐深入,金融科技的发展,特别是移动应用的普及,金融场景的数字化强度和金融业务的数字化广度都在急速扩张,每一个从业者无不被裹挟其中。

对于银行而言,首当其冲的变化便是线下网点逐渐转向了线上。疫情之后,变化则更为明显,原本已经受到冲击的银行线下网点愈加面临挑战。

这样的变化也直接反映在了银行柜员数量的变化上。

银行柜员数量减少的背后

2019年对于银行的前端银行网点模式而言是不平凡的一年,网点数量大幅缩减。据数据统计,2019年国家六大行网点合计减少836个,同时六大行合计员工数量减少1.15万人。截止2020年7月,全国有1730家银行网点终止营业。

而柜员数量的减少也恰恰反映了各大银行离柜业务率的明显提升。

根据中国银行业数据协会显示,2020 年银行业离柜交易率接近90%,2012年这一数值仅为54.37%。

十年间,离柜交易率提升了36%,这导致全国ATM在2021年就减少4万台,银行网点在2020年就关闭了6275家,按照这样的速度,可以预见,未来银行线下网点还将继续下降。

与此同时,随着离柜业务率的明显提升,挑战也接踵而至。

银行提升用户体验之困

以博睿数据服务的某银行客户为例。

其一,大数据时代加速了银行场景化、智能化、线上化的业务探索,越来越多的银行开始意识到未来的商业银行需从数据中攫取价值,以高质量的数据和强大的数据分析能力,支撑金融业务全场景的加速创新,以获得持续的产业竞争力。

6月10日,随着《数据安全法》的落地,数据的安全性又将提升在更为重要的位置,这对于大多数银行来说都将是一个极大的挑战。

此外,当前国家对网络安全极为重视,通过开展攻防演练,确保网络安全。每当重要活动期间,银行被列为攻击目标的可能性极大,因此,对于银行而言,官网及其关键网站的安全性要求极高,一旦数据被劫持或篡改,后果难以预知。

其二,当银行网点逐渐转向线上后,新系统上线频繁,大量系统割接及网络切换等变更验证工作量巨大,要耗费大量人力。

其三,在银行数字化转型的过程中,由于安全建设不充分,运维人员较少,当线上网点逐渐增多,维护网站的稳定性及排障也成了一大难题。当问题出现后,系统故障排查与定位的人力成本消耗大,排查周期长,复杂故障引起的宕机等挑战将直接影响用户体验。

其四,在全面构建IPv6网络基础设施的趋势下,部署具有IPv6兼容性的Web服务已经进化为一种自上而下的强制性合规要求,银行自然也不例外。

但在部署IPv6的过程中,要针对 IPv6的性能和传统 IPv4做对比,包括系统建设、优化等。如果缺乏精准性能数据,那么评分也难以提升,对于运营来说,也难以判断问题出现在哪里。

综上,该银行存在的问题主要有以下四点:重保期间需要实时监测机制;传统人工系统变更验证时耗长,风险高;排障周期长,人力消耗大;IPv6改造排名亟待提升。

如何为银行业务创新提速?

基于上述问题,博睿数据发现该银行存在的主要问题是需要提升对 IT 运维系统进行实时监测和分析的能力,进而强化IT 系统的安全性、稳定性以及优化改造 IPv6 提升排名。

作为深耕金融行业多年的IT 运维领导厂商,博睿数据根据该银行的痛点制定了一套行之有效的解决方案。即:通过博睿数据的互联网监测方案对该银行进行了至上而下的全面的实时监测,大大提升运维工作效率。

第一,在日常可用性监测方面,博睿数据通过对该银行的主要互联网应用进行日常监测,主动发现问题,保障了各类用户的正常使用体验,确保了电子渠道相关业务的正常运行。

重大活动期间,为避免政策面风险,基于主动式拨测产品,通过配置待监测任务的URL地址,实现对DNS解析地址的黑白名单监测、页面元素审查及敏感内容审计,主动发现劫持现象,实时告警,让客户即时掌握劫持现象及影响范围。

第二,在该银行的平台割接验证方面,提前1天根据系统割接或网络切换内容,制定监测计划,确定需要检测的URL、范围、频率等,获取正常运行期间的监测基线,在上线过程中,判断割接对业务的影响过程及恢复情况,针对割接中的问题进行重点监测或发起即时测试,确定问题成因及影响范围,根据监测结果确定割接是否成功,是否需要回退。如果需要回退,则还需要通过监测任务结果,判断回退是否成功。

与传统割接验证监测结果对比,博睿数据Bonree net 帮助客户将验证时间降至分钟级,并且具备了数字化、精准化的精准评估,准确定位故障范围。

第三,针对重大系统故障,博睿数据提供临时应急服务,满足故障排除应急响应的各方面要求,发现问题分析问题能力降至分钟级,大大降低了运维人员工作压力。

第四,在IPv6 的改造排名提升的过程中,通过博睿数据对该银行IPv6相关网址的持续监测,帮助该银行有目的性的发现了IPv6 网站存在的问题,并依据数据依据进行优化,确保了该银行IPv6网站的稳定运行,并助力其在IPv6网站性能位居金融行业排名跃居前列。

全面实时监测助力业务价值提升

综上,通过博睿数据全面的实时监测,为该银行带来的业务价值可总结为以下四个方面:

一、规避对外业务安全风险:

在建党100周年等重大活动期间,确保了该银行官网等多个系统IPv4/IPv6的页面安全。

二、自动化变更验证提升业务连续性:

实现自动化业务变更全国范围验证,每轮验证耗时下降至分钟级,赋能运维团队5分钟故障诊断与定位能力。

三、提升故障诊断效率,降低MTTR:

故障排查与定位的平均时耗下降至分钟级,MTTR下降至分钟级,有效满足业务连续性保障要求。

四、助力提升IPv6改造行业排名:

IPv6页面可用性有效提升,经优化该银行在中国信息通信研究院IPv6网站性能排行榜上位居金融行业前列。

文章标签

智能运维 主动式拨测

相关文章

FreeMarker template error (DEBUG mode; use RETHROW in production!): The string doesn't match the expected date/time/date-time format. The string to parse was: "2024年3月5日". The expected format was: "MMM d, y". The nested reason given follows: Unparseable date: "2024年3月5日" ---- FTL stack trace ("~" means nesting-related): - Failed at: #if "2024年3月5日"?date lt item.createTi... [in template "themes/halo_quickstarter/post_newsDetail.ftl" at line 106, column 25] ---- Java stack trace (for programmers): ---- freemarker.core._TemplateModelException: [... Exception message was already printed; see it above ...] at freemarker.core.BuiltInsForMultipleTypes$dateBI$DateParser.parse(BuiltInsForMultipleTypes.java:220) at freemarker.core.BuiltInsForMultipleTypes$dateBI$DateParser.getAsDateModel(BuiltInsForMultipleTypes.java:190) at freemarker.core.BuiltInsForMultipleTypes$dateBI$DateParser.getAsDate(BuiltInsForMultipleTypes.java:197) at freemarker.core.EvalUtil.modelToDate(EvalUtil.java:86) at freemarker.core.EvalUtil.compare(EvalUtil.java:270) at freemarker.core.EvalUtil.compare(EvalUtil.java:115) at freemarker.core.ComparisonExpression.evalToBoolean(ComparisonExpression.java:78) at freemarker.core.IfBlock.accept(IfBlock.java:49) at freemarker.core.Environment.visit(Environment.java:370) at freemarker.core.IteratorBlock$IterationContext.executedNestedContentForCollOrSeqListing(IteratorBlock.java:321) at freemarker.core.IteratorBlock$IterationContext.executeNestedContent(IteratorBlock.java:271) at freemarker.core.IteratorBlock$IterationContext.accept(IteratorBlock.java:244) at freemarker.core.Environment.visitIteratorBlock(Environment.java:644) at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:108) at freemarker.core.IteratorBlock.accept(IteratorBlock.java:94) at freemarker.core.Environment.visit(Environment.java:334) at freemarker.core.Environment.visit(Environment.java:340) at freemarker.core.Environment.visit(Environment.java:340) at freemarker.core.Environment.process(Environment.java:313) at freemarker.template.Template.process(Template.java:383) at org.springframework.web.servlet.view.freemarker.FreeMarkerView.processTemplate(FreeMarkerView.java:391) at org.springframework.web.servlet.view.freemarker.FreeMarkerView.doRender(FreeMarkerView.java:304) at org.springframework.web.servlet.view.freemarker.FreeMarkerView.renderMergedTemplateModel(FreeMarkerView.java:255) at org.springframework.web.servlet.view.AbstractTemplateView.renderMergedOutputModel(AbstractTemplateView.java:179) at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:316) at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1401) at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1145) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1084) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) at javax.servlet.http.HttpServlet.service(HttpServlet.java:497) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) at javax.servlet.http.HttpServlet.service(HttpServlet.java:584) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1631) at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:230) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at run.halo.app.cas.UserInfoFilter.doFilter(UserInfoFilter.java:37) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.jasig.cas.client.util.AssertionThreadLocalFilter.doFilter(AssertionThreadLocalFilter.java:54) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.jasig.cas.client.util.HttpServletRequestWrapperFilter.doFilter(HttpServletRequestWrapperFilter.java:75) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at run.halo.app.cas.MyAbstractTicketValidationFilter.doFilter(MyAbstractTicketValidationFilter.java:215) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at run.halo.app.cas.MyAuthenticationNoLoginFilter.doFilter(MyAuthenticationNoLoginFilter.java:57) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:102) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:102) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at run.halo.app.security.filter.ContentFilter.doAuthenticate(ContentFilter.java:69) at run.halo.app.security.filter.AbstractAuthenticationFilter.doFilterInternal(AbstractAuthenticationFilter.java:229) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at run.halo.app.filter.CorsFilter.doFilter(CorsFilter.java:53) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at run.halo.app.filter.LogFilter.doFilterInternal(LogFilter.java:40) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) at org.eclipse.jetty.server.Server.handle(Server.java:516) at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487) at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) at java.base/java.lang.Thread.run(Thread.java:834) Caused by: freemarker.core.UnparsableValueException: Unparseable date: "2024年3月5日" at freemarker.core.JavaTemplateDateFormat.parse(JavaTemplateDateFormat.java:51) at freemarker.core.JavaTemplateDateFormat.parse(JavaTemplateDateFormat.java:33) at freemarker.core.BuiltInsForMultipleTypes$dateBI$DateParser.parse(BuiltInsForMultipleTypes.java:213) ... 118 more Caused by: java.text.ParseException: Unparseable date: "2024年3月5日" at java.base/java.text.DateFormat.parse(DateFormat.java:395) at freemarker.core.JavaTemplateDateFormat.parse(JavaTemplateDateFormat.java:49) ... 120 more