本日、Go用Momentoクライアントの1.0リリースを発表できることを嬉しく思います。
Momentoでは、シンプルさは私たちの北極星のひとつです。サーバー側でもクライアント側でも、Momentoの体験はシンプルで楽しいものでありたいと考えています。サーバー側では、キャッシュを作成して移動するだけで、スケーリングや運用の心配はすべて私たちにお任せください。クライアント側では、キャッシュとやりとりするバグフリーのコードをシンプルかつ直感的に書くことができ、チューニングやスレッドセーフティ、その他の難解な懸念について考えるのに多くの時間を費やす必要がないSDKを持つことを意味します。
そのために私たちはここ数週間、Goクライアント・ライブラリに磨きをかけ、APIがクリーンで作業しやすいことを確認し、Go環境から簡単に利用できるようにしてきました。そして、完成したものを皆さんと共有する準備が整いました!
Goクライアント・ライブラリのハイライト
One client
momento.CacheClient
はスレッドセーフで、ネットワーク接続の管理をすべて行います。スレッドセーフやコネクションプールを心配する必要はありません。
バグのないコードのための発見可能なレスポンス・タイプ
APIコールから得られるレスポンスには複数のタイプがあります。例えば、キャッシュから値を取得するために Get
リクエストを行った場合、レスポンスは *responses.GetHit
または *responses.GetMiss
になるかもしれません。どちらが返ってくるかによって、レスポンスにアクセスする必要があるプロパティは大きく異なります。(例えば、GetHit
ではキャッシュからのデータを含むr.ValueString()
関数が公開されますが、GetMiss
では公開されません)。 Momento GoクライアントはTypeスイッチを使用して、これらのケースごとに強く型付けされたレスポンスオブジェクトを提供します。実行時よりもコンパイル時の方がバグを発見しやすいものです!
ネイティブなGoのエラー
Goエコシステムのエラーパッケージを活用するため、Go SDKではネイティブのGoエラー型を使い続けています。レスポンス・タイプと組み合わせることで、エラーが返されたときにそれが本当にエラーであることを確信できます。また、開発者としては、最後に返されたエラー値がnil
かどうかをチェックするだけで、使い慣れた方法でGoコードを書き続けることができます。また、いくつかの標準エラー・タイプが用意されているので、必要に応じて、それぞれのエラーを制御された方法で処理することができます。たとえば、タイムアウトエラーをカスタムで処理すると、次のようになります:
if err != nil {
var momentoErr momento.MomentoError
if errors.As(err, & momentoErr) {
if momentoErr.Code() != momento.TimeoutError {
// handle timeout error in custom way
}
}
}
お気に入りのGoロギングフレームワークと統合する
Momento Go クライアントはシンプルなロギングインターフェイスを提供しており、任意のロギングフレームワークと統合することができます。デフォルトのロガーは Go std lib log
パッケージを使用しますが、MomentoLoggerFactory
を渡すことで、アプリケーションの他の部分と同じ宛先にログをルーティングするように Momento クライアントを設定できます。 この例では Logrus と統合する方法を示していますが、 zerolog や zap、その他のロギングフレームワークにも簡単に適用できます。
ビルド済みコンフィギュレーション
ネットワーク・クライアントのチューニングは大変な作業で、最適な設定は環境によって大きく異なることがあります。例えば、ラップトップからエクスプローラーやデバッグを行うのに最適な設定と、クラウド上の低レイテンシーの本番環境で必要な設定は、おそらく同じではないでしょう。物事をシンプルに保つために、Momento Goクライアントには、このようなさまざまなタイプの環境向けに設計された、いくつかの構成があらかじめ用意されています。しかし、チューニングにエンジニアの時間を費やす必要がないように、90%のケースをカバーできるように最善を尽くしました。
Goクライアントを今すぐお試しください
今すぐ1.0バージョンのMomento Cache Goクライアントを使い始めることができます。まだ無料の Momento キャッシュを作成していない場合は、Momento getting started docs をご覧ください。その後、GitHub の Go クライアントを始めるためのドキュメントをご覧ください!
気に入っていただければ幸いです!もし気に入っていただけないようでしたら、ぜひご意見をお聞かせください!GitHub issueを発行するか、support@momentohq.com