‹  返回课程

一个人接单开发,用什么架构?

课文
阅读量:460
技术范畴
围绕“一个人”或两三个人的小团队的特点、讲解热门、成熟,可靠、最简化的Web类应用软件的系统架构。帮助读者(特别是编程零基础的读者)建立对系统的基本认识,同时建立对学习和接单的基本信心。
课前导言

请带着以下问题学习:

  1. 为什么“一个人”接单时,不要自行发明架构?
  2. WEB类型软件系统是什么?它当前在商业上热门吗?
  3. WEB应用经典的架构包含哪两大部分?
  4. 成熟的WEB应用架构为学习者和使用带来的什么好处?
一个人接单开发,用什么架构?
只有一个人或两三个人小团队,想快速可靠出活赚钱,选什么架构?

目录

  1. 什么决定软件的开发架构?
  2. 小团队,小生意,小架构
  3. 粗解WEB系统经典架构
  4. 小结

1. 什么决定软件的开发架构?

软件产品的设计架构不仅是技术的架构,更是人的架构。

什么样的团队,用什么样的架构。

我们刚开始只有一个人,后面可能还会拉几个做美工、做测试的小伙伴,这样“弱鸡”的团队,用什么架构呢?

当然,决定一个软件系统适合采用什么架构,也不光是人。总共有三个方面:

一、软件自身的功能组成、二、用于构建软件的技术组成、三、负责写软件的团队组成。

功能(需求)、技术、团队,似乎很全面,但这还远不是有关软件开发的本质。

2. 小团队,小生意,小架构

功能、技术、团队,粗看是三个平等的因素。其实不是,很多时候,团队是三者中的本因。团队的能力强弱,决定了你能够接到的项目的复杂度,也决定了你能够以及应该使用的技术。

淘宝、天猫的程序员会关心双11时,他们的后台程序能不能撑得住,但我们不关心。同理,微信的程序所关心的后台C++程序的架构,我们也不关心,因为我们用不到。

所以,如果你现在一分钱还没赚到,技术上也完全是菜鸟,就在想自己要如何为客户写一个可以撑得起多大多大访问量的系统。就纯属浪费时间。

反过来,如果,你接了一个1万元要做6个月的系统,一个网店平台。老板说,很快就可以打败淘宝,让后者的用户全部“弃暗投明”到这个平台……“因此,你一定要给我最好的架构,要能撑得住这伟大的时刻……”。你完全不必理会他,因为他自己都撑不到这个时刻。

在这个以“接单赚钱”为学习第一目标的课系里,我要给大家的第一个商业忠告是:认清现实,我们先奔大公司不做的小单做起。先赚小钱,对应的:请先学会用小架构。

注意,是“用”,而不是“写”。为什么呢?还是因为我们还很弱,不应该把有限的时间和精力用在“发明”架构。相反,我们应该找到我们所要做的那一类系统,业界经典的架构,用就是了。

3. 粗解WEB系统经典架构

问题来了:“我们应该找到我们所要做的那一类系统”,请问,我们应该做什么样的系统?

要符合两个条件:

  1. 要热门
  2. 要简单

不够热门,我们就很难接到活;不够简单,就算接到活,我们也做不了。顺便给第二个商业忠告:量力而行,不要接太超出自己能力的活,不然,容易坏了信用,甚至要跑路。

现在热门的软件系统,基本上都可称为“Web 应用”,包括业务上主要有两大类:a) 宣传网站、b) 电子商城。形式上主要是:

  1. 桌面Web应用,就是在笔记本或台式电脑上,通过浏览器查看、使用的网站系统;
  2. 移动Web应用,就是在手机上,通过浏览器查看、使用的网站系统;
  3. 移动第三方平台的Web应用,典型的如微信平台上的公众号应用、小程序应用;
  4. 移动原生应用,就是安卓或苹果上的,俗称“App”的东西。

学会以上四大类应用如何写,在技术上你能接的单就很多很多。当然,你得懂得出去找生意,宅在家里当技术男如何赚钱?我也很想知道。

重点来了:令人激动的是,这四类应用,在系统架构上,是极其接近的。因为它们都被分成两大块:前端和后端。依据前端是浏览器还是原生应用,又分为“Brower/Server ”和“Client/Server”。如图:

前后端架构

此类系统在运行期间,一部分位于前端,也就是图中的左边所示各类和客户端,硬件运行环境是电脑或手机,软件则可能是浏览器(电脑或手机)、微信、或我们自己开发的原生应用(APP)。另一部分则位于后端,也就是图中右边所示的服务端,在多数场景下,它通常是我们在阿里或腾讯花年费租来的云服务器。

很容易看出,左边(前端/客户端)的运行环境比较多样化,而右边(后端/服务端)的运行环境。采用合理的系统架构时,服务端的运行的环境可以做到完全或基本一致。

先来关心变化比较少的右边,我们直接给结论:我们将使用Linux操作系统(Ubuntu)、MySQL数据库、Redis缓存系统开发。后两者不仅因为免费,而且因为实在是太主流了,所以暂不多说。在操作系统中我们做点说明:Linux将既用于系统开发测试,也用于系统部署运行。之所以挑选Linux而不是Windows系统,原因在于这是一个更照顾开发者的系统,能在开发、部署、维护三个重要环节上,免除大量烦心琐事。

