本书旨在向开发人员展示如何构建适用于大流量、高并发场景下的云原生 Web 应用。本书从搭建开发测试环境开始,逐步介绍使用 Go 语言构建微服务的方法,通过引入 CI/CD 流程和 Wercker、Docker 等工具将应用推送到云中。结合微服务构建中的后端服务、数据服务、事件溯源和 CQRS模式、基于React和 Flux的UI设计等,本书最后构建了一个基于Web的 RPG游戏 World of FluxCrafl,可以作为使用 Go构建云原生 Web 应用的参考,适合于云计算与 Go 语言编程从业者们阅读。
正如前言中提到的,本书的目的是教大家如何构建云原生(cloud native)应用程序。然而 cloud native 这个词,本身带有很多我们想要摒弃的既有观念,例如明确地关注应用而不是人和设计哲学,并且依赖于原始的"12 要素法则"l来定义和描绘应用程序。
虽然以应用为中心的设计原则肯定是有价值的,但 cloud native 的文化是发源于构建和设计应用程序的这群人之中的。如果这些人接受了正确的设计哲学,那么他们显然可以更优雅地构建应用程序。艺术家的作品体现出了其在创作时的激情,而 Web 应用程序和微服务也应如此。
构建云应用程序不仅要学习新的库或编程语言,还涉及掌握新的学科、建立和培养新的习惯,并要以不同的方式看待世界。汉字"道"有许多解释,但用于哲学时,它表示方式或途径,尤指一个人做事的方式和途径,例如生活方式或构建软件的方式。为了形容我们所信仰的 cloud native 开发和架构哲学,我们将其称之为云之道。
本章将介绍云之道,这种方式有许多典型的优点。本书中构建的一切,从文字到代码再到支持站点,都流露出我们对道的热爱。希望大家在读完本书后,也能对道有和我们一样的感受。接下来将讨论以下内容。
●云之道的优点。
● 选择使用 Go 语言开发云端微服务的理由。
云之道的优点
与人们普遍的看法相反,我们所做的事并不都是很特别的。有些事情甚至会磨灭我们的激情,成为一种烦恼。我们努力工作,经历添加功能、部署、祈祷它们正常运行的艰难时刻,却忽视了自己构建的是艺术品的事实,不再给它们注入应有的爱和热情。
在某种程度上,这些事会在所有人职业生涯的某些时刻发生。我们期盼出现一位鼓舞人心的老板、一种新的技术或语言甚至一个新的工作来扭转这一切,将我们从深渊中解救出来。
对我们来说,这种解救便是云之道。它改变了我们对软件开发的看法,以及看待世界的方式。我们又可以感受到自己所构建的艺术,软件开发再次成为乐趣,开发者绝不会再用以前的方式来构建应用程序。
纵观软件开发阶段,不管是出于商业目的、创业或是兴趣爱好,或是介于三者之间,其实都已经有一整套既定的准则,遵循它就可以在最大程度上创建云上的可扩展、可靠、可预期的软件。
本书是关于 cloud native 软件开发的,所以在整本书中,所生成的每个代码示例和讨论的每个主题都将会具有下文提到的优点,当然这些优点并不是只适用于云软件。事实上,从文字、代码到支持网站,我们在完成这本书的过程中都遵循这些规范。
遵循简单云之道
所做的任何事都要简单化。
质疑一切事物似乎违背简单性。但当所构建的一切都已相当复杂时,绝对没有必要再为工作引入额外的复杂性流程。
质疑每个工具。考虑这个工具是可以简化系统,还是会在系统其他地方引入额外复杂性。如果答案是后者,那么就抛弃这个工具,忽略使用它的原因。
质疑所有的代码。如果它过于复杂以至于无法阅读,请替换造成这种复杂性的编程语言或框架。如果在代码背后有很多隐藏的"戏法",无法辨别出它会在何时何地如何发生,那么请修改代码。
以下是检验简单性的测试。
●IDE 是否可选?
●能否通过命令行构建和部署?
●团队的新成员能否快速理解代码?
工具和 IDE 必须可以自动化地执行例行任务、减少阻碍或时间来简化手动任务,从而使我们能够更好地工作和生活。工具绝不能是强制性的,如果代码必须用特定的 IDE 才能生成或者编译,那绝对不是在秉承云之道,也没有在遵循简单性原则。
任何可以通过命令行完成的工作,都可以使用脚本或者持续集成工具自动化地完成。因此,如果能使用命令行来构建、测试和部署应用程序,那么就可以自动化执行所有这些任务。
这似乎是一个尖锐的观点,大家有权反对。然而,至少在读完这本书之前,可以尝试在所有开发工作中遵循这些准则,它一定不会令你感到失望。
那些声称无须使用云端或无须遵循简单性的人都将对他们创造的或不愿摒弃的复杂性而感到羞愧。
测试优先,测试一切云之道
采用测试驱动进行开发。
测试一切,处处测试。
测试是抵御程序偏离期望方式而运行的首要且最好的方法。
几乎每个人都赞同进行测试,但在应该进行什么程度的测试这一点上,很少有团队能达成一致。在解答这个问题之前请先思考∶为什么需要测试软件?
当然,我们想要编写完美的软件,希望客户满意,想通过软件赚取大量金钱。但是,测试的核心不是这些。在根本层面上,测试可以给我们信心。
你是否经历过这种时刻∶在某种场合下,有人要在一些重要的和有影响力的人面前展示你的应用程序?你是否还记得在关键功能测试之前感受到的恐慌?
【下载地址】
链接:https://pan.baidu.com/s/1oLUPRZFLjsLKSEonXuJvWA
提取码:iaut
相关文章
本书旨在向开发人员展示如何构建适用于大流量、高并发场景下的云原生 Web 应用。
FlashFXP绿色版网盘下载,附激活教程 1839
FlashFxp百度网盘下载链接:https://pan.baidu.com/s/1MBQ5gkZY1TCFY8A7fnZCfQ。FlashFxp是功能强大的FTP工具
Adobe Fireworks CS6 Ansifa绿色精简版网盘下载 1607
firework可以制作精美或是可以闪瞎眼的gif,这在广告领域是需要常用的,还有firework制作下logo,一些原创的图片还是很便捷的,而且fireworks用法简单,配合dw在做网站这一块往往会发挥出很强大的效果。百度网盘下载链接:https://pan.baidu.com/s/1fzIZszfy8VX6VzQBM_bdZQ
navicat for mysql中文绿色版网盘下载 1652
Navicat for Mysql是用于Mysql数据库管理的一款图形化管理软件,非常的便捷和好用,可以方便的增删改查数据库、数据表、字段、支持mysql命令,视图等等。百度网盘下载链接:https://pan.baidu.com/s/1T_tlgxzdQLtDr9TzptoWQw 提取码:y2yq
火车头采集器(旗舰版)绿色版网盘下载 1737
火车头采集器是站长常用的工具,相比于八爪鱼,简洁好用,易于配置。火车头能够轻松的抓取网页内容,并通过自带的工具对内容进行处理。站长圈想要做网站,火车头采集器是必不可少的。百度网盘链接:https://pan.baidu.com/s/1u8wUqS901HgOmucMBBOvEA
Photoshop(CS-2015-2023)绿色中文版软件下载 1858
安装文件清单(共46G)包含Window和Mac OS各个版本的安装包,从cs到cc,从绿色版到破解版,从安装文件激活工具,应有尽有,一次性打包。 Photoshop CC绿色精简版 Photoshop CS6 Mac版 Photoshop CC 2015 32位 Photoshop CC 2015 64位 Photoshop CC 2015 MAC版 Photoshop CC 2017 64位 Adobe Photoshop CC 2018 Adobe_Photoshop_CC_2018 Photoshop CC 2018 Win32 Photoshop CC 2018 Win64