2018年4月27日
ClojureまたはClojureScriptを使用してどのような製品またはサービスを構築していますか?
CloudRepoは、フルマネージドのクラウド リポジトリ マネージャーです。Leiningen、Boot、Mavenなどの依存関係管理ツールを使用するソフトウェア開発チーム向けのソフトウェアアーティファクトを保存します。
最も作業していて楽しいClojureライブラリは何ですか?
開発プロセスを本当に堅実なものにし、役立ったライブラリはたくさんあります。非常にシンプルなAWS Dynamo DBアクセスにはFaradayを使用しています。すべてのHTTPクライアントのニーズ(テストなど)にはclj-httpを使用し、JSON解析にはcheshireが魅力的に動作します。
しかし、私たちが使用した中で最も目を見張るような、教育的なライブラリはRingです。HTTPリクエストを単純なデータとしてモデル化し、システムに渡すことができるという、パラダイムシフトでした。リクエストをデータとしてモデル化できることに気づいた後、必要に応じて変換を行いながら、リクエストをシステムに流すことができるようになりました。これは私たちにとって重要な学習であり、データフローに基づいてシステムを設計する方法についてより深く理解するのに役立ちました。詳しくはこの記事で詳しく説明しています。
最近では、specの使用が本当に素晴らしいです。世代別テストのアイデアは、私たちにとって革新的でした。また、関数コントラクトを定義し、プログラムを検証するための、静的型付けシステムよりも優れたものだと考えているものを提供してくれました。データの「形状」または特定の値に基づいて検証できるようになりました。これは、従来の型システムが提供するものよりもはるかに優れています。
Clojureのお気に入りの機能は何ですか?
マップを渡してシステムに流すことで得られるパワーが大好きです。->関数と関数チェーンを使用してエンドポイントを実装できる場合、Clojureでプログラミングがどれほどエレガントになるかにいつも驚かされます。
システムの状態をマップとしてモデル化することも啓発的でした。大きなオブジェクト階層ではなく、データのマップを見ることで、システムをよりよく理解することができます。不変性と組み合わせることで、Clojureは楽しく作業できます。
使用しているスタックは何ですか?
私たちは100%AWSで構築されています。アーティファクトのストレージにはAmazon S3を、メタデータにはDynamoDBを活用しています。
お客様に高可用性を実現するために、CloudRepoはAmazon Elastic Container Servicesで実行されている複数のホストに分散されたDockerコンテナで実行しています。バックエンドサービスは100%Clojureで記述されています。JVMの信頼性とClojureのような言語のパワーを活用できるのは素晴らしいことです。
Clojureはビジネスにとってなぜ貴重なのですか?
Clojureは、より少ない労力でより多くのことを実現できるため、私たちのビジネスにとって貴重です。私たちは非常に小さなチームですが、通常は数時間以内に機能を追加できます。このパワーを実現できるのは、システムにデータを流し、新機能の追加は、そのフローに最適な接続場所を見つけることだけになる傾向があるためです。それが決定したら、不変性のおかげで、コードの他の領域の状態に影響を与えることを心配することなく、接続できます。
Clojureのストーリーを共有したい場合は、このフォームにご記入ください。