5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Spring Fest 2018に参加して気になった技術

Last updated at Posted at 2018-11-20

はじめに

Spring Fest 2018に参加し、いくつかのセッションを聞いてきました。
その中で「もっと知りたい」「自分の開発にも取り入れてみたい」と思った技術などを紹介します。
※どんなセッションがあったか、参加したセッションの内容説明は今回はしません。(Spring Fest 2018 の公式サイトに開催されたセッションとその発表スライドなどがあります。)

まだ途中なのでちょっとずつ更新します

JVM、Kotlin関連

GraalVM

クラウド環境で動かすことを想定すると、すごくメリットがありそうな機能で注目したい。

  • JavaScript, Python, Ruby, R, JVM, JVM言語(Java, Scala, Kotlin, Clojure), C, C++ などの多くの言語が動くVM
  • Nativeイメージにコンパイルすることができ、JVMベースアプリの起動時間やメモリのフットプリントを減らせる
  • Keynoteでのアプリのデモでは、GraalVMとNettyで0.007秒で起動し、メモリ使用量もすごく少ないよという話があった

Spring Fu

KotlinはSpringでも積極的にサポートしてるよ!とのこと。

  • Kofuと呼ばれるKotlin DSLで、アノテーションではなくコードベースの設定記法(functional configuration)で軽量なSpringアプリケーションを作成できる実験的プロジェクト
  • Java向けのJafuというのもある
  • Jafu,Kofuを総称してSpring Fuと呼ぶみたい

ReactiveなWebアプリケーション

この界隈の技術は今後盛んになりそう。Spring 5に備えるリアクティブプログラミング入門がかなり参考になった。

Spring WebFlux

  • ノンブロッキングのイベントループモデルで動くReactive Streamsで作成されたアプリケーションフレームワーク

R2DBC

  • RDBをreactive programming APIで利用できる

RSocket

  • TCP, WebSocket, Aeronのようなバイトストリームト転送で使用するためのバイナリプロトコル

モニタリング

早期的なサービスの問題検知、性能改善や新機能の効果測定の可視化など、継続的なサービス運用をするにはもはや必須と感じた!

Prometheus

  • もともとSoundCloud社で作られた、OSSのシステム監視/アラート通知ツール
  • メトリクス名とkey/valueのペアごとの時系列データを持つ、多次元データモデル
  • 多次元データモデルを利用するための柔軟なクエリが用意されている
  • 分散ストレージに依存しない、自立型の単一サーバノード
  • pull型監視(Prometheus -> 監視対象サーバ)による時系列コレクション
  • ゲートウェイを介したpush型の時系列モデルもサポートしてる
  • O'REILYのSRE本でも紹介されてる
  • バイナリ実行するだけで動く

Micrometer

  • 様々なモニタリングシステムに対して、共通のインターフェースで利用できる機能を提供している
  • SLF4Jのメトリクス版のようなもの
  • Prometheusもサポートしている

Spring Boot Actuator

  • /actuator/***というエンドポイントへアクセスするだけで、Spring Bootアプリケーションのモニタリングなどができる機能
  • 内部でMicrometerを利用している

Grafana

  • 簡単にかっこいいグラフが作れる、ログやデータの可視化ツール

マイクロサービス/分散システムの構築に役立つ技術

Hystrix

  • 分散システム上で発生するレスポンス遅延やサービスダウン時の挙動を制御するライブラリを提供しているOSS
  • サーキットブレーカーの機能が有名
  • 外部サービスの呼び出しの失敗、遅延が発生してリクエストが詰まりそうになった場合、設定したエラーを返したり直前の値をキャッシュしたものを返すなどができる
  • Netflixが開発している

Zipkin

  • 分散システムで、あるリクエストが複数のサーバをまたがって処理している場合にどこで時間がかかっているかなどのデータを収集して原因調査などに役立てることができる

Apache Kafka

  • MQやPub/Subなどを利用できる分散メッセージングシステム

CI周りとか

あまりSpringとは関係ないが面白いなと思ったのでメモ。

ConcourseでのUTをJavaの複数バージョンで並列で実施

  • 将来的にJavaをバージョンアップする時にすぐ移行できるように、実施しているとのこと
  • 実際にTLS証明書のハンドシェイク周りのバグで、jdk11ではテスト失敗し、jdk12では成功するという状態を発見したこともあったらしい

JMeterで毎日負荷テストとレポート出力

  • 綺麗なレポートを作成できるらしい
  • テスト環境などで毎日実施して、Slackでレポート通知などすることもできる
5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?