至暗时刻的一丝曙光:关于对接银行项目的一些感悟

2023-11-03 06:50

本文主要是介绍至暗时刻的一丝曙光:关于对接银行项目的一些感悟,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 更新
  • 前言
  • 前期准备
    • 文档方面
    • 环境方面
      • 准备各式各样的离线资源包
      • 线上环境
      • 开发环境
  • 中期实施
    • 部署
    • 驻场开发
    • 系统对接
  • 后期
    • 孤独的开发工程师

更新

2020-08-24更新“后期”小节

前言

首先,这不算是一个技术类的分享,它是我职业生涯以来面临的少数除技术外较为棘手的业务场景,事实上整个项目的实施过程确实充满了曲折,一度让我有些抓狂甚至偶尔产生想要放弃的想法(值得庆幸的是也学到不少东西),故而记录一些开发过程的感悟。

前段时间,公司接到了一个银行的对接项目,一番沟通过后,由我来负责跟进这个项目。

以上是大的背景~

前期准备

嘛~在做之前首先需要了解一些银行的开发背景和需求,大致如下:

  1. 银行内部使用封闭式的开发模式
  2. 需要私有化部署
  3. 需要驻场
  4. 需要对接行内的各种系统
  5. 行内6点左右就下班了

做足了功课,那么继续往下推进~~

文档方面

跟行内的架构师讨论项目的部署方案,直观的感受就是,银行可真有钱…一套B类系统(就是非主要系统)。对方要求在两个城市分别构建数据中心,每个数据中心又分为云上云下两套服务集群。项目采用k8s进行部署,撇开配置不谈,一套服务需要的容器大概是15个,每个服务都要配置高可用。最低估算,按照要求光容器就要120个(原谅我没见过世面…)

以上属于口胡…

银行项目对文档要求十分严格,技术方案的文档是由我们这边提供,前前后后改了大半个月,大概改10来版(对,你没看错,这还只是我负责的一份文档),包括但不限于需求概述、现有系统架构和环境、总体架构(物理架构/应用架构/数据架构)、开发技术、网络硬件负载均衡设计、存储与备份设计、高可用设计、运维监控、安全架构

仿佛回到了2年前疯狂改论文的那段时光~~

编写文档的过程中,真心要吐血,但是也确实学到很多东西,由于很多东西不了解,编写过程中,要及时向这这方面的同事和行内老师及时请教。写完一版要先公司内部过一遍,在交出去。万一某项细节方面公司内部出现分歧就尴尬了。另外类似这种文档,一般要通过正式邮件发送,包括其他一些比较正式的文件都需要走邮件,这样比较符合规范,能够避免一些不必要的麻烦。

环境方面

刚才已经提到过,银行属于封闭式的开发模式,简单来说就是没有外网。最开始了解到这个消息,我心里就是咯噔一下,大呼不妙~
这里还有个前提,如果对方要求你连自己的电脑都不能带的话,那还是赶紧跑路……对于面向Google开发的程序员来说简直是毁灭性的打击。

准备各式各样的离线资源包

在去银行进行部署、开发之前,先把对方行内的系统大致了解清楚后,就可以开始着手准备各式各样的离线资源包了。这里要区分线上环境开发环境,就拿我这个对接的项目来说,主要是准备python相关的资源和一些前端资源。

线上环境

由于是k8s部署,我们只要准备好镜像包就OK了,包括前端镜像和后端镜像(吐槽一下银行导入资源必须得找专人,几百k/s的资源导入速度也很感人…)

开发环境

就是对方分配给你的开发机,需要搭建本地开发环境,这个要的东西就多了。如果能够自己带电脑的话,当然可以在自己电脑上进行开发。

但是这个开发机不能不管,甚至后面没有他会让你痛不欲生(别问我为什么知道的),因为之后与银行内部系统的对接调试,必须要通过这台机子来完成。

银行给到的机器的开发环境搭建是高优先级!!!

我们要准备的大概有python本体,一个合适的IDE用的顺手的开发工具(大多数情况下只能使用免费的,收费的不让装),其他数据库中间件(比如redis)的安装包。因为我很多年不用windows,而银行提供的机子又好死不死的是win8系统,开发环境搭的我人裂开来…

中期实施

部署

这个没什么好说的,需要吐槽下行内提供的容器管理平台超级不好用,以至于后面一直跟银行的老师申请kubectl的终端权限…

驻场开发

由于不能连接外网,开发过程中自然免不了驻场,这个光荣而又艰巨的任务当然是落到了我的头上。
此时你能够与外界沟通的唯一渠道就是手机,不要吝啬流量,开个热点给自己的电脑比什么都好…
开发过程最好是在自己的电脑上,这样效率是最快的,可以选择驻场期间进行对接调试,回公司进行快速开发(前期部分开发是在银行内部进行的,网络环境极差(只有手机流量),而且客场压力山大,与同事的沟通成本大幅增加,开发效率显而易见了,所以之后才考虑换成上面说的开发模式)。

