作者:小傅哥

博客:https://bugstack.cn

沉淀、分享、成长,让自己和他人都能有所收获!

一、前言

你在通往架构师的路上吗?

程序员这个行业就像是在不断的打怪升级,突破每一阶段的瓶颈期。

从毕业前想通过实习拿到offer、毕业后想通过试用期到转正留下、转正后程序员想做到高级开发、从高级该开发想做到架构师、从架构师想做到更高的总监或者CTO。往后的路越来越不容易,既需要需要个人不断的沉淀学习,也需要一定的机遇机会。

在这条路线上架构师是一个瓶颈期的重要转折点,因为这个阶段远不止个人的技术栈学习,还有很多其他能力,几乎可以包括的有如下几点;

  1. 有中大型项目开发落地经验
  2. 有可靠的交付质量和统筹能力
  3. 能解决复杂项目的架构设计和推进执行
  4. 有一定的技术广度和深度,改的了bug,处理的了事故
  5. 定得了规范、设计了架构
  6. 有一定的认知范围,熟悉业务、产品和运营,了解运营规划和业务发展
  7. 带得了小组,推进项目落地和组内技术成长
  8. 有一定的专业影响力,能用技术创造价值
  9. 有紧急情况的应对能力
  10. 流程规范制定、方法论、开源项目的相关经验

一个技术架构师要求可能不只这十点,还有很多软实力。但这些很难通过培训或者上课学来,因为这些能力都是实操经验,需要长时间的磨练。

其实即使没有架构师也不会缺少系统架构,这样的小组并不需要养一个架构师,很多都是成套的快速搭建的技术,尤其像 SpringBoot 一整套服务,很适合小型公司使用。

但如果有非常复杂的系统架构和业务场景设计,包括几十个系统的分组安排开发,提供支撑上百万的QPS、秒杀的活动瞬时就有几万、以及需要随着业务发展扩展到可以支撑几百万DAU的后台服务。就需要架构师来整体把控,因为他可以从下单、到交易、到支付、到结算、到活动、到玩法,怎么支撑、怎么设计,提供出一整套的解决的方案,那么这个体量复杂程度的系统,就不在是一个小作坊团队能承担下来的了。

二、技术栈闭环学习

你的技术能力足以支撑整个系统吗?

其实很多程序员‍‍大部分都被局限在产品的PRD里,除此之外对整个全局并没有太多的认知。而且只是在技术范畴内也同样被限定在某个语言下,比如后端研发基本开发不出一个完整的前端页面、前端同学同样也写不出后端接口。

当然在某个技术语言下深扎不一定是什么坏事,甚至可能还有一番创造和成绩。只不过缺少了全局的认知和了解,在某些时候会被限定到一个瓶颈期里,在想成长到下一个阶段就很难了。

或者更简单的说,你能用你所会的技能搭建出一个技术博客吗,并运营起来。如果你没做过这件事,那么从你开始到完成你会发现。你需要的不只是java,还有UI设计,还有前端页面,还有服务器等等一套技术来支撑。同时,在某些时候你会为选择用 java 还是其他语言而纠结,因为个人博客的服务器也是要付费的,java 服务器的费用通常会贵一些。

所以,如果你的将来想自己做点什么,就不要只被局限在某个技术里,也不要被局限在某个领域中。了解了解业务熟悉熟悉运营也尝试学学UI,这些知识的学习都远比浪费可靠。

三、我那折腾的成长经验

讲道理,其实我是一个很爱折腾的程序员,当然别的事上我也爱折腾,尤其发明创造类的。

小时候我会把很多东西拆喽,拿里面的电机等小东西,在做一些玩具。比如;可以下水的电动小船、可以滑冰的小冰车、还有一些懒人小工具等。

随着这样的性格到学编程也是这样爱倒腾,从初学编程就想着要自己做网站。从只会个html就开始买域名、备案、上线网站、装b分享,这一套组合拳就开始折腾到现在。直到有了目前这个稳定的技术博客网站 bugstack.cn 。这些让我学到了很多额外的知识,也拓展了很多的黑技能。

1. 我有一个博客引流

假如你有一个流量还可以的技术博客,又新申请了一个公众号,想把公众号做起来。那你会怎么做?

是不会想到在技术博客找块显眼的区域,放置一张公众号二维码?但这样的方式其实并不会有太多人关注,从现在比较流行话的来说,关注不关注并不会影响到用户的利益。

所以,我们更希望的是在保证用户体验的情况下,尽可能的引导用户主动关注。那么最好的方式就是用户阅读文章时提醒关注,如果没有关注只能阅读文章的30%内容,关注即可阅读全文。就像下面这样的效果,如下;

这个效果最终的结果就是用户在阅读文章时,可以引导用户关注公众号发送指定的编码进行解锁,解锁后允许用户阅读,流程如下;

2. 为了引流要付出多少成本?

这是使用Java语言,开发一个把博客用户引流到公众号服务,一年大概的成本。当然不同的云服务厂商的价格以及活动时略有不同,但按照每年的平均价格计算,大概会在1800.00元左右。

这个钱也不是太贵,但放在整个成本核算的服务里,这样的投入就是蛮高的了。除非你的公众号收入可以抵消这部分投入,并且还有一些收益那么是可以的。另外这里我们还没有计算人工投入,对号主就是那个多种角色的人工:产品 + 研发 + 视觉 + 业务 + 运营 = 号主!

可能你不知道,Java服务是贵一些,但还有php的服务器便宜呀,价格差多少呢?以php的虚拟机为例,一年的价格是198元。而且这个php虚拟机还包括了1G的数据库资源,与java服务器相比确实很省钱。

所以,选择php开发这套公众号与博客打通的后端服务,就显得非常适合。

3. 使用PHP搭建DDD四层架构

好多年前我也自学过PHP,得益于那句:”php是全世界最好的语言!“。

因为在这条学习的道路上爱折腾,所以C++、C#、PHP、PLC、中继器等也都开发过。但太久不用所以也忘的7788了,可为了能省钱我用一天时间把PHP又学会了

其实有了一定的编程经验,语言之间是有一定的相似度的。你只要按照你的想法实现即可,任何一个语言都会提供给你相应的实现方式,不知道?搜就可以!就像下面这个PHP的领域驱动设计四层架构,与Java很是相似。如下;

咳咳,这里我没有选择使用php的一些框架,例如 thinkphp、laravel等。毕竟框架对我来说开发一个公众号的后端服务,还是稍显笨重。按照我的想法逻辑,搭建一个DDD四层架构按照我实现Java的方式实现PHP代码即可。实现方式也会非常快,最后只花了1天时间就把整个服务写完并部署上。这包括;代码开发、数据库配置、服务上线、接口切换、SSL、跨域等。所以,我一直想说不要只做个工具人,要铺设的全面一些!

例子,让你看看现在的PHP与Java像不像;

  1. 定义方法名称用function,public function entry()
  2. 构造函数public function __construct(),可以初始化一些信息
  3. 字符串用点连接,$openId . "_" . $token
  4. 接口用interface定义,interface LogicFilter
  5. 类的引入包,require_once
  6. 方法调用用指针,$this->msgEngineHandle->process($behaviorMatter);
  7. 数据库连接,new mysqli()
  8. 定义属性,var $openId;
  9. 获取入参,$_GET['token']
  10. 输出结果反馈到接口,echo

... 等等,还有很多。你所有的逻辑实现只要在Java里可以的,PHP也都有相应的支持。这就是语言建设的规范,并在某些命名也是保持统一的。

