Akka meetup 2014_sep

Preview:

DESCRIPTION

akka

Citation preview

Akkaの運用の話(仮)Akka meetup 2014 sep

2014.09.28(sun)

お前誰よ• @Masahito

• P2P File Transfer Engineer at Skeed Co. Ltd.

• I work with (Scala + Java) & JVM

• PyConJP2014 Speaker

Akkaつかってる?

https://twitter.com/DesignUXUI/status/490179377099845632

今日話すこと• 運用を見据えた話

• Akka Actorの話しかしませんよ• とりあえず使った方がいい機能• どんな構成考える?

今日話さないこと• 実際の運用について• チューニング(用途に依存するため)

Akka個人的にうれしい点• メッセージ(Message)が順番制御できる

• Actor内だとリソースのlockいらず• メリットであり、デメリット

• SuperVisonTree

• Mement Mori

• JVM版のOTP的なきのー

とりあえず使った方がいい機能• ActorLogging

• akka-slf4j

• config

• Akka FSM

Loggingclass MyActor extends Actor with akka.actor.ActorLogging { override def preStart() = { log.debug("Starting") }}

↓フツーはapplication.confをclasspathが通ってるとこにおく val config = ConfigFactory.parseString( """ akka { loggers = ["akka.event.slf4j.Slf4jLogger"] loglevel = "DEBUG" logging-filter = "akka.event.slf4j.Slf4jLoggingFilter" } """)

val as = ActorSystem("test", config)

参考• http://doc.akka.io/docs/akka/2.3.6/java/logging.html

• http://doc.akka.io/docs/akka/2.3.6/general/configuration.html

• http://doc.akka.io/docs/akka/2.3.6/scala/fsm.html

よく使うbuild.sbtname := "testProject"

version := "0.1"

scalaVersion := "2.10.4"

libraryDependencies ++= Seq( "com.typesafe.akka" %% "akka-actor" % akkaVersion, "com.typesafe.akka" %% "akka-slf4j" % akkaVersion, "ch.qos.logback" % "logback-classic" % "1.1.2")

構成について• コードだけだとよくわからなくなりがち

• 絵を残すの大事• 人のコードは読めなくなりがち• シーケンス図もあるとベター• とくにActor間のつながりなど• どのタイミングでどんなメッセージ投げるとか忘れがち

コード例https://gist.github.com/masahitojp/422be22884c2e575b338

突っ込み願います

書籍• Akka 公式ドキュメント

• Activatiorにあがってるソースを読むのがオススメ• Akka in Action(オススメ!)

• すごいErlangゆかいに学ぼう!

まとめ• 基本的な機能を使うだけでもうれしいものが書ける

• Akka is DSL

• Akka使ってるとJavaを意識すること多いよね• LoggerとかLoggerとか• ThreadPoolとかとか(Futureでもそーだけど

Akkaの運用(仮)から(仮)がとれましたか?

 Thanks!