2018年12月20日
ClojureまたはClojureScriptをどれくらい使用していますか?
2012年初頭から。
その時点で、Cognicianはビジネスとして構築する価値のあるものを持っていることを数年かけて証明し、その後、実際にそのビジネスを構築しなければなりませんでした。
以前のスタックは、Flash/AIRアプリ(覚えていますか?)とPHP/SQLバックエンドでした。私はそのようなアプリを十分に構築してきたので、大規模なオブジェクト指向プロジェクトをうまくスケーリングできるほど、賢くもスキルフルでもないことを知っていました。新しい視点が必要でした。
clojurebook.comと、RichやClojureのIRCチャンネル、Googleグループの素晴らしい人たちによるいくつかの素晴らしい講演のおかげで、パラダイムを切り替え、プログラミングを最初からやり直すための十分なサポートを得ることができました。
ほぼ7年後、もし私たちがより伝統的なものを選んでいたら、今でもビジネスを続けていなかっただろうと完全に確信しています。
ClojureまたはClojureScriptを使用しているチームの規模はどのくらいですか?
10人が定期的にClojure/ClojureScriptをgitにコミットしていますが、ほぼ全員の40人がEDNを知っています。 :-)
ClojureまたはClojureScriptを使用して構築している製品またはサービスは何ですか?
Cognicianは、世界中の職場の人々に、楽しく人生を変えるような学習体験を提供することを目指しています。
このプラットフォームと、それが可能にする学習体験は、人々の行動が強力なアイデアと深く感じられる感情によって刺激されるときに、人々は素晴らしいことができるという考えに基づいています。
Cognicianの中心は、デジタルコーチングSaaSプラットフォームです。「ソクラテス式、大規模に」と考えてください。
私たちは、学習体験のカタログ、これらの体験を構成するコンポーネント、そしてクライアントの学習ニーズに合わせてこれらの体験を構成できるプラットフォームを構築しました。
最も作業が楽しかったClojureまたはClojureScriptライブラリは何ですか?
Datomicは、学習、使用、および教育に非常に役立ちました。解決する問題に非常に適した設計であり、作業するのが非常に楽しいです。
Datomicのアーキテクチャのおかげで、2つの大きな頭痛の種を回避することができました。
並行性 - ウェブサーバーインスタンスはブラウザークッキーとDatomicのみを共有します。バックエンドサービスは、ウェブサーバーとDatomicデータベースのみを共有します。データベースを値としてプログラミングすることで、これらすべてを楽しく行うことができました。
ビューのキャッシング - システム上のすべてのビューはソースデータからライブでレンダリングされるため、これについてはまったく心配する必要がありませんでした!
毎日使用し、学んできた他の多くのライブラリがあります!
ClojureまたはClojureScriptを使用することで、最も価値があるのは何ですか?
Clojureのデータ指向性により、適切に名前を付けることを強制され、それがドメインの理解を深めることにつながります。その合成可能な性質により、データの定義をサポートするツールと動作の実装をいつ使用するのかを決定できます。「唯一の正しい方法」を強制されることはありません。
ブラウザ、サーバー、ネットワーク、データベースなど、あらゆる場所で単一の言語で考えることができることは、非常に価値があります。自分の物理学を選べるようなものです。しばらくこのように作業した後、興味深いことが起こります。言語ではなく、ドメインを直接見ることができるようになります。マトリックスを理解できるようになるようなものです。 :-)
人材の面では、Clojureは、私たちがこれまで、そしてこれからも協力できる、最も素晴らしいクリエイターと問題解決者を引きつけてきました!
ClojureまたはClojureScriptのお気に入りの機能は何ですか?
REPLを使用したプログラミングは人生を変えるものです。今日の現実世界の課題を解決するためにソフトウェアを使用するビジネスに非常に適しています。
その後、Clojureには動的な性質の欠点を軽減する2つの方法があります。まずデストラクチャリングがあり、これは現在使用しているデータの使用方法を明確にするのに役立ちます。次にspecがあり、比較的少ない初期投資で利用できる多くの異なる利点があります(すべてオプトイン!)。
ClojureまたはClojureScriptを使用することがビジネスにとって価値があるのはなぜですか?
それは私たちがそれを使用するときの速度に関するものです。Clojureを使用することで、私たちは以下を行うことができました。
急速な変化に対処する - 私たちの履歴には、私たちが「急転直下」でアプローチを完全に変える必要があった多くの重要な瞬間があります。コードを最初から少なくすることは役立ちますが、言語、データベース、または使用しているフレームワークの仮定と戦う必要がないことも、「白紙に戻って」やり直すのに役立ちました。
迅速に動作するシステムを取得する - 動的、不変、そしてLispyな性質のおかげで、動作する何かを得るために多くのClojureを書く必要はありません。ニーズが明確になったら、システムの構築は迅速に行うことができます。
面白い逸話2つを紹介します。
約10万行の運用Clojure/ClojureScriptコードがあります。このコードが行っているすべてのことを考えると、非常に少ないです。
データベースにある1600個程度のDatomic識別子のうち約400個が非推奨としてマークされており、これにより、私たちがどれだけ構築し、その後破棄したかがわかります。
スタックは何ですか?
私たちは、Clojure、ClojureScript、Datomic、Sassで定期的に開発しています。
BIツールが対話するための派生データSQLストアがあります。
AWSでホスティングし、Route 53、EC2、ALB、S3、CloudFrontという「舗装された道」を使用しています。驚くようなことはありません!
CIにはBuildkite、監視にはDatadog、エラーログにはSentryを使用しています。
おそらく私たちのスタックで最も興味深いのはCIシステムです。私たちは、正しいことを行うことを容易にするために多くのエネルギーを投資しました。共通の構成コードに基づいた複製環境があり、gitブランチのテストサーバーを作成し、サンドボックスに運用データを復元してテストできます。すべてボタンをクリックするだけで利用できます。
15分以内、場合によってはわずか5分以内に新しいコードをライブにすることができます。より迅速な処理が必要な状況では、リモートREPLがあります。 :-)
Clojureのストーリーを共有したい場合は、このフォームに記入してください。