小队健康检查对于企业评估其员工的团队化学反应至关重要。它们通过使管理者能够衡量凝聚力并了解员工关注的领域,为更好的工作环境铺平了道路。但是,要充分利用它们的优势,就需要配备一个能够提供即时反馈的数据库。
这些应用需要即时响应,这就是为什么这个 Launchpad App 使用 Redis 创建了自己的小队健康检查应用程序 Feature Creep。借助 Redis,高效的数据传输是无缝的,创建了一个更加互联互通的组件系统,使反馈能够立即实现。
高效数据的加速促进了小队健康检查系统的开发,该系统可以由各种规模的员工部署。
让我们来看看他们是如何做到这一点的。我们在 Launchpad 中也有各种突破性的应用程序供您入门,无论您喜欢哪种框架和语言。
让我们深入探讨如何使用 Redis 构建小队健康检查系统并将报告发送到 Discord。我们将通过按时间顺序完成每个步骤,揭示 Redis 的每个组件是如何部署的。
现在让我们看看您需要的不同组件、它们的功能以及实施步骤
让我们看看用于该项目的整体架构和组件。
1. 用户注册并登录以访问 Feature Creep 仪表板 UI。 RedisJSON 在后台用于存储会话详细信息。
2. 然后,用户在仪表板上为其团队创建一个“小队”。详细信息使用 RedisJSON 以 JSON 文档的形式存储。他们可以通过可以通过社交媒体或其他应用程序(例如 Microsoft Teams、Slack 等)共享的链接邀请其他人加入他们的小队。
一旦其他成员接受,他们就可以访问仪表板。在一个会话中,每个小队成员都会被问到一些问题,他们可以对这些问题回答正面、负面或中性。用户从默认问题开始,但也可以使用 RediSearch 添加自己的问题。
3. 每次会话后,RedisGears 开始对数据进行后台处理。
4. 然后使用 Redis Streams 来处理传入的数据。
5. 后台处理完成后,报告将发送到 Discord,数据将保存到 RedisTimeSeries。
git clone https://github.com/redis-developer/feature-creep
如果您不需要生产级设置,我们建议在开发模式下使用 Docker Compose 安装方法。这将允许您跳过部署 AWS 身份验证堆栈。启动应用程序的最简单方法是使用以下 Docker Compose 文件
在开发模式下,对 API 的任何调用都会自动进行身份验证。这意味着数据库中任何时候只能存在 1 个用户。 运行以下命令以启动所有这些容器
docker-compose -f docker-compose-dev.yml up -d
这样做将启动 Redis 以及服务器容器和客户端容器。
对于生产环境,身份验证将通过 AWS Cognito 提供的 JWT 进行。如果您想了解有关如何设置此程序的更多详细信息,请访问项目 GITHUB 存储库下的 infra/auth 文件夹。
运行以下命令以启动服务器端组件
docker-compose up -d
cd server
npm ci # Use "ci" so it respects the lockfile
# When running "npm start" you will be running in production mode
npm run build && npm start
# When running "npm run dev" you will be running in development mode
npm run dev
“npm ci”命令对应用程序的所有依赖项执行全新安装。 “npm run dev”命令 用于在开发模式下查看或运行已处理的应用程序,以查看活动更改。
# Make sure a redis instance is running
# Warning: the tests will write and remove data from Redis
# DO NOT run this on a production database!
cd server
npm test
运行以下命令以启动客户端组件:
cd client
npm ci # Use "ci" so it respects the lockfile
# You might need this if you are using npm v7+
# It's a weird dependency issue
export SKIP_PREFLIGHT_CHECK=true
# Set the location of the GraphQL API (aka the server folder)
export REACT_APP_APOLLO_HTTP_URI="https://:4000"
# The hostname where the app will run
export REACT_APP_HOSTNAME="https://:3000"
npm start
打开 https://:3000 以查看 feature-creep 仪表板
广泛使用了 Typescript。GraphQL API 是强类型的,这使您可以在前端利用它。这些生成的类型已提交到存储库。仅当 API 中发生更改时才运行此命令。
npm run graphql:generate
Storybook 帮助隔离地开发组件。
npm run storybook
# Visit https://:6006/
服务器启动后,您可以在 https://:4000/ 找到 GraphQL Playground。在开发模式下,您无需提供任何身份验证。
包含使用 Apollo 创建的 GraphQL API。当应用程序运行时,您可以访问相同的 URL 以查看 API Playground。
身份验证堆栈
如果您需要生产级设置,则需要设置身份验证堆栈,这是一个 AWS CDK 部署 的 Cognito 用户池。AWS CDK 应用程序是一个用 TypeScript、JavaScript、Python、Java 或 C# 编写的应用程序。请记住,它们中的每一个都使用 AWS CDK 来定义 AWS 基础设施。
应使用 Cognito,因为它将为您提供即时身份验证,从而使您能够更高效地创建功能。更重要的是,Cognito 可以处理一系列任务,包括电子邮件验证、忘记密码提醒等等。
请注意,部署此程序需要有效的 AWS 账户。请按照以下步骤配置 AWS
在生产模式下,您必须首先获得有效的 JWT。您可以访问 Cognito 登录页面以从重定向 URL 中获取令牌。在底部的 Playground 页面上,您会看到一个“HTTP 标头”选项卡。确保在此处使用访问令牌,而不是 ID 令牌。
{
"Authorization": "Bearer <jwt>"
}
您可以在 server/src 文件夹中找到后端代码。
RedisGears 包含所有 RedisGears 函数。gears.ts 文件包含一个与 RedisGears 交互的客户端。它支持直接运行函数和注册后台函数。
结果被推送到 Redis Streams 以被
包含非常基本的 ORM。这是大多数业务逻辑所在的位置。
包含一个客户端和用于搜索现有问题的逻辑。当用户创建一个会话并添加自己的问题时,它们会被 RedisSearch 存储和索引。稍后想要搜索问题的用户会将这些问题视为推荐。这些可以轻松添加到新会话中。
包含一个客户端和用于 Redis TimeSeries 集成的逻辑。会话结束后,Redis Gears 会进行后台处理。该模块处理这些结果。它使用 Redis Streams 来处理传入的数据。
在 integration 文件夹中,您会找到模拟客户端如何使用 API 的脚本。还有针对各个文件的测试。 这些测试文件位于被测试文件的旁边。
创建你的小队后,你会进入配置页面。在页面底部,你会看到一个 Discord URL 输入框。复制并粘贴你的 Discord URL 到该框中,以设置新的 Discord 令牌。之后,你会在你的一个 Discord 频道中收到一条测试消息。
一旦用户完成一个会话,消息将被发送到 Discord。下面是一个发送到 Discord 的报告示例。
快速、即时且高效,这款启动平台应用利用 Redis 以极快的速度传输数据的能力,创建了一个强大的小队健康检查系统。用户可以自由定制问题,这些问题可以根据他们的需求量身定制,使他们能够设计个性化的解决方案。
从开始到结束,Redis 组件使数据传输顺畅高效,从而产生了即时反馈。你可以在 Launchpad 上查看完整的应用程序,以及我们拥有的许多其他令人兴奋的应用程序。
Niek Candaele
Niek 是一位充满热情的软件工程师,在 RightCrowd 工作。要了解更多他的作品和他在 GitHub 上的活动,你可以点击这里查看他的个人资料。