表現力を取るか、可読性を取るか、安定性取るか、書きやすさを取るか、メンテナンス性を取るか、性能や速さを取るか、などはトレードオフがあるので、
組織やサービスにあった問題を解決するために設計された適材適所な言語を選択するのが、
楽だし、苦手な言語は苦労するので、適材適所を知りたい
集合知で各言語、ライブラリ、フレームワーク、アーキテクチャの適材適所をみんなでGoogleスプレッドシートにまとめたら面白いんじゃないか?
自分は全然詳しくないので、誰かが間違っているところを訂正して、知らないことを教えてくださるかもしれないのではと思い、Googleスプレッドシートを作ってみました。
みなさん、悪用しなければ、自由に編集して大丈夫です。
今の組織が解決したい問題に対して、集合知で向き不向きの比較一覧を集めて、それぞれ適材適所な言語を選べるようにするのが目的です。
24時間ネットTVなどのライブストリーミングな、ミッションクリティカルシステムだと
マイクロサービスで、適材適所に言語を使い分けたら、強いリアクティブアプリケーションになりそうな気がする
クラウド使っていた場合は、クラウド側が、そういう問題を解決する適材適所な言語やアーキテクチャを選択しているのではないか
いろいろな言語やフレームワーク、VMやアーキテクチャの適材適所がわかる資料を教えてほしいです。
以下、参考になりそうな資料を集めてみた。
Erlangの伝説 年間稼働率「9の9個」= 99.9999999% つまり,年に31.54ミリ秒しかダウンしない!2012年にサーバー1台あたり2,000,000同時接続実現
http://aucnet-ibs.com/technology/erlang/
ErlangとGolangを比較してみる
http://qiita.com/soranoba/items/68d57b4635a2917f3c73
Communicating Sequential Processes (CSP)
An alternative to the actor model
CSP modelとActorモデルの比較
http://arild.github.io/csp-presentation/#1
Akka vs Erlang
http://qiita.com/okumin/items/b0e85704268dfb4741b5
JVMとDart VMとBEAM VMの比較
https://github.com/nothingcosmos/VM/blob/master/erlang/vm_architecture.rst
雑把の仮想マシン(JVM, .NET, BEAM, スクリプト言語, LLVM)
http://yohshiy.blog.fc2.com/blog-entry-238.html
BEAM VM Source Code Reading
https://github.com/nothingcosmos/VM/blob/master/erlang/beam.rst
疑問点とか、調べたいこと
https://github.com/nothingcosmos/VM/blob/master/erlang/todo.rst
Go cooperative scheduler
https://github.com/nothingcosmos/VM/blob/master/golang/cooperative.rst
Go garbage_collection.rst
https://github.com/nothingcosmos/VM/blob/master/golang/garbage_collection.rst
Erlang(Elixir)の使いどころについて使ってる人から教わった話
http://togetter.com/li/977171
使いたい!ホットコードローディング
http://qiita.com/stwind/items/f13072f1c23af06d1bd6
ドワンゴでのホットデプロイ事例
http://sile.github.io/slide/kbkz_tech_05/#/
ニコニコ生放送の配信基盤改善
http://www.slideshare.net/takahiro_yachi/ss-44828680
並行処理初心者のためのAkka入門
http://www.slideshare.net/sifue/akka-39611889
アクターモデル
https://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%AF%E3%82%BF%E3%83%BC%E3%83%A2%E3%83%87%E3%83%AB
Elixir試飲録 (1) – 今、プログラミング言語を選ぶということ: Scala, Go, Elixir
https://ubiteku.oinker.me/2015/12/22/elixir%E8%A9%A6%E9%A3%B2-1-%E4%BB%8A%E3%80%81%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E%E3%82%92%E9%81%B8%E3%81%B6%E3%81%A8%E3%81%84%E3%81%86%E3%81%93/
Elixir試飲録 (4) – オブジェクト指向と関数型の違い
https://ubiteku.oinker.me/2016/01/14/elixir%E8%A9%A6%E9%A3%B2%E9%8C%B2-4-%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%81%A8%E9%96%A2%E6%95%B0%E5%9E%8B%E3%81%AE%E9%81%95%E3%81%84/
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumi
http://www.slideshare.net/okapies/reactive-architecture-20160218-58403521
Typesafe Reactive Platformで作るReactive System
http://www.slideshare.net/yugolf/typesafe-reactiveplatformreactivesystem-scalasummitkansai
LINE Platform Development Chronicle
http://www.slideshare.net/linecorp/a-4-47983116
Akka ActorとAMQPでLINEのメッセージングパイプラインをリプレースした話
http://www.slideshare.net/linecorp/a-9-47983077
最新DDDアーキテクチャとAkkaでの実装ヒントについて
https://speakerdeck.com/j5ik2o/zui-xin-dddakitekutiyatoakkadefalseshi-zhuang-hintonituite
静的言語の真の価値は「統合」ではないかな?
http://qiita.com/shiracha/items/a9387e54f77ee39dcea0
ScalaによるDDDライクなプロダクト開発
http://sssslide.com/speakerdeck.com/yshnb/scalaniyorudddraikunapurodakutokai-fa
リアクティブ宣言
http://www.reactivemanifesto.org/ja
Go言語がダメな理由
http://postd.cc/why-go-is-not-good/
GAM is a MVP Actor Model framework for Go.
https://github.com/rogeralsing/gam/blob/dev/README.md
Go Actor Model framework - Ultra fast distributed actors for Golang
For a more indepth description of the differences, see this thread Actors vs. CSP
https://www.quora.com/How-are-Akka-actors-different-from-Go-channels
Event Horizon is a CQRS/ES toolkit for Go.
https://github.com/looplab/eventhorizon
AbemaTVとGKE
http://www.slideshare.net/strsk/abematvgke
Kubernetes を使ってサービスを加速させる取り組み
https://speakerdeck.com/koudaiii/kubernetes-woshi-tutesabisuwojia-su-saseruqu-rizu-mi
GKEのKubernetesはGoでできてるらしい
Tokyo ex handson
https://github.com/ohr486/tokyoex_handson_demo/wiki
Phoenixのインストールから始まり、Ruby on Rails TutorialをベースにPhoenixでのWeb開発を説明している本
http://hayabusa333.tumblr.com/
Studio is a lightweight framework for node development to make easy to create reactive applications according to reactive manifesto principles. It uses micro-services (freely inspired by akka/erlang actors) implemented using bluebird a+ promises (or generators async/await) to solve the callback hell problem.
https://github.com/ericholiveira/studio
東京Node学園#8 Let It Crash!?
Node.jsのエラー処理とErlangスタイルのエラー処理
http://www.slideshare.net/koichik/node8-let-it-crash
Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications.
http://kubernetes.io/
Kubernetesは、次のような機能を提供し、より本格的な分散コンテナシステムの構築を実現してくれます。
http://qiita.com/applideveloper@github/items/d0b89308493f9806693f より
フェイルオーバー(コンテナが異常終了したことを検知し再起動させる)
スケーリング(起動しているコンテナの数を自由に変更できる)
スケジューリング(コンテナを任意のホストに割り振る)
ロードバランス(複数のコンテナにリクエストを振り分けて負荷分散する)
サービスディスカバリ(サービスへのルーティングを自動で提供する)
ここに書いてある言語やアーキテクチャ、参考資料に限らず、いろいろな言語やフレームワーク、VMやアーキテクチャの適材適所な資料を教えてほしいです。
評価軸を絞ってReactive+DDDの観点での各言語の議論したい方はこちら
https://docs.google.com/spreadsheets/d/1SzpmkIls3kTSpryQbryndrzrYJcDcHzWM4hiPrtyL2k/edit#gid=257693355