企业随着业务的发展,必然会部署各种各样的IT系统。出于安全性的考虑,一些系统仅可企业内部使用,甚至仅开放给企业部分部门员工使用。 这些IT系统大致可分为两类, 系统本身不支持任何认证机制,例如资讯或文档类系统。需要增加认证保护,能够限制非企业员工访问即可。系统运维通常的做法是,为站点设置HTTP Basic认证保护。由于HTTP Basic认证是通过预设的用户、密码认证,认证信息比较容易泄露。即使定期更换密码,但需要额外的机制通知用户密码的变更,用户体验也不好。 系统自身支持认证,甚至支持多种认证机制。比如最常用的开源CI/CD工具,Jenkins内置支持本地数据库认证、通过插件支持多种第三方系统集成认证。如果大量的IT系统都有一套 …
Read More企业使用公有云服务的第一件事情就是创建云帐号,有了帐号之后如何让企业员工安全合规的使用云帐号下的各种资源是开启云之旅后的第一个考验。 云计算厂商针对企业上云后面临的第一个需求已经推出了完善的解决方案--Identity and Access Management。IAM可以帮助云帐号安全地控制对云计算服务资源的访问。企业可以使用IAM控制对哪个用户进行身份验证 (登录) 和授权 (具有权限) 以使用资源。 云厂商是否提供完善的IAM服务可以作为整体产品解决方案是否成熟的一个衡量指标,比如AWS的IAM和阿里云的访问控制都是较为成熟完善的产品。国内某个以AI能力为卖点的云厂商,在IAM产品方面几乎为零,很难相信对安全合规有需求的企业会 …
Read More这是“如何高效使用云服务”系列文章的首篇分享。可能有朋友好奇为什么不是从云计算最基础的服务--计算资源ECS/EC2讲起呢?在Cloud Native已经被越来越接受的今天,基于Kubernetes部署、编排应用的方式已经是业界的事实标准。无论是互联网巨头,传统500强企业,还是创业团队都在使用或规划使用Kubernetes作为应用程序的自动化部署、可扩展管理平台。在云计算平台,虚拟机越来越不需要单独的管理,在绝大多数的业务场景下,它们只是作为容器集群所管理的计算资源。甚至虚拟机的创建到销毁整个生命周期管理都可以由Kubernetes根据集群的负载来自动完成。 所有主流的云计算厂商都在解决方案中力推托管的Kubernetes,AWS …
Read More这是“如何高效使用云服务”系列文章的引子。该系列将讲述如何利用各种公有云服务来安全合规、高质量、快速、低成本的打造产品/系统,帮助企业(特别是中小微创业团队)在人少,钱缺的情况下做到最高效率。 个人使用公有云服务的经历 初会 最早是2012年在parttime项目中开始接触使用云计算服务,当时的初创团队也是希望用最低的成本来验证idea,所有使用了云服务来做POC。目前国内市场最领先的云计算厂商阿里云那时也才提供公有云服务不到1年。由于云产品不够成熟,加上团队技能经验不足,自助互助的渠道不畅,导致最初的云计算使用体验并不好,团队没有选择完全使用云服务构建产品。 IaaS or PaaS 云计算兴起的早期,云厂商大致分为两类,提供基 …
Read More上周参加了ArchSummit(全球架构师峰会),在这里记录下部分参加的主题以及个人感受。 会议回顾 今年参加了几次技术会议,微服务、容器技术、区块链、大数据、机器学习以及人工智能都是当下最热门的主题。同样这次ArchSummit绝大部分topics都跟这些主题相关。 这次会议主要参加了两个专场主题,Kubernetes的应用和快手科技技术专题。 基于 Kubernetes 的 DevOps是来自微软Azure的容器工程师分享如何基于 Kubernetes 的 CI/CD 落地实践。该分享中提到了CI/CD各个步骤中都有众多的工具支持,如何选择合适Kubernetes的工具将持续集成和部署串联在一起是Devops中的主要挑战。分享者 …
Read MoreV秘开发团队一直使用着Jenkins CI来持续集成V秘服务的新功能和各种改进。近日,Jenkins CI在重启之后,很多已有任务的配置无法被Jenkins CI完整的加载,导致很多功能无法使用。导致我们整个网站的各种服务无法被升级更新了:-( Jenkins CI在管理控制台列出如下的错误信息,示意现有任务的部分配置由于错误无法加载。 CannotResolveClassException: hudson.plugins.git.GitSCM, CannotResolveClassException: com.cloudbees.jenkins.plugins.BitBucketTrigger, …
Read MoreMongoDB是目前最为流行的NoSQL数据库之一。V秘的后台数据就是保存在MongoDB中的哦;) 尽管MongoDB的性能为业界称道,但任何数据库系统使用中都存在着慢查询的问题。慢查询的性能问题,可能是由于使用非最优的查询语句,不正确的索引或其他配置原因导致的。但开发人员或数据库维护人员首先要找出这些低效的查询,才能做出对应的查询优化。 在MongoDB中实现慢查询的profile是非常容易,因为MongoDB内置了profile开关来记录执行时间触发了profile条件的查询。 参照db.setProfileLevel()的文档,通过以下命令就可以记录执行时长超过300ms的查询。 …
Read MoreSwarm mode在Docker v1.12中正式发布,Swarm mode带来了诸如Docker集群,容器编排,多主机网络等激动人心的特性。V秘团队也尝试着将各种后台服务部署到Docker Swarm Cluster获取更好的弹性计算能力。 Docker v1.12中正式发布的Docker Swarm在我们实用中发现仍有不少不足之处,让我们一一分享给大家。 无法将服务的published端口只绑定到特点的网卡上。比如我们的云主机(同时也是Swarm manager/node)有eth0和eth1两块网卡,分别连接内网和外网。我们计划在Docker Swarm中运行一个nginx服务,通过80/443端口提供HTTP/HTTPS服 …
Read MoreV秘团队一直致力于用技术改善产品。V秘后台的各种服务一直是通过完善的Devops流程自动部署到Docker容器集群。随着Swarm mode在Docker v1.12中正式发布,Swarm mode带来了诸如Docker集群,多主机网络等激动人心的特性。我们也在尝试将V秘服务部署到Docker Swarm Cluster获取更好的弹性计算能力。 然而我们将V秘的服务部署到Docker Swarm Cluster时遇到服务容器无法启动的错误。错误信息类似如下, starting container failed: could not add veth pair inside the network sandbox: could not …
Read More在之前的文章我曾提到基于Angularjs的单页面应用在用户体验上的种种好处。然而任何事情都不是完美的,Angular和类似的框架通过应用内做页面路由的实现给SEO(也俗称搜索引擎优化)带来了不少麻烦。 首先,我们来看看页面内路由是如何实现的。默认Angularjs生成的页面uri类型如下, http://mydomain.com/#/app/page1 浏览器请求上面这个uri的时候,实际发送给服务器的请求地址是http://mydomain.com/, web服务器会将默认的页面响应给浏览器,比如index.html或index.php等。 浏览器返回的页面里面引入了Angularjs和其他应用需要的JS库。Angularjs应 …
Read More