Go 开发人员基于亚马逊云科技进行构建的指南

演讲者探讨了如何利用Go语言在AmazonWebServices中构建无服务器应用、数据密集工作负载,重点关注AmazonAppRunner、Lambda、DynamoDB等服务。讲解了Go的优势、SDK使用、部署选项及与AI服务的集成案例。
摘要由CSDN通过智能技术生成

关键字: [Amazon Web Services re:Invent 2023, Amazon AppRunner, Go, 亚马逊云科技, Deployment, Serverless, Generative Ai]

本文字数: 1700, 阅读完需: 8 分钟

视频

如视频不能正常播放,请前往bilibili观看本视频。>> https://www.bilibili.com/video/BV1QH4y1C75T

导读

Go 已成为现代云原生开发的通用语言。Go 为 Kubernetes 和 Docker 等颠覆性技术提供了强大的支持,因此在过去 5 年中跻身 "最受喜爱"(静态类型)编程语言前五名也就不足为奇了。本演示课程将深入探讨如何将 Go 与 Amazon Lambda、Amazon App Runner 和 Amazon DynamoDB 等各种亚马逊云科技服务结合使用,以构建无服务器应用程序、数据密集型工作负载和云基础设施。本讲座的目标是让您广泛了解如何在亚马逊云科技上使用 Go。

演讲精华

以下是小编为您整理的本次演讲的精华,共1400字,阅读时间大约是7分钟。如果您想进一步了解演讲内容或者观看演讲全文,请观看演讲完整视频或者下面的演讲原文。

欢迎参加2022年re:Invent!作为亚马逊云科技的高级开发者倡导者,Fuzz来自热情洋溢的迪拜市,向各位问好。他表示,本次演讲的核心内容是关于如何在亚马逊云科技上使用Go编程语言构建应用程序的开发者指南。

Fuzz指出,这次演讲的内容是基于他与众多客户的深入沟通,尤其是那些正在使用Go编程语言构建应用程序并将其部署到各种计算平台上的客户。作为一场面向约200名观众的演讲,他希望能够涵盖一系列广泛的入门主题和资源,帮助刚开始在亚马逊云科技上使用Go的观众。

他还特别提到了他的合作伙伴Abhishek Gupta,他在构建这次演讲中做出了巨大贡献,但由于个人原因无法参加今年的re:Invent。Fuzz再次强调,这次演讲和演示是一个团队合作的成果,Abhishek做出了巨大的贡献。

接下来,Fuzz介绍了Go的语言优势,如静态类型、编译型编程语言等特点。由于这些特性,Go成为了构建API、基础设施、devops工具和数据处理管道的理想选择。这使得Go成为云原生应用的理想选择。

在亚马逊云科技上开始使用一门新语言时,开发者首先会查看SDK(软件开发工具包)的支持情况。亚马逊云科技提供了各种语言的SDK,具有一致的功能特征。这些SDK包含库,可以帮助开发者更快地使用亚马逊云科技服务来构建应用。

Fuzz解释了使用SDK时的典型请求生命周期,即调用者代码连接到SDK客户端,将对象序列化为HTTP请求发送到亚马逊云科技,然后从服务返回的响应被SDK解序列化为可被调用代码使用的对象。这种抽象层使得开发者在他们的首选语言中工作,而不需要处理更底层的网络调用。

亚马逊云科技的Go SDK已经存在了很长时间,它提供了加速应用开发的实用工具。Fuzz强调,SDK版本现在与Go语言版本保持一致,以确保兼容性。但是,开发者还需要确定如何将他们的Go应用部署到哪里和如何部署。

在计算领域,亚马逊云科技通过EC2提供虚拟机服务,通过ECS和EKS提供容器服务,并采用Fargate实现无服务器架构。此外,App Runner还实现了混合模型。Fuzz表示,App Runner是一种专门为Web应用程序和API设计的全托管服务,它不仅涵盖了容器的部署,还包括流量路由和自动扩展。

App Runner已经支持Go语言的运行时。开发者只需将代码库指向App Runner,由App Runner负责打包、部署和提供安全的端点。这种方式相较于单独管理构建管道和基础设施,可以减少许多额外的开销。

Fuzz进一步解释了App Runner与Fargate之间的区别。App Runner负责更高级别的栈级操作,包括负载均衡器和语言运行时。开发者只需关注应用代码。通过一个简单的配置文件,可以定义运行时、构建步骤和应用入口点。

