Java工程师修炼之道送10本书籍

作者:著有《Java工程师修炼之道》

出处:来自Java工程师修炼之道一书节选内容

一、软件开发的核心原则

此处所说的是软件开发应该遵循的一些核心原则:

1、Don’tRepeatYourself:这是软件开发的一个基础原则,即不要做重复性劳动。也是现在所说的“极客文化”的一种。代码重复、工作重复在软件开发中都是不合理的存在。利用各种手段消除这些重复是软件开发的一个核心工作准则。

、Keepitsimplestupid:即KISS原则。在做软件设计的工作中,很多时候都不要想得过于复杂,也不要过度设计和过早优化,用最简单且行之有效的方案也就避免了复杂方案带来的各种额外成本。既有利于后续的维护,也利于进一步的扩展。

3、YouAin’tGonnaNeedIt:即YAGNI原则。只需要将应用程序必需的功能包含进来,而不要试图添加任何其他你认为可能需要的功能。因为在一个软件中,往往80%的请求都花费在0%的功能上。

4、Doneisbetterthanperfect:在面对一个开发任务时, 的一个思路就是先把东西做出来,再去迭代优化。如果一开始就面面俱到,考虑到各种细节,那么很容易陷入牛角尖而延误项目进度。

5、Choosethemostsuitablethings:这是在做方案选择、技术选型时候的一个很重要的原则。在面对许多技术方案、开源实现的时候,务必做到的是不能盲目求新,要选择最合适的而非被吹得天花乱坠的。

二、软件过程

一个软件的生命周期中,除了开发还有很多其他步骤,也都是需要掌握的一些技术。

1、项目管理:项目管理对于一个软件的开发是非常重要的,能够保证项目进度有条不紊地进行,在可控的时间内以一定的质量交付。瀑布开发模型、螺旋开发模型是传统的项目管理模型。在互联网的开发工作中,敏捷开发则是比较受推崇的开发方式。所谓敏捷开发即快速实现原型,然后快速迭代。Scrum是目前普遍流行的敏捷开发方式之一。

、测试驱动开发:在平时的开发过程中,目前比较流行也是行之有效的一种方式就是TestDrivenDevelop,即测试驱动开发。此种方式的核心就是编写单元测试。简单来讲,就是先完成某一个功能的单元测试用例,然后在逐步消除测试用例的编译错误的过程中完成功能的开发。

3、持续集成:某一个软件功能完成开发之后,后续还有测试、预发布、部署等过程。整个过程称之为集成,而持续集成指的是无需人工干预可以不断地进行这个过程。Jenkins、QuickBuild都是比较典型的持续集成工具。

三、日常开发

日常开发指的是一些日常需要掌握的技能、工具等。

1、编辑器:开发中现在用的比较多的编辑器包括Emacs、Vim和SublimeText。笔者用的最多的就是SublimeText,基本能够满足自己的开发需求,包括编写脚本代码、查看代码文件等。Vim和Emacs这两款编辑器相对SublimeText来说需要记住很多命令,有一定的上手门槛。

、源码版本管理:代码的版本管理工具由CVS到SVN再到现在的Git,已经在事实上形成了以分布式版本管理为主的版本管理方案。基于Git,可以采用GitFlow做为源码管理模型。

3、项目工具:Github是一个第三方Git中央仓库,目前是世界 的开源代码库,也能够做为私人的代码管理软件;Facebook开源的Phabrictor提供了非常强大的任务管理、Bug管理、测试、代码管理等,但其上手门槛相对较高;禅道是国人开发的一款项目管理工具,但是其免费版功能有限;以Tower.im为代表的第三方项目管理服务也是一个可选择的方案,风险在于数据都不再是私有的。

四、运行环境

后端应用开发完成之后是需要部署到服务器上对外提供服务的。从最开始的直接在物理机上部署服务到后来的虚拟环境、云环境再到现在火热的容器,直至最近兴起的无服务器技术。都是为了让服务的运行环境能够更加便于建立、更容易维护、更容易扩展。