四、总结

  1. 这呢就是我在10.1放假的最后一天,把Java语言开发的公众号后台,切换成PHP的经历。但代码结构没变,依旧是我喜欢的DDD领域驱动设计。重要的是省钱了!,这里还有一个Java版本的公众号后台开发。Java版DDD四层架构,开发公众号服务端
  2. 如果你希望自己,不只是编程这条路上的PRD工具人。那么一定要大力的铺设自己的技术栈和其他不只是研发的开发能力。当你真的去了解业务、运营、产品后,相信你可以写出更加符合市场的代码。同时这些软技能,可以帮助你走向更高的阶梯!
  3. 好车上道都不响、破车上路才叽里呱啦的!无论你在哪一行或者哪一方向努力,都可以默默的坚持着。可以在一条路上走的很久,总比每天都想着换方向要重要的多。不要做一个简单的男人,加油!
  4. 对了,在打个广告

    架构师根本不会被语言限制住,php照样可以用领域驱动设计DDD四层架构!的更多相关文章

    1. 基于领域驱动设计(DDD)超轻量级快速开发架构(二)动态linq查询的实现方式

      -之动态查询,查询逻辑封装复用 基于领域驱动设计(DDD)超轻量级快速开发架构详细介绍请看 https://www.cnblogs.com/neozhu/p/13174234.html 需求 配合Ea ...

    2. DDD「领域驱动设计」分层架构初探

      前言 基于 DDD 传统分层架构实现. 项目 github地址:https://github.com/WuMortal/DDDSample 这个分层架构是工作中项目正在使用的分层架构,使用了一段时间发 ...

    3. Java开发架构篇《初识领域驱动设计DDD落地》

      作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 DDD(Domain-Driven Design 领域驱动设计)是由Eric Eva ...

    4. 如何使用ABP进行软件开发(2) 领域驱动设计和三层架构的对比

      简述 上一篇简述了ABP框架中的一些基础理论,包括ABP前后端项目的分层结构,以及后端项目中涉及到的知识点,例如DTO,应用服务层,整洁架构,领域对象(如实体,聚合,值对象)等. 笔者也曾经提到,AB ...

    5. 基于领域驱动设计(DDD)超轻量级快速开发架构

      smartadmin.core.urf 这个项目是基于asp.net core 3.1(最新)基础上参照领域驱动设计(DDD)的理念,并参考目前最为了流行的abp架构开发的一套轻量级的快速开发web ...

    6. 【DDD】领域驱动设计实践 —— 架构风格及架构实例

      概述 DDD为复杂软件的设计提供了指导思想,其将易发生变化的业务核心域放置在限定上下文中,在确保核心域一致性和内聚性的基础上,DDD可以被多种语言和多种技术框架实现,具体的框架实现需要根据实际的业务场 ...

    7. [.NET领域驱动设计实战系列]专题二:结合领域驱动设计的面向服务架构来搭建网上书店

      一.前言 在前面专题一中,我已经介绍了我写这系列文章的初衷了.由于dax.net中的DDD框架和Byteart Retail案例并没有对其形成过程做一步步分析,而是把整个DDD的实现案例展现给我们,这 ...

    8. 领域驱动设计(Domain Driven Design)参考架构详解

      摘要 本文将介绍领域驱动设计(Domain Driven Design)的官方参考架构,该架构分成了Interfaces.Applications和Domain三层以及包含各类基础设施的Infrast ...

    9. [转载]领域驱动设计(Domain Driven Design)参考架构详解

      摘要 本文将介绍领域驱动设计(Domain Driven Design)的官方参考架构,该架构分成了Interfaces.Applications和Domain三层以及包含各类基础设施的Infrast ...

    随机推荐

    1. C#编辑GridView的Thead

      背景 有这样一个需求,需要更改GridView的Thead,即表头.不只是多行表头,而是任意的内容,可能是一段文字,也可能是一个图片,综合网上的一些资料,大致整理出一些做法. 内容 大致有两种方法 第 ...

    2. 虚拟PWN初探

      前言 之前看到星盟Q群里面的消息,Freedom师傅在B站直播关于虚拟pwn入门的公开课,然后就去听了一波,感觉受益匪浅.之前一直以为虚拟pwn是超级复杂的东西,今年打比赛也遇到了好几次,一直无从下手 ...

    3. Linux:基础命令三

      一.软链接 相当于windows中的快捷方式,为了方便用户在使用时更快找到 ln -s /application/appche2.2.0/  /application/appche       注意: ...

    4. Dos拒绝服务Sockstress/TearDrop 泪滴攻击(二)

      Sockstress放大攻击原理:攻击者向目标发送一个很小的流量,但是会造成产生的攻击流量是一个巨大的.成百上千倍上万倍流量被放大的一个效果,才适合作为一个拒绝服务攻击效果.(实现攻击者很小的流量打垮 ...

    5. maoge数

      maoge数 题目描述 maoge定义一个数x是maoge数的条件,当且仅当x的各数位之和等于 x / 2向下取整,现在maoge想让你求 n 的约数中有多少个maoge数 输入格式 输入一个数 n ...

    6. 单链表的前K个的逆序输出

      单链表逆序输出也是常被面试官问到题算法题,所以自己就总结了一下,在此贴出算法,与小伙伴们相互交流. 首先要有三个指针,前两个分别指向首节点,首节点的下一个节点,第三个是临时指针,是为了储存首节点的下一 ...

    7. 分布式系统监视zabbix讲解八之自动发现/自动注册

      自动发现(LLD) 概述 自动发现(LLD)提供了一种在计算机上为不同实体自动创建监控项,触发器和图形的方法.例如,Zabbix可以在你的机器上自动开始监控文件系统或网络接口,而无需为每个文件系统或网 ...

    8. web网站——理论01

      LAMP的架构以及通信过程 LAMP的架构: LAMP是一个多C/S架构的平台,最初级为web客户端基于TCP/IP通过http协议发起传送,这个请求可能是动态的,也可能是静态的. 所以web服务器通 ...

    9. element-ui upload上传文件并携带参数 使用formData对象

      需求:上传文件的时候,需要携带其他的参数 问题:使用upload上传文件时,必须使用formData对象,而其他的参数通过data获取的到的,formData和data是不能同时传输的 解决:获取到的 ...

    10. robotframework获取Token

      公司做接口自动化,但是其他接口调用都需要传入token,所以首要目标是把token读取出来. 需要清楚以下内容: 1.登录使用post请求 2.https协议,且登录后需手工验证SSL证书,默认处于不 ...