除了基本的部署需求外,应用程序通常还需要持久化数据。亚马逊云科技提供了多种专门设计的数据库,包括关系型、文档型、图形和其他类型。Go SDK可以直接与DynamoDB、Timestream和Neptune集成。此外,ElastiCache、Amazon Aurora和Amazon RDS for PostgreSQL和MySQL等服务也支持Go开发者使用的开源驱动程序。对于文档数据库,Amazon DocumentDB和Amazon Keyspaces提供了与MongoDB和Apache Cassandra API兼容的选项,使得现有客户端能够连接。

在处理数据存储之后,Fuzz指出许多应用程序还需要数据处理和分析功能。诸如Amazon MSK、Amazon Kinesis和Amazon OpenSearch Service等服务可以通过Kafka、Kinesis和OpenSearch客户端直接从Go中使用。另外,将这些服务作为事件源,可以用于编写Go的亚马逊云科技Lambda函数。

例如,DynamoDB Streams可以触发Lambda函数来处理域驱动设计中的数据修改。Fuzz表示,Lambda自定义运行时是处理Go函数的理想选择。通过将函数封装为直接调用Lambda运行时API的二进制文件,而不是使用托管的语言运行时,可以提供较小的部署。

近期,Lambda 已支持 Amazon Linux 2023 作为其运行时环境。这意味着任何能编译成本地二进制文件的语言,如 Go 和 Rust,都能受益于此。Fuzz 详细介绍了如何利用 Docker 镜像部署 Lambda 函数。这个过程包括一个多阶段构建流程,从应用程序编译开始,然后将其二进制文件复制到 Amazon Linux 或其他基础镜像中。

在人工智能应用领域,虽然 Python 通常被视为首选语言,但 Go 开发者也有机会参与。Amazon CodeWhisperer 为各种语言的开发者提供了实时代码建议和补全功能,包括 Go。要构建对话式 AI 应用,可以使用 Amazon Lex 和 Amazon CodeGuru 作为可选方案。

Fuzz 强调了 Amazon DevOps Guru 和 Amazon CodeGuru 这两项服务的重要性,前者可以帮助检测操作问题,后者则用于代码审查和推荐改进。亚马逊云科技工具包插件将这些服务集成到 IDE 中,提升了开发者的工作效率。

针对生成性 AI,Fuzz 介绍了 Amazon Bedrock,它提供一个用于大型语言模型的 API。通过 Bedrock SDK 和 Go 运行时,应用程序可以轻松调用这些 API。例如,Abhishek 发表了一篇详细的指南和博客文章,讲述了如何使用 Bedrock 构建 Go 原型。

Fuzz 还提到了一个常见需求,即实现具有历史记录和上下文跟踪的完整生成性应用。LangChain(一个基于 Python 的平台)可以通过提供不同功能的模块来满足这一需求。现在,Go 版本也已经推出,可以与 Bedrock 集成并管理对话状态。

在演示过程中,Fuzz 展示了一个使用 Go 构建并在 App Runner 上部署的短链接应用。它使用 DynamoDB 存储短代码和原始 URL 之间的映射。他展示了创建短链接、访问它们以及删除映射的过程。

接下来,一位专家展示了一个在Lambda上运行的Go语言的对话型AI原型,该原型采用了Bedrock来实现其生成式功能。为了存储聊天历史记录,它使用了DynamoDB,而LangChain则负责保持对话的上下文。在与一个名为Claude的模型进行了简短互动后,Fuzz展示了这个AI能够回忆之前的对话内容。

Fuzz向Claude介绍自己时说:“你好,我是Fuzz。” Claude回应道:“你好,Fuzz。我叫Claude。很高兴认识你。” 当Fuzz稍后询问他的名字时,Claude能够准确地回忆并回答:“你的名字是Fuzz。”

在回顾代码时,Fuzz详细解释了与Bedrock集成的各个组件,包括调用模型并实时传输响应的过程。他表示愿意在之后为对生成式AI感兴趣的开发者分享更多的详细信息。这次演示展示了一些可能的应用场景,这些应用场景可以利用亚马逊云科技的服务来构建。

在工具和生产效率方面,Fuzz提到了Amazon CodeWhisperer作为一个选项,它可以根据上下文提供代码建议和完成工作。Amazon DevOps Guru可以检测潜在的运维问题并发出警报。亚马逊云科技Toolkit插件可以与IDE集成,提高开发者的体验。

