Serverless Framework是一个开源命令行工具。他提供函数脚手架、流程自动化、最佳实践等帮助开发、部署跨云厂商的托管无服务器计算服务(官方已支持aws, Azure, GCP, IBM Cloud等各种厂商的无服务器计算)。同时支持使用插件来扩展各种功能,比如支持更多云厂商无服务器计算服务,例如阿里云的函数计算。 这里使用基于函数计算的钉钉回调函数接口示例来演示如何使用Serverless Framework将一个无服务器函数部署到AWS Lambda。 安装servereless后,可以通过serverless create命令创建函数脚手架工程,或者在已有工程的下创建serverless配置文 …
Read More在基于函数计算的钉钉回调函数接口中使用钉钉回调函数案例实践了AWS Lambda无服务函数。该示例中,我们将自定义的函数代码及依赖的第三方库(比如json处理库jackson, 钉钉openapi加密库, aws dynamodb client等)整体打包为一个部署包,上传到lamdba代码仓库用于函数执行。 然而实际项目中,其实有大量的相关函数可能会共享这些基础依赖库、三方函数库(比如headless chrome(Puppeteer), pandoc, OCR library -- Tesseract等等)或者使用自定义runtime(如官方未支持的java11)的需求。AWS Lambda在去年底发布了Lambda …
Read More这周参加了QCon 2019北京站,这里记录下部分印象深刻的主题以及个人感受。 QCon是由InfoQ主办的综合性技术盛会,主题涵盖了大前端、高可用架构、容器技术、大数据、机器学习等各种热门技术主题。其中也不乏下一代分布式应用、混沌工程等前沿有意思的主题,后面会详细介绍相关的主题演讲。 工程效率提升 这是在QCon第一日个人感兴趣且非常有意思的一个系列主题。无论是创业公司、独角兽企业还是互联网巨头都希望不断提升工程效率,3个相关的分享分别来自BAT,可见互联网巨头们对团队效率提升的渴望和重视。 10倍速原则对工程生产力建设的方向性影响 这个talk来自腾讯的高级顾问乔梁,这位老兄已经连续10年在QCon上分享持续集成、持续交付等工程 …
Read More基于Java的Spring Cloud是由Java最大开源生态Spring社区推出的Out-of-Box分布式微服务解决方案,自2016年发布起就被众多开发者看好。Java作为广为流行的服务端编程语言,Spring Cloud也就越来越多的被用于微服务开发。 Spring Cloud集成了Netflix OSS开源项目实现了很多功能(或作为实现之一),包括服务治理、网关路由、客户端负载均衡、服务间调用、断路器等。Spring Cloud Netflix将很多生产级别微服务能力开箱即用的带到了Spring Cloud架构下的微服务中,帮助开发者快速的构建满足12要素的应用。 在去年底发布的Spring Cloud Greenwich版 …
Read More本文是为Kubernetes中任意应用添加基于oauth2的认证保护的下篇,将图文详解如何使用基于钉钉认证的oauth2 proxy为自身本没有认证授权功能的Web站点实现认证及授权。 示例是使用的AWS EKS服务作为K8S环境。鉴于K8S的应用运行时属性,该示例也可以部署在其他云厂商托管的K8S。 示例模块简介 Nginx Ingress Controller为K8S集群内Web应用提供反向代理,以及支持外部认证。 简单的Web站点,基于Nginx docker容器。该站点默认没有认证及授权功能,使用外部钉钉应用作为认证及授权。 OAuth2 Proxy on Dingtalk提供基于钉钉应用的扫码认证及授权,只有认证且授权的用 …
Read More基于函数计算的钉钉回调函数接口
由于企业内部管理的需要,用到了钉钉的业务事件回调能力,正好将这个轻量级的接口使用无服务器技术来实现部署,以应对流量无规律下的动态扩展伸缩、按需使用、按量计费等需求。 阿里云函数计算版本 由于公司系统部署在阿里云,首先选择使用阿里云函数计算来实现及部署。该接口使用了JVM上语言Kotlin开发,虽然阿里云函数计算官方支持的开发语言有Java但没有Kotlin。其实无论Java或Kotlin最终部署文件都是Java Class字节码,加上Kotlin与Java良好的互操作性,实测函数计算可以完美支持Kotlin开发(个人认为任意JVM上的开发语言都是支持的)。 同时该函数使用了表格存储来持久化回调事件。表格存储是个按量计费的分布式存储, …
Read MoreServerless Computing(无服务器计算)是目前最被看好的云端计算执行模型。其最大的好处是提供分布式弹性可伸缩的计算执行环境,仅为实际使用资源付费,并且将应用维护者从常规的运维事务中解放出来,更利于专注到具体的业务上。 在主流的应用部署方式下,无论是使用云主机还是Kubernetes作为运行环境,都会有大量运维层面的事务需要考虑和处理,并且应用程序需要按照分布式程序的设计准则来应对应用的水平伸缩。同时随着云计算服务的发展和完善,云计算厂商提供了越来越多的基础服务,例如API网关、对象存储、消息队列、日志、监控等服务,函数计算可以完美的同其他云服务集成,帮助用户快速实现出生产级别的弹性可伸缩的应用。 那函数计算是什么呢? …
Read More企业随着业务的发展,必然会部署各种各样的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