模板网站判定,wordpress占用资源,怎么做网站加盟,长沙网站推广服务公司作者 | Lakmal Warusawithana译者 |弯月 责编 | 徐威龙封图| CSDN 下载于视觉中国早些时候#xff0c;开发人员只需编写程序、构建#xff0c;然后运行。如今#xff0c;开发人员还需要考虑各种运行方式#xff0c;作为可执行文件在机器上运行#xff08;很有可能是虚拟机… 作者 | Lakmal Warusawithana译者 |弯月 责编 | 徐威龙封图| CSDN 下载于视觉中国早些时候开发人员只需编写程序、构建然后运行。如今开发人员还需要考虑各种运行方式作为可执行文件在机器上运行很有可能是虚拟机还是打包到容器中将容器部署到Kubernetes中还是部署到serverless的环境中或服务网格中。然而这些部署方式并不是开发人员编程经验的一部分。开发人员必须以某种方式编写代码才能在特定的执行环境中正常工作因此编程时不考虑这些问题是不行的。 Ballerina是一种开放源代码编程语言专门用于将代码迁移到云同时提供独特的开发人员体验。它的编译器可以扩展为读取源代码中定义的注释并生成成果物将代码部署到不同的云中。这些成果物包括Dockerfile、Docker镜像、Kubernetes YAML文件或serverless的函数。从代码到Docker 敏捷是基于微服务的应用程序开发带来的最大好处而Docker在这里起着主要作用。Docker可以帮助我们将应用程序及其依赖项打包到一个二进制镜像中这个镜像可以在本地、公共云或私有云中运行。如果想创建Docker镜像开发人员必须选择合适的基础镜像、打包捆绑所有依赖项、复制应用程序二进制文件并设置具有适当权限的执行命令来创建Dockerfile。如果想创建优化的镜像开发人员必须遵循一系列最佳实践否则构建的镜像就会很大安全性较低且存在许多其他缺点。 Ballerina编译器能够从应用程序源代码中创建优化的Docker镜像。以下代码说明了如何将Ballerina hello服务打包成Docker容器并运行。将docker:Config {} 添加到服务中即可生成Dockerfile和Docker镜像。在listener对象中添加docker:Expose {}即可公开端口让流量进入容器。下面让我们来构建源文件。创建Coder镜像生成Dockerfile创建的Docker镜像遵循镜像构建最佳实践并且开发人员只需使用docker run命令即可运行Docker容器。Ballerina全面支持Docker功能 更改Docker镜像的标签和仓库将Docker镜像推送到Docker镜像库使用Docker远程调试Ballerina服务将文件复制到Docker镜像带有Docker注释的多个模块使用Docker在HTTP和HTTPS中运行Ballerina服务覆盖生成的Dockerfile CMDDocker Hello World Main函数使用Main函数复制文件 从代码到KubernetesDocker可以帮助我们打包应用程序并执行一些开发人员测试。但是如果想在生产环境中运行具有多个微服务的应用程序我建议使用像Kubernetes这样的平台。Kubernetes是一个开源平台用于自动化部署、扩展和管理容器化的应用程序。Kubernetes定义了一套独特的基本模块提供了部署、维护和扩展应用程序的机制。Pod是一组逻辑的容器可保证在主机上的同一位置运行。Kubernetes服务为其构成的Pod集提供发现、路由和负载平衡等功能。Kubernetes部署是一组Pod包含定义好的副本集、运行状况检查和滚动更新等机制。所有这些Kubernetes对象都需要定义成YAML文件并部署到Kubernetes集群中。尽管开发人员希望在Kubernetes平台上运行应用程序但在许多情况下创建这些YAML文件的工作让开发人员十分头疼。Ballerina编译器能够在编译源代码时创建这些YAML文件。让我们修改上述示例生成Kubernetes的对象。将kubernetes:Deployment{}添加到Ballerina服务就可以生成Kubernetes部署的YAML将hello应用程序部署到Kubernetes时这是必需的。添加kubernetes:Service{}注释即可生成Kubernetes服务的YAML。在这个例子中我们将serviceType设置为NodeNode通过nodeIP:Port访问hello服务。除了hello.jar二进制文件外Ballerina编译器还会生成Dockerfile、Docker镜像、hello.yaml文件带有Kubernetes部署和服务以及helm图表的YAML文件。生成的hello.yaml文件 ---
apiVersion: v1
kind: Service
metadata:annotations: {}labels:app: helloname: helloworldep-svc
spec:ports:- name: http-helloworldep-svcport: 9090protocol: TCPtargetPort: 9090selector:app: hellotype: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:annotations: {}labels:app: helloname: helloworld
spec:replicas: 1selector:matchLabels:app: hellotemplate:metadata:annotations: {}labels:app: hellospec:containers:- image: hello:latestimagePullPolicy: IfNotPresentname: helloworldports:- containerPort: 9090protocol: TCPnodeSelector: {}
开发人员可以使用这些生成的Kubernetes对象在Kubernetes平台上部署应用程序。 Ballerina为保证在Kubernetes平台上运行应用程序提供全面的支持带有存活探针和和主机名映射的Kubernetes Hello World在多个端口中运行的多种服务的Ballerina程序安全的Kubernetes Hello World具有HTTP和HTTPS端点的Ballerina服务Google云环境中的Kubernetes Hello World将Secret挂载到部署将配置映射卷挂载到部署将持久卷声明挂载到部署带有Kubernetes注释的Ballerina模块带有Ballerina函数的Kubernetes Hello World将外部文件复制到Docker镜像中带有依赖性的Ballerina模块在命名空间中部署Ballerina服务命名空间的资源配额除了常见的Kubernetes支持之外如果你还想将Ballerina应用程序部署到OpenShift中那么可以参照这个示例。https://github.com/ballerinax/kubernetes/tree/master/samples/sample17 从代码到Istio 微服务架构为开发人员提供了许多敏捷开发的优势有助于加快创新。但是微服务架构也有自身的复杂性。Docker和Kubernetes解决了其中一些复杂性。服务网格是一种现代的软件体系结构可以降低Kubernetes等平台的复杂性。Istio是一个开源服务网格实现。主要关注领域包括服务发现、负载平衡、故障恢复、指标和监视。Istio还支持复杂的操作要求例如A/B测试、金丝雀发布、速率限制、访问控制和端到端身份验证等。除了Kubernetes对象之外Istio还引入了一些其他独特的概念其中最主要的是VirtualService和Gateway。VirtualService定义了一组流量路由规则以实现上述复杂的操作要求。Istio Gateway是一个负载均衡器在网格的边缘运行以接收传入或传出的HTTP/TCP连接。如果在Ballerina listener对象上添加两个注释Balerina就能够生成部署VirtualService和Gateway的对象。下面的代码片段显示了两个定义Istio支持的注释构建这段源代码即可生成Istio VirtualService和Gateway的对象。 从代码到KnativeKnative是serverless平台最初由Google创建现已得到50多家公司的支持。Knative使用Kubernetes平台功能构建了一个serverless平台帮助开发人员专注于编写代码而不必担心构建、部署和管理应用程序等“无聊却很困难”的工作。Knative的主要功能之一是从零个副本自动扩展并根据需求调整工作负载。Knative也有自己的对象模型。Knative服务由路由和配置定义它们与YAML文件中包含的服务同名。每次更新配置时都会创建一个新的修订版。Ballerina能够在编译源代码时生成这些必要的对象唯一的要求是在代码中添加一个简单的注释。加入这个注释可以生成在Knative集群中以serverless模式部署应用程序所需的对象。为Knative部署生成的hello.yaml。从代码到AWS Lambda AWS Lambda是一个事件驱动的serverless计算平台。你只需添加awslambda:Function即可在AWS Lambda中部署Ballerina函数。CI/CD与GitHub Action在微服务架构中持续集成和持续交付CI/CD对于不断改进系统的敏捷环境至关重要。提供CI/CD功能的技术有多种最近GitHub引入了GitHub Actions。GitHub Actions提供了一种便捷的机制可以在GitHub代码库中使用其工作流概念来实现CI/CD管道。我们可以通过Ballerina GitHub ActionGitHub Marketplace中有提供创建带有CI/CD的Ballerina开发环境。支持SaaS连接器我们已经讨论了Ballerina支持不同的技术来自动化云部署。为了获得云的全部功能应用程序应该能够与不同云供应商提供的软件即服务SaaS集成。Ballerina提供了一个简单的工作流来连接和集成这些SaaS服务。例如以下代码片段显示了如何使用Twitter SaaS服务初始化和发送推文Ballerina有许多现成的SaaS连接器从Ballerina连接到Google Spreadsheets从Ballerina连接到Gmail从Ballerina连接到Bigquery通过Ballerina连接到Azure CV服务从Ballerina连接到Amazon S3从Ballerina连接到Amazon SQS服务从Ballerina连接到Salesforce 总结以前开发人员只需编写、构建并运行程序。然而如今开发人员面临多种运行方式的选择。Docker、Kubernetes、服务网格和Serverless等云原生平台在支持部署自动化的现代平台中扮演着重要角色。然而对于开发人员而言这些部署并不属于编程。Ballerina是一种开放源代码编程语言专门用于从代码迁移到云同时提供独特的开发人员体验。Ballerina的编译器可以通过扩展读取源代码中定义的注释并生成将代码部署到不同的云环境中的对象其中包括Dockerfile、Docker镜像、Kubernetes YAML文件或Serverless函数等。原文https://hackernoon.com/rethinking-programming-from-code-to-cloud-fy273yer为了让大家更好地了解开发者CSDN特发起“开发者与AI大调查”活动。 点击阅读原文填写调查问卷您将获得价值299元的「2020 AI 开发者万人大会」在线直播门票一张哟推荐阅读为何你的 SaaS 想法总是失败没想清楚这 4 个原因可能会继续失败
如何给女朋友解释什么是撞库、脱库和洗库
开源的未来 10 年中国开源社区建立是关键
万字好文智能合约编写之Solidity的编程攻略建议收藏
Python 爬取疫情期间全球股市走向笑不出来......
无代码时代来临程序员如何保住饭碗
真香朕在看了