尽管相较于Python和JavaScript等语言,CodeWhisperer对Go的支持目前还有限,但Fuzz认为它仍然有助于发现导入和开始编写的代码片段。他展示了一个Demo,展示了CodeWhisperer如何为一个S3文件上传用例提出相关的亚马逊云科技SDK导入和客户初始化的建议。

正如Fuzz所总结的那样,亚马逊云科技为Go开发者提供了一揽子服务和功能,从SDK和部署到最先进的人工智能。通过计算、数据库、分析、无服务器等等,开发人员可以在亚马逊云科技上高效地构建各种类型的应用程序。Fuzz再次强调,他演讲中提到的所有参考资料都将被共享,以便进一步学习。

下面是一些演讲现场的精彩瞬间:

亚马逊云科技为Go应用程序提供了支持,包括无服务器开发和部署服务,从而让开发者无需管理底层基础设施。

由于其卓越的性能、可移植性和向后兼容性,Go已成为构建云原生应用的热门选择。

行业领导者们强调了亚马逊云科技的软件开发工具包(SDK)如何在多种编程语言间提供一致的功能集,使开发者能够轻松地开始基于亚马逊云科技的项目。

通过SDK客户端处理网络调用的能力,开发者可以专注于他们的应用逻辑。

此外,诸如ElastiCache、DocumentDB和Keyspaces等亚马逊云科技服务支持开源数据库协议和库,使得在内部部署和云环境之间实现代码可移植性成为可能。

领导者们还探讨了如何使用亚马逊云科技版本2以及S3存储桶的相关问题。

总结

一位演讲者发布了一份关于如何使用Go语言在亚马逊云科技(亚马逊云科技)上构建应用程序的开发人员指南。他首先解释了为何Go语言非常适合云原生应用,原因在于其卓越的性能、丰富的标准库以及能编译成单一可执行文件的特点。

接下来,他概述了将Go应用程序部署到亚马逊云科技上的多种方式,包括使用虚拟机、容器化技术、无服务器功能的Amazon Lambda以及最新推出的App Runner服务。他强调,App Runner是Go开发者的理想选择,因为它原生支持Go运行时。

至于数据存储,演讲者讨论了亚马逊云科技上专为特定需求设计的各种数据库,这些数据库均支持Go SDK。同时,他还介绍了诸如Amazon MSK和Kinesis等数据处理选项,可与采用Go编写的Lambda函数无缝集成。

演讲者还演示了一个简单的Go网页应用程序,该程序已在App Runner上部署并使用DynamoDB进行数据存储。他展示了App Runner如何与GitHub仓库连接并自动完成部署过程。

最后,演讲者简要介绍如何在Go应用程序中利用亚马逊云科技的AI服务,例如通过Bedrock SDK和LangChain使用的亚马逊Bedrock。他还展示了一个与Lambda和Bedrock协同工作的聊天机器人示例,用户可以与之进行实时互动。

演讲原文

https://blog.csdn.net/just2gooo/article/details/134828454

想了解更多精彩完整内容吗?立即访问re:Invent 官网中文网站!

2023亚马逊云科技re:Invent全球大会 - 官方网站

点击此处,一键获取亚马逊云科技全球最新产品/服务资讯!

点击此处,一键获取亚马逊云科技中国区最新产品/服务资讯!

即刻注册亚马逊云科技账户,开启云端之旅!

【免费】亚马逊云科技“100 余种核心云服务产品免费试用”

【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用”

亚马逊云科技是谁?

亚马逊云科技(Amazon Web Services)是全球云计算的开创者和引领者,自 2006 年以来一直以不断创新、技术领先、服务丰富、应用广泛而享誉业界。亚马逊云科技可以支持几乎云上任意工作负载。亚马逊云科技目前提供超过 200 项全功能的服务,涵盖计算、存储、网络、数据库、数据分析、机器人、机器学习与人工智能、物联网、移动、安全、混合云、虚拟现实与增强现实、媒体,以及应用开发、部署与管理等方面;基础设施遍及 31 个地理区域的 99 个可用区,并计划新建 4 个区域和 12 个可用区。全球数百万客户,从初创公司、中小企业,到大型企业和政府机构都信赖亚马逊云科技,通过亚马逊云科技的服务强化其基础设施,提高敏捷性,降低成本,加快创新,提升竞争力,实现业务成长和成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值