Clojure

Stitch

2018年4月19日

Stitch

您使用 Clojure 或 ClojureScript 构建什么产品或服务?

Stitch 是一种提取-转换-加载 (ETL) 服务,它可以连接到 Salesforce 和 Facebook Ads 等工具,并将来自这些平台的数据整合到一个中心位置(数据仓库)中,以便进行分析。

您使用 Clojure 多久了?

自 2016 年公司成立以来,我们就在生产环境中使用 Clojure。我们许多早期团队成员之前在其他工作中都使用过 Clojure,因此它是一个显而易见的选择。

您的团队规模有多大?

我们有 12 名工程师使用 Clojure 开发后端服务。

您最喜欢使用哪个 Clojure 库?

我们使用了一些不同的原生 Clojure 库,例如 ring、compojure 和 http-kit。但是,当某个特定目的存在支持良好的 Java 库时,我们倾向于使用 Java 版本并依赖 Clojure 优秀的 Java 互操作性 支持。例如,我们使用 Java 客户端库来访问各种 AWS 服务、Apache ZooKeeper 和 Apache Kafka。

您最喜欢 Clojure 或 ClojureScript 的哪个特性?

有很多,但其中几个特别突出

  • 不变性。我们尽量依赖引用透明性,这使得我们的应用程序更容易测试和理解。

  • 交互式开发。我们许多人使用 Emacs 和 CIDER,这使我们能够以交互方式开发、调试和测试。

您的技术栈是什么?

我们的 Web 服务运行在 AWS EC2 实例上,这些实例位于 ELB 负载均衡器后面。我们使用 ring 和 Jetty 作为我们的 Web 服务器。我们大多数较新的数据库都是 Postgres RDS。我们的一些应用程序使用 Redis 进行缓存。

我们实际的数据管道由一个 Clojure Web 服务提供支持,该服务将数据存储到 Kafka 中,然后是几个更小的 Clojure 服务,这些服务将数据路由、转换并加载到其目标位置。

使用 Clojure 或 ClojureScript 对您的业务有什么价值?

Clojure 使我们能够开发出健壮的应用程序,这些应用程序比用其他语言编写时更简单、更小、更容易理解。我们可以使用整个 Java 库生态系统。它允许我们的开发人员通过连接到正在运行的 JVM 并执行代码来快速调试问题。并且将 clojure.test 与 nREPL 连接的交互性结合使用,使我们能够快速进行原型设计,并形成一个紧密的迭代 TDD 循环。

如果您想分享您的 Clojure 故事,请 填写此表单