系统对接

由于银行系统只能通过行内网络进行访问,系统对接必须要在开发机上进行,此时就体现出搭建开发机环境的重要性。

对接过程中,有两个比较重要的流程,一个是阅读文档,一个是沟通。银行的文档是我目前看到过的最为全面也最为复杂的。从开发的角度看,一篇文档有效信息大概也就20%左右。此时要多多注意快速提炼出需要的部分,其他的扫一眼赶紧过掉,不然读文档就要花掉非常大一部分时间。

银行的项目,大多数时候,你想要一个接口文档,对方却丢给你一份系统的文档,你想调他们的服务还得先熟悉他们的系统,这么蛋疼的事情最好不要自己一个人默默的做,尽量交给银行对接的人来负责(如果有的话,不,没有也得整一个出来)

沟通方面,尽量不要害羞(再次吐槽下银行的聊天软件,各种不好用),明确下沟通方式的优先级

当面聊 > 电话聊 > 微信聊 > 行内软件聊

打字聊天信不信对方可能几个小时都不会回复你一下(这个倒也不是只有银行这样)
另外沟通尽量在6点前进行,晚了银行的老师就该下班了…(匿名羡慕…)

跟自己公司的同事就不要客气了,有问题赶紧甩个电话过去就好。

后期

还处在中期阶段,持续更新中,希望项目能够顺顺利利的进行~^ _ ^~

孤独的开发工程师

20200804更新

太忙导致写文章的热情大大降低,很多想做的事情无限搁置ing…
努力寻找一个华丽的蜕变

开发进行到中后期阶段,本人也已经驻场快2个月了,长期独自驻场的感觉并不好,除开开会以外,其他时候一直是与世隔离的状态(银行这边只有我一个人,其他小伙伴场外援助,呕血…)

行内对接以、环境、资源申请等其他琐事多且漫长,加上行内的老师下班很早(6点之后基本找不到),故而个人的开发状态一直是白天忙银行的对接,晚上7点以后看文档,编写代码。

这是在前中期大部分开发任务都分配给其他同事,分摊了压力的情况下,目前来看,整个开发到测试的流程是撕裂的(行内行外两个世界,网络,系统,文档互相隔离),我这边需要小心翼翼的去维护和协调,这是拖慢工作效率的罪魁祸首

另一个原因是资源不够(指开发),根据行内老师的开发经验,系统对接前期需要投入大量的资源,之后在慢慢撤出,这一点很重要

最要命的是交付时间上卡的非常死,基本是每天车轮碾屁股的感觉。

总的来说,目前公司系统对接银行很吃力,咬牙坚持中~

在这里插入图片描述

这篇关于至暗时刻的一丝曙光:关于对接银行项目的一些感悟的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/336365

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧

SpringBoot项目是如何启动

启动步骤 概念 运行main方法,初始化SpringApplication 从spring.factories读取listener ApplicationContentInitializer运行run方法读取环境变量,配置信息创建SpringApplication上下文预初始化上下文,将启动类作为配置类进行读取调用 refresh 加载 IOC容器,加载所有的自动配置类,创建容器在这个过程

Maven创建项目中的groupId, artifactId, 和 version的意思

文章目录 groupIdartifactIdversionname groupId 定义:groupId 是 Maven 项目坐标的第一个部分,它通常表示项目的组织或公司的域名反转写法。例如,如果你为公司 example.com 开发软件,groupId 可能是 com.example。作用:groupId 被用来组织和分组相关的 Maven artifacts,这样可以避免

2. 下载rknn-toolkit2项目

官网链接: https://github.com/airockchip/rknn-toolkit2 安装好git:[[1. Git的安装]] 下载项目: git clone https://github.com/airockchip/rknn-toolkit2.git 或者直接去github下载压缩文件,解压即可。

9.8javaweb项目总结

1.主界面用户信息显示 登录成功后,将用户信息存储在记录在 localStorage中,然后进入界面之前通过js来渲染主界面 存储用户信息 将用户信息渲染在主界面上,并且头像设置跳转,到个人资料界面 这里数据库中还没有设置相关信息 2.模糊查找 检测输入框是否有变更,有的话调用方法,进行查找 发送检测请求,然后接收的时候设置最多显示四个类似的搜索结果

maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令

maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令 在日常的工作中由于各种原因,会出现这样一种情况,某些项目并没有打包至mvnrepository。如果采用原始直接打包放到lib目录的方式进行处理,便对项目的管理带来一些不必要的麻烦。例如版本升级后需要重新打包并,替换原有jar包等等一些额外的工作量和麻烦。为了避免这些不必要的麻烦,通常我们