Molly 安装与测试

Molly下载地址:https://github.com/palvaro/molly

首先阅读tutorial.md文件,安装方法按照Installation.md来执行;

需要注意点:

  1. 在mac OS下不能使用brew install来安装apr、apr-util,需要下载这两个组件的源码,通过make、install的方式进行安装;
  2. bin 目录下只有c4,缺少z3的安装文件,需要自己下载安装;
  3. 依赖安装完毕后,需要将依赖的库添加到PATH中;

安装Scala构建工具:sbt

brew install sbt@1

参考:http://www.scala-sbt.org/download.html

继续阅读

Advertisements

如何提高微服务架构的可用性

业界通常用多少个9来衡量系统的可用性,如99.99%表示一年中有1小时左右的不可用时间。任何一个服务的可用性都不会是100%,意味着在服务运行时间里还是有可能发生故障。当把功能集中且运行在同一个应用中的单体架构拆分成多个相互独立的微服务架构后,虽然可以降低一损俱损的全局性故障风险,但由于微服务之间存在大量的依赖关系, 随着微服务个数的增多,依赖关系也将会变得越来越复杂,而且每个微服务都有可能发生故障,如果不能做好相互依赖的隔离,避免故障的连锁反应,结果可能比单体更糟糕。

假设有100个微服务,并且每个微服务只会发生1种故障,那么总共会有 2100 种不同的故障场景,而每个微服务自身可能不止1种故障。当某个微服务发生故障时,如何确保不会导致其他依赖的微服务不可用, 如何确保系统自动降级把发生故障的微服务排除出去,如何确保故障不会扩展到整个系统? 那么如何有效确保微服务架构的可用性将会成为挑战。 继续阅读

Blue-green Deployments, A/B Testing, and Canary Releases

A lot of teams I talk to recently are very interested in “DevOps” (whatever that means… seems to mean different things to different people?) and when we sit down and talk about what that really means, the direction of the conversation can go down many interesting paths. And some times, the path it goes down makes people feel very uncomfortable. I was talking with a team a while back about deployment best practices, hot deployments, rollbacks etc and when I mentioned blue-green deployments, they became a bit queasy. Another team couldn’t understand why doing something they’ve always done was not such a very good thing.

blue-green deployments have been practiced at places like Amazon for 10+ years. They’re a safe, proven, method. Now, blue-green deployments are not a silver bullet, but there’s an element of usefulness to them. But what about A/B testing then? Or even Canary testing? With all of the #microservices, DevOps, and cloud-native talk, there’s a lot of discussion about them, but I wanted to clarify their differences. 继续阅读

The Twelve-Factor App

简介

如今,软件通常会作为一种服务来交付,它们被称为网络应用程序,或软件即服务(SaaS)。12-Factor 为构建如下的 SaaS 应用提供了方法论:

  • 使用标准化流程自动配置,从而使新的开发者花费最少的学习成本加入这个项目。
  • 和操作系统之间尽可能的划清界限,在各个系统中提供最大的可移植性。
  • 适合部署在现代的云计算平台,从而在服务器和系统管理方面节省资源。
  • 将开发环境和生产环境的差异降至最低,并使用持续交付实施敏捷开发。
  • 可以在工具、架构和开发流程不发生明显变化的前提下实现扩展。

这套理论适用于任意语言和后端服务(数据库、消息队列、缓存等)开发的应用程序。

继续阅读

DevOps的三种方式

前言

这篇博客中提到的“三种方式“源自 《DevOps Handbook》 及《凤凰项目》(The Phoenix Project: A Novel About IT, DevOps, and Helping Your Business Win.),这三种方式描述了构成 DevOps 的理论框架、流程、实践及价值观和哲学。

感谢《Lean IT》的作者 Mike Orzen 为此文提供宝贵建议。

三种方式

下文将介绍三种模式及在该种模式指导下的 DevOps 实践。

第一种方式: 系统思考

第一种方式强调全局优化,而非局部改进。— 大到部门职能划分(例如研发部和运维部门),小到个人(开发和系统工程师)。

这种方式将关注点放在整个业务价值流上。换句话说,整个团队应该关注在从需求被定义到开发,再到运维这个过程,直到价值被以服务的形式交付给最终用户。

