2018年12月20日
您使用 Clojure 或 ClojureScript 多久了?
从2012年初开始。
在那时,Cognician 已经花费了几年的时间来证明我们拥有值得建立业务的东西,然后我们才真正开始构建该业务。
我们之前的技术栈是一个 Flash/AIR 应用程序(还记得吗?)以及一个 PHP/SQL 后端。我构建了足够多的此类应用程序,知道自己不够聪明或不够熟练来构建能够很好扩展的大型面向对象项目。我知道我需要一个全新的视角。
感谢clojurebook.com以及 Rich 和 Clojure IRC 频道和 Google Groups 中的优秀人员发表的许多精彩演讲,我获得了足够的支持来切换范式并重新学习编程。
现在差不多七年过去了,我完全相信如果我们选择更传统的东西,我们现在将无法继续经营。
您使用 Clojure 或 ClojureScript 的团队规模有多大?
有10个人定期将 Clojure/ClojureScript 提交到 git,但我们几乎所有40个人都了解 EDN。 :-)
您使用 Clojure 或 ClojureScript 构建什么产品或服务?
Cognician 旨在为全球职场人士提供令人愉悦、改变人生的学习体验。
该平台及其支持的学习体验建立在这样一个理念之上:当人们的行为受到强大思想和深刻情感的启发时,他们能够成就伟大的事情。
从本质上讲,Cognician 是一个数字教练 SaaS 平台。您可以将其视为“苏格拉底方法,规模化”。
我们构建了一个学习体验目录、构成这些体验的组件以及一个平台,使我们能够配置这些体验以满足客户的学习需求。
您最喜欢使用哪个 Clojure 或 ClojureScript 库?
Datomic 学习、使用和教授都非常有趣。它非常适合解决它所针对的问题,并且使用起来非常愉快。
由于 Datomic 的架构,我们能够避免两个主要难题
并发性 - 我们的 Web 服务器实例仅共享浏览器 Cookie 和 Datomic。我们的后端服务仅与 Web 服务器共享 Datomic 数据库。使用数据库作为值进行编程使所有这些操作都变得轻松愉快。
视图缓存 - 我们根本不必担心这个问题,因为我们系统上的每个视图都是从源数据实时渲染的!
我们每天都会使用和学习许多其他库!
使用 Clojure 或 ClojureScript 为您带来最大价值的是什么?
Clojure 的数据导向迫使您正确处理命名,这反过来又迫使您很好地理解您的领域。其可组合性允许您决定何时使用支持数据定义的工具与支持行为实现的工具,而不是强迫您使用“唯一正确的方式”。
能够在任何地方使用单一语言思考 - 即浏览器、服务器、网络和数据库 - 具有巨大的价值。感觉有点像可以选择自己的物理学。在您以这种方式工作一段时间后,会发生一些有趣的事情 - 您不再关注语言,而是直接关注领域。这有点像能够理解《黑客帝国》。 :-)
在人员方面,Clojure 吸引了一些我们曾经拥有 - 并继续拥有 - 荣幸与之合作的最优秀的创作者和问题解决者!
您最喜欢的 Clojure 或 ClojureScript 功能是什么?
使用 REPL 进行编程会改变生活。它非常适合当今使用软件解决现实世界问题的业务。
为什么使用 Clojure 或 ClojureScript 对您的业务有价值?
这与我们使用它的速度有关。使用 Clojure 使我们能够
应对快速变化 - 在我们的历史上,有很多关键时刻,我们需要能够“迅速转向”并完全改变我们的方法。一开始代码越少越好,但不必与语言、数据库或我们正在使用的某些框架中的假设作斗争也帮助我们“从头开始”并重新开始。
快速获得可工作的系统 - 由于其动态、不可变和 Lisp 特性,您无需编写大量 Clojure 代码即可使某些东西工作。一旦需求明确,构建系统就会很快。
这里有两个有趣的事实
我们大约有 10 万行生产 Clojure/ClojureScript 代码。考虑到这段代码正在执行的所有操作,这非常少。
在我们数据库中大约 1600 个 Datomic 标识符中,大约 400 个被标记为已弃用,这有助于说明我们构建了多少内容以及自那时以来已弃用了多少内容。
您的技术栈是什么?
我们定期使用 Clojure、ClojureScript、Datomic 和 Sass 进行开发。
我们有一个派生数据 SQL 存储,供 BI 工具与之交互。
我们在 AWS 上托管,使用他们的“铺好的道路”:Route 53、EC2、ALB、S3、CloudFront。没什么奇怪的!
我们使用 Buildkite 进行 CI,使用 Datadog 进行监控,使用 Sentry 进行错误记录。
我们技术栈中最有趣的事情可能是我们的 CI 系统 - 我们投入了大量精力使其易于执行正确的操作。我们基于通用配置代码创建了重复的环境,我们可以为 git 分支创建测试服务器,并且可以将生产数据还原到沙盒中进行测试 - 所有这些都只需点击一个按钮即可完成。
我们可以在 15 分钟内将新代码上线,有时甚至只需 5 分钟。对于需要更快周转的情况,我们有一个远程 REPL。 :-)
如果您想分享您的 Clojure 故事,请填写此表单。