一晃小20年过去了,作为国内IT化转型鼻祖-第一代BSS(业务支撑系统)建设的参与者之一,和民族软件的追随者之一,想想最近几年热火朝天的SDN(Software Define Network),SDDC(Software Define Dater Center),SDXXX等一系列和软件定义相关的工程推广及交付,越发感觉软件的重要性,软件在当下的战略意义空前非凡,借着新基建之首5G及5G麾下的边缘技术(MEC)的热度,浅谈一下软件之可编程的一些小技巧,先上一张图:
5G
【引用自网络新基建八仙美图】
5G能成为新基建之首,除了传统赋予的含义外,里头包含产业模型升级和新技术的颠覆,而颠覆之一是靠软件支撑的:5G核心网的IT化、服务化源自行业软件的积累、抽象和封装,云网协同、云网融合、云网一体的演变也一样。而边缘云又是网络能力从传统国家级、省级建设方式下沉到普通地市级、乡镇或更小的颗粒度,这一部分在1月份来湖北疫情从刚开始的武汉眼球快速延伸到黄岗及其他小城市,就凸现出来下沉的重要性。再上第二张图:
5G-MEC
【摘自中电信2020年边缘云规划】
做为全球领先的运营商之一,中电信的每次转型都吸引了大量的眼球,而每次转型都有震撼的收获与产出,从这张图的分析可看出,边缘技术(或边缘云)贯穿着软件管理平台、边缘软件业务平台、边缘能力平台建设及调度等,而可编程能力又是其中一个不可缺的部分。再上第三张和第四张图,是否似曾相识呢?
IT-IQ
5G-MEC-2001
【以上两张是2000/2001/2002年 第一代BSS建设中关于资源管理,类似目前边缘端小型资源中心建设模式】
回到为支撑这类业务转型而支撑的技术之一,软件可编程控制:可编,可控,灵活,先看看一段软件代码:
EXCEPTION
WHEN OTHERS
THEN
ROLLBACK;
v_rtncode := 2;
v_sqlmsg := SUBSTR(SQLERRM, 1, 100);
SP_WRITE_LOG (v_spname, v_spdesc, USER, 'ERROR',v_trace || '-'||'SP_EWT_CASE_REASSIGN Error'|| '..' || v_sqlmsg);
SP_EMAIL_SMS_NOTICE (v_spname, v_spdesc);
RETURN;
这段代码看似简单,其实背后是多级Function和Procedure的封装呈现,设计上非常简洁高效,任何异常定位时可直接通过断点日志锁住故障点。因此,可编程控制之一的控制,就得以体现。
IF FN_BATCH_PROCESS_CHK(strRunDate, strSpName,‘NULL’,‘W’)=TRUE THEN
SP_WRITE_LOG(strSpName,strSpDesc,USER,'END','Process complete.');
ELSE
SP_WRITE_LOG(strSpName,strSpDesc,USER,'END','Process complete but update BATCH_PROCESS fail');
END IF;
而封装能力的设计,就可以将不同层次的能力及分工变成软件代码集的一个子集或分册(如下图),无论日常运维或线上管理时都可以针对性地处理对应的代码块或逻辑链,避免每次变更面对大批量、繁杂的整片代码或不知所措的逻辑交叉。
– Export file for user CIPT –
– Created by xuelin on 2007-11-27, 14:47:49 –
spool load_all_ewt_procedure.log
prompt
prompt Creating type ACCOUNT_ATTRIBUTE_TYPE
prompt ====================================
prompt
@@account_attribute_type.tps
prompt
prompt Creating function FN_GET_RPT_NAME
prompt ============================================
prompt
@@fn_get_rpt_name.fnc
prompt
prompt Creating function FN_EWT_CHECK_ASSIGN_STATUS
prompt ============================================
prompt
@@fn_ewt_check_assign_status.fnc
prompt
prompt Creating procedure SP_EWT_ASSIGN_PROCESS
prompt ========================================
prompt
@@sp_ewt_assign_process.prc
prompt
再回归到网络设备的可编程能力部分,请看下面的代码案例分享与分析:
# Visit with IP
if { ! [catch {IP::addr $req_host mask 255.255.255.255}] } {
set host_ip 1
if { $static::DEBUG_LOG } {log local3.info "<==LOG2.2.1==>Got IP address from request $req_host"}
} else {
set req_ip_address [session lookup uie $req_host]
set req_with_ip [expr { $req_ip_address ne "" }]
}
# UCBrowser
if { [HTTP::header User-Agent] contains "UCBrowser" } {
set uc_browser 1
}
# Go to wap gateway
if { ! [class match $req_host contains "wapgw_proxy"] | ($host_ip) | ($uc_browser) } {
set go_wapgw 1
}
上述代码是针对不同场景设定标签,并根据标签条件进行流量细颗粒的调度和管控,因此判断逻辑里可以迭代。
最后,附上我过去经常给客户和团队培训时的一些现网案例参考摘录:
软件架构
逻辑封装设计和代码链的衔接,异常管理等,都是软件架构及可编程控制的要素之一。
5G核心网
上图#5为核心网的应用案例,也是一样的道理,用可编程灵活性来撬动业务价值的呈现。
最后总结:软件是人写出来的,但优秀的人才构造的软件一定别样的,记住一点:有灵魂的代码才是高效的,不要被普通码农思维限制住您的才华。
2020年4月21日晚发表于上海 《520线上直播预演 - 安全周》
f5中国20周年庆大型系列活动入口(恭候您的光临):
http://www.f5chinanetworks.com/f52020meeting/wechat/datacenter/m/index.asp?trackingcode=F5shequ
https://mp.weixin.qq.com/s/-b_krh-FPWxfJF0Ez7wfSA
520不见不散!