将这种方式带到实践中的产出便是永远不要将已知的缺陷传递到下游工作,永远不要为了局部优化影响了整体价值流交付,总是为了增加价值流动努力,永远追求对架构的深刻理解。

涉及到这种方式的实践有:

  • 所有环境和代码使用同一个仓库,将软件包纳入版本管理
  • 团队共同决定发布流程
  • 保持 DEV、TEST、PRODUCTION 环境的一致性
  • 自动化回归测试
  • 小步提交,每日部署;而不是一次部署大量变更
  • 更快、更频繁发布

第二种方式:经过放大的反馈回路

第二种方式是创建从开发过程下游至上游的反馈环。几乎所有的流程改进都是为了从时间上缩短和从覆盖面上放大反馈循环,从而可以不断地进行必要的改正。

第二种方式的产出是关注到价值流中所有涉及到的用户,包括价值流内部和外部的,缩短和放大反馈回路,并且可以随时定位到需要改进的地方。

涉及到这种方式的实践有:

  • 代码审查及配置变更检查
  • 有纪律的自动化测试,使许多同时的小型敏捷团队能够有效地工作
  • 尽早设置监控预警
  • 修复 bug 为团队最高优先级
  • 团队成员之间高度互相信任
  • 团队之间保持沟通和良好合作

第三种方式:持续做试验和学习的文化

第三种方式提倡持续做试验,承担风险、从失败中学习;通过反复实践来达到精通

我们需要实验和冒着失败的风险,及时不断地尝试将我们置于一个危险的境地,我们要通过反复试错来掌握使我们远离危险的技能。

第三种方式的输出为为改善日常工作分配时间、奖励团队冒险精神,将错误人工引入系统以提高系统健壮性。

最具有代表性的就是 Netfilx 的 Chaos monkey ,Netflix 在他们的生产环境搭建一个服务用于定时随机关闭服务器,用以模拟服务器正常损坏或服务异常,他们的系统长期在这种环境下运行,“服务器故障”成为系统每日都要面临的问题,因此当服务器真的以外故障时不会对系统整体造成任何的影响。

译者后记

全局优化、快速反馈、鼓励失败。我们发现其实敏捷、精益、持续交付、DevOps中间有很多相似的东西。

参考资料: https://es.slideshare.net/SonatypeCorp/devops-connect-josh-corman-and-gene-kim-discuss-devopssec

http://itrevolution.com/the-three-ways-principles-underpinning-devops/

转发自:@duyidong

《那时花开》

作品:《那时花开》   字数:约 35000 字      体裁:中篇小说    关键字:校园青春

背景:小说记录了自己以在高中时期一群小伙伴的学习生活,作者:陈晓雷

袁河是高二上学期转到陆可凡他们班的。至于转班的原因却不得而知。不过众所周知的是,陆可凡他们班的语文老师是袁河的爸爸,所以就有人猜测这可能是他爸爸的注意,目的很简单,无非就是为了方便监督和管教儿子学习。那为什么到了高二才转班呢?答案也很简单,因为高二是承上启下的关键学期,既能延续高一时的学习状态,又能为高三做准备,所以这时转班最合适不过了。

转到陆可凡他们班上后,袁河发现了一个奇怪的现象。

比如一般课间休息的时候,同学们都会以固有的方式来放松自己。其中少数同学会走出教室,站在外面的走廊上,抬头仰望天空,认真盘算自己忧伤的心事。或者靠在旁边的栏杆上,低头看着地面,仔细回忆某天的快乐心情。而大多数同学则会三五成群地聚在一起,找一个大家都感兴趣的话题,然后各抒己见,开始谈论。 继续阅读

Taobao SSO 跨域登录过程解析

今年的双十一和双十二已经告一段落,你是否买到了你想要的宝贝呢?我们知道双十一是天猫的主场,双十二是淘宝的主场,你有没有注意到你在登录了淘宝后,访问天猫或者飞猪,你还是处于登录态的,但是我们知道cookie是不能跨域的,那么阿里是如何做到了多域名下的登录态同步呢?接下来我们通过抓包进行请求解析来了解这个过程。

基础知识:

  1. 如果忘了Cookie和Session的区别,那么建议你先回顾一下,可以参考:https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/06.1.md
  2. 如果不知道为什么需要鉴权,为什么需要SSO,为什么需要跨域登录,建议你先阅读上一篇文章“系统权限控制”。

继续阅读