scala.connpass.com Scala福岡で登壇機会をいただき、お話してきました。 ぼくたちが運用・開発しているMackerel というプロダクトで、2度実施したPlay Frameworkのバージョンアップで得た知見を元に、アプリケーションフレームワークの更新をどうすれば安全にやれるだろうか、という観点でのお話でした。 あえて技術的な側面にはあまりフォーカスせずに、プロジェクトマネジメントの視座からお話することで、ScalaやPlayにかぎらず参考になるような発表になればいいな、ということを意識しました。他の言語の世界をあまり詳しく知らないので、意図通りの発表になったかどうかはわかりませんが…。 Twitterを見たところ、おおむね好評なようでよかったです。 サービスに機能追加しながら運用しつつ、フレームワークやライブラリのバージョンアップについて行くのまじで大変なので、このセ
この記事は Scala Advent Calendar 2016 - Qiita19日目の記事です。私は普段、クラスメソッド株式会社でサーバーサイドエンジニアとして働いています。業務のかたわら、「ScalaとAWSを使ってなにができるか」ということを主なテーマにブログを執筆しています:和田祐介 | Developers.IO 今回は、AkkaとAmazon ECSを触ってみたいと思い、実際にワーカーを構築して処理させてみましたので記録を残します。 なにがしたいか ScalaおよびJavaの並列分散処理フレームワークである Akka におけるアプリ実行環境として、Amazon ECSが選択できることを示します。また、ECSのTask数(コンテナ数)によって処理性能がどう変わるか、ひとつの例を出します。どちらも、単純に使ってみたかったというのが動機です。ただ、Akkaは分散環境で動作することを
こんにちは、CA ProFit-X の松村です。 私たちのプロダクトでは広告配信のシステムにAkkaを使っていて、アプリケーションはAWS/Docker環境に配備して運用しています。今回はAkkaのCluster Shardingという拡張を使って、主にAWS環境を想定した簡単なリアルタイム集計システム(即時集計系)をつくってみたのでその内容をご紹介します。 下ではAkka Cluster Shardingについて簡単に説明した後、試作した即時集計系の実装・永続化と配備について説明します。その後、ワークロードとノード数を増減させた実験とその結果について説明します。 Akka Cluster Sharding について Akka ClusterはGossip Protocolとφ Accrual Failure Detectorという手法に基づいた非中央集権的なノード群構築を行うAkka拡張
Reactive Kafka with Akka Streams 1. Reactive Kafka with Akka Streams Krzysztof Ciesielski Reactive Summit 2016, Austin, TX 2. about.me • Scala developer @ • Editor of ScalaTimes • Open Source (akka-stream-kafka, scala-clippy and other) Premier Consulting Partner 3. akka-stream-kafka • Formely reactive-kafka • A library for accessing Kafka as stages of Akka Streams 4. Apache Kafka a message log 8 7
Akka-Streamでアプリケーションを実装する場合、 SourceとFlowとSinkを組み合わせてRunnableGraphを構築し、runして実行する。 本記事ではAkka-Streamの部品のメインとなるSource, Flow, Sinkを、 Akka-ActorおよびActorPublisher, ActorSubscriberを使う場合/使わない場合でシンプルに実装してみる。 Actorを使わずにRunnableGraphを構築する まず、Actorを使わないAkka-Streamなアプリケーションを実装する。 コード全体はこちら AkkaStreamStandard.scala 今回取り扱うデータ型はこれだけ。
追記:Twitterで、「それって、言語マニアにしかできない技のような気が」という指摘を受けました。自分としては一般的に適用可能な話だと思っていますが、あるいは自分の感性が著しくずれているのかもしれません。その辺承知の上でお読みください。 Scalaは習得が難しい言語だ、とよく言われます。また、実際問題として、Scalaの言語仕様の全体はそれなりに複雑でもあります。しかし、それはたとえばJavaでも言語仕様の全体像を把握するのは難しい話であり、Scalaに限った話ではありません。にも関わらず、Scalaの習得が難しいとよく言われるのはプログラミング言語の学習モデルが誤っているからではないかと最近思うようになりました。そこで、Scala(や他の言語も含めて)のコストを下げるために必要な心得についてちょっと書いてみます。 Scalaはオブジェクト指向言語である これは、Scalaは関数型プログ
「これ、同時にリクエスト飛んできた場合って、どうなるの?」 「2つ登録されちゃいますね…」 はじめに Web APIは、リクエストを受け、処理を終えた後レスポンスを返します。モバイルアプリやウェブアプリとセットで開発しているとつい忘れがちになってしまいますが、同時に同じリクエストが飛んできた場合にどういう挙動をするか ということは常に考慮しておかなくてはなりません。「UI上同時にリクエストが送れないから問題なし」では Web APIの設計が不十分です。別の端末から同時に同じリクエストを送ることも可能ですので、UIとは切り離して考えるべきです。 さて、この状況、GETリクエストについては大きな問題にはならないでしょう。いくらリクエストが来てもサーバ側の状態に変化はないので、負荷対策だけしておけば大丈夫そうです。問題はPUTリクエストやPOSTリクエストといった、サーバ側のリソースに変化を及ぼ
gist.md Haskell vs Clojure The JSON data is in the following format { "Genesis": { "1": { "1": "In the beginning..." , "2": "..." }, "2": { ... } }, "Exodus": { ... }, ... } In JSON, keys aren't ordered and must be strings. The goal is to parse the JSON file, order everything correctly (which means parsing the keys into integers), and produce an array that looks like this: [ ("Genesis", 1, 1, "In
Edit: You may want to have a look at the updated example using Play 2.7 instead of Play 2.4 at Play Framework and Slick example updated Typical nowadays applications need to store some persistent data frequently. And when we talk about persistent storage we are talking about databases. Among the most common applications, we have web applications. And it is uncommon to have a web application that d
Akka 2.4.2 を用いたサンプルコード集です。動作には Java 8 以降が必要です。 Akka requires that you have Java 8 or later installed on your machine. インストール方法は複数提供されています。その一部を記載します。 sbt を利用する方法 maven を利用する方法 Typesafe Platform Activator を利用する方法。Akka が含まれています。 公式ドキュメント (2.4.2) Actors Futures and Agents Utilities Akka HTTP アクターの生成 アクター (スレッド) は生成されると無限ループに入ります。receive したメッセージを逐次処理します。アクター内でアクターを生成することもできます。スレッドセーフにするために、やり取りするメッセージ
Jul 11, 20168 likes3,899 viewsAI-enhanced description This document provides examples of using flatMap and for comprehensions in Scala with different data types like Option, List, State, and Parser. It shows how flatMap allows sequencing operations that return types like Option, List, State in a way similar to monadic bind (>>=) in Haskell. The for comprehension is syntactic sugar for chaining mul
Reactive Messaging Patterns読書会のなかで、「マイクロサービスとAkkaとGo」な面白い話題が出たので代表でまとめる試みエントリです。(結構、色々な話題に飛んでいるので難度高い。) まとめ方としては、会話ログを転記して、最後にまとめる形をとっています。また、議論と私の考えが混ざらないように所感は分けておきます。 ddd-cqrs-es.connpass.com TL;DR 要素技術(どんな言語使うとか、どんなアーキテクチャにするとか)の前に、組織やプロダクトの性格を考えて戦略を決めましょう。 そして、その中で最適と思われる戦術をとれるような要素技術を採用しましょう。 Akka良いよ。 ログ(一部抜粋) Slackからの引用のためテキストベースです。 事の始まりは、荒木さん(以下、 @applideveloper )の発言でした。 (この記事絡みですね。 集合知で各
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く