接着关心变化比较多的左边,也就是客户端。在这一端,请理解以下三点:

  1. 上图客户端中“原生应用/APP”如何开发,本课系不讲。原因有2:a) 商业上,当前多数小微商家出于成本(包括经济成本和时间成本)和效果考虑不会优先考虑APP,现在想让一个用户下载并坚持使用一款新的APP,代价很大。相反,商家通常会优先推第三方超级平台微信的公众号、小程序,或者基于浏览器的WEB应用系统。b) 技术上,开发原生APP又区分为安桌(Android)和苹果(iOS)两大平台,内容多、难度大,周期长,投入大,也还比较难以速成,显然不适合从入门到接单的最短学习路径规划。因此,移动端原生APP的开发不出现在《C++编程从入门到接单赚钱》课系中,强烈建议大家赚到钱以后再考虑学习。
  2. 上图客户端中,PC端(包括台式机和笔记本)和手机端(包括手机浏览器和微信公众号),因为二者屏幕尺寸相差很大,所以在展现上也差别巨大,加上图中未画出的,夹在中间的“平板电脑”,那就可以分出大、中、小三种尺寸的屏幕展现。如果想要在三类尺寸的屏幕都有最佳的界面展现和人机交互操作,显然至少需要做出三种设计——但是,这样就特别违背我们“一个人”的人员结构。事实上,哪怕是10个、100个的团队,也不喜欢为每一种屏幕做一种设计。因此,我们所安排的前端设计设计,会提供“屏幕尺寸自适应”功能,尽量做到一种设计,即能支持多样屏幕。
  3. 最后谈一谈微信端的开发。微信公众号在以上架构上中,本质也是一种移动端的浏览器。而微信端小程序,一方面提供更多(功能),一方面也要求更多(限制)。这样做有提供商(腾讯)自身商业考虑——将开发者以用户和平台绑定得更紧密——但在技术没有发生颠覆本质的变化,前端特有的知识点,对已经掌握浏览器前端开发的人员来说,学习门槛不高。因此我们会教会大家如何使用统一的后台程序同时支持包括微信小程序在内的多种前端。

请不要轻易放过上面的文字和图,在看似简单的图片及其描述中,事实上揭示了20年来无数开发人员用着纷繁多变的技术在Web应用上不断演化的过程中,最为本质的,基本不变的成果。

4. 小结

最后,也反过来请不要太纠结图或文字的细节内容。因为学习本课最重要的目标是:建立“我能学会”和“我能赚钱”的基本的、部分的信心;包括:

  1. WEB应用系统开发,你很长时间内不会遇上什么超难的问题,正如WEB应用系统开发,很长时间内你不会揽到干个半年赚数百万的活。卖个票赚四个亿的好(坏)事情更不会有。
  2. WEB应用系统开发,是一件很成熟的事。尽管各类新工具、新技术、新尝试一直层不出穷;但若是从架构上看,已经进入无聊加无趣的稳定期,表面上各种框架花样百出,但其实整个上没有新鲜事。这样的技术稳定期,正是高举拿来主义的学习者和使用者轻松进入的好时机。以课程中讲到的前端多样为例,早个几年,如何解决这类问题是个挺有趣的话题,它甚至有个术语叫“流式布局”什么的;相关环境支持也比较差,但现在一切很成熟,大路一条摆在那边,照着走就是。再如,更往前点,前端开发光如何处理微软IE浏览器就够写一本书;但现在这个不光彩的浏览器终于退出大舞台;再再如,一个开发者如何既能搞前端,又能搞后端,也是一件很值得研究讨论的事,它同样有个术语叫“全栈工程师”,但现在全栈开发已被广泛实践,经验教训一大把,哪里有坑,如何避坑,相对清楚。(我们为什么特意说“全栈”,因为我们就一个人啊,想或不想,你都得成为一个全栈工程师)
  3. 微信平台上,公众号进入稳定期——随便一家公司,没有一个公众号都不好意思出来混;小程序方兴未艾,大量的企业都正在将对客户的服务“小程序化”。而桌面WEB系统看似传统,但由于只有它适用于在大屏幕,因此在许多应用场景下,仍然具备超强的不可代替性。通过一套课系,掌握如何以一个后端对应这几类前端,除了原生App的前端以外(注意,后端仍然可以高度复用),学习者完全可以满足众多写字楼里各行各业的,基于互联网及移动互联网的信息化工作。
课后导言

本课程仅用于建立对WEB架构的基本认识,同时也仅用以建设学习者“基本的、部分的”信心。想要充足信心,最简单的方式就是学下去。凡事越细化就越清楚(清楚自己行或不行)。下一节《一个人接单开发,需要学什么?》我们将对上面那张“粗糙”的架构图做进一步细化,深入讲解架构里的各个模块在功能和性能两方面的如何分工配合,并依此勾划出我们需要学习的内容。满满干货,值得期待。