1、Linux:说到后端服务器肯定绕不过Linux。至少现在互联网的后端服务绝大多数都是部署在Linux的各种服务器版本中的。其中CentOS、Ubuntu以及Debian是用的比较多的版本。对于Linux,需要熟练掌握的就是很多常用Shell命令如ps、netstat、lsof、ss、df、dh等等。此外,很多性能分析命令如top、vmstat、iostat、sar等也需要熟练使用。

、应用服务器:就Java来讲,很多时候开发的都是Web应用,以HTTP协议对外提供服务。除了对性能要求比较苛刻的情况下会自己构建HTTP服务之外,大部分情况是需要依赖于支持Java程序的应用服务器的。目前最为常用的有:Tomcat、Jetty。严格来讲,这两者只是Servlet容器,真正的JavaEE应用服务器如Jboss、Weblogic在互联网领域很少使用。当然,这些软件并没有提供URL重写、请求委托等Web服务器功能,还不足以担当完整Web服务器的角色。Nginx则是目前最为流行的Web服务器。

3、负载均衡:在高并发流量环境下,后端服务会以集群的模式对外提供服务。在集群的前面,需要负载均衡器将请求分配到集群的各个结点上。LVS是最为流行的四层负载均衡软件,HAProxy是另一个即支持四层又支持七层负载均衡的软件,Nginx则是七层负载均衡最为流行的解决方案。当然,性能最为好的负载均衡方案是以F5为代表的硬件负载均衡,但由于其昂贵的成本因此在互联网团队中很少使用。此外,这里需要补充的是为了保证同等角色的服务的高可用,如LVS经常作为流量的入口,因此会部署多个LVS结点互为主备防止一个挂掉的时候造成服务不可用。而实现互为主备的技术目前用的最多的就是Keepalived。

4、虚拟化:虚拟化技术是前几年经常用来做私有云的一种技术。即将自己的物理主机通过虚拟化技术分裂为多个虚拟主机,能够隔离资源。其中,VPS(虚拟专用服务器)的代表技术包括:微软的VirtualServer、VMware的ESXServer、SWsoft的Virtuozzo。此外,OpenStack提供的构建私有IIAS的功能、CloudFoundry提供的构建私有平台运行环境以及Docker带来的容器服务都是虚拟化技术的一种。

五、第三方服务

虽然从根本上讲所有的软件服务都是可以自己开发的或者部署到自己服务器上的。但是受限于成本、周期或者其他客观因素,很多服务还是需要使用第三方的。

1、IAAS:InfrastructureAsAService,是云计算最开始的一种模式,现在基本上所有的云服务商都有IAAS的服务。其中,全球最强大的云服务提供商是亚马逊的AWS,国内的则当属阿里云。就目前来看,即使是强如AWS也会出现一些运维故障,因此国内的这些云计算提供商很多时候的服务健壮性、运维响应更是经常被人吐糟。就笔者自己的经历来看。年左右,盛大云的云服务其实做的还不错,但后来由于种种原因现在基本已经没啥份额了。国内除了阿里云,UCloud算是专注做云计算的一个比较靠谱的公司了。此外,还有一个青云,做的东西略显高大上,也是一个不错的选择。当然,现在这些云服务商早就不仅仅是IAAS了,也做了很多PAAS的服务。

、PAAS:PlatformAsAService,即只需要提交代码到指定的运行环境,其他的诸如代码打包、部署、IP绑定都由平台完成。除了可以使用CloudFoundry构建自己的PAAS平台以外,现在最为流行的第三方PAAS服务有:新浪的SAE、百度的BAE以及Google的GAE。

3、域名:有个可以提供服务的应用后,那么域名也是一个必须的基础设施。一个好的域名不仅仅代表企业的形象,也能够更加方便用户的记忆与传播。目前购买域名可以通过国外的name.







































中科大型白癜风公益援助
怎么治疗皮肤白癜风



转载请注明:http://www.xxcyfilter.com/zyyq/8773.html

  • 上一篇文章:
  •   
  • 下一篇文章: