Hello Worldを複数言語試してみると、色々わかった気になる

以下のサイトを参考にさせていただきました。
*1

PerlPHPPythonRubyJavaAppleScriptHello Worldを一気に体験することができ、
色々わかった気になると思います。

Spring REST Docs

以下、何度かお世話になったので、
リンクを。

GitHubから特定のディレクトリだけを直接ダウンロード*1

$ svn export https://github.com/ユーザー名/リポジトリ名/trunk/ディレクトリ名1/ディレクトリ名2/...

この辺りはsubversionの方が柔軟性があるなぁと思ったり。
と言ってしまうあたり、イマドキなエンジニアになりきれていないか。。。^^

Spring REST Docsを試してみました。

$ svn export https://github.com/spring-projects/spring-restdocs/tree/master/samples/rest-notes-spring-data-rest/

nodejs/npmをインストールしてHello World

こちらを参考に触ってみました。
「Node.jsをMacにインストールしてnpmを使えるようにする」
http://www.hirooooo-lab.com/entry/development/install-node

「node.jsでHello World
http://qiita.com/sims0728/items/d90b57a9abebde7921de

大げさに言ってしまえば、10行ほどのコードでWebアプリが動いてしまう感じでしょうか。
コーディング内容としては、Servletを書くような感じでした。

ザクッとこのへんを変えていけば、より本番に近いコードになっていきそうです。
・HTMLを返すようにする
・Angularにて動的な画面にする
・TypeScripにてAltJS化する

#10 市ヶ谷Geek★Night「型のあるフロントエンドの世

こちらのイベントに参加して来ました。*1

発表資料はこちら

  • フロントエンドに本当に必要だったもの*2
  • 型を使うと便利な開発by Tessei Yoshida(株)トレタ*3
  • 実践投入してわかったflowtypeのメリデメ by Shin Suzuki*4
  • Type-safe front-end development with Scala from takezoe*5


以下、印象に残った内容メモ
・gulpなどのタスクランナーが流行った
・uglify.jsでminify
・JSXやDartなどAltJSが出て来た。
・TypeScriptはJSのスーパーセット
・TypeScriptではES2015/ES7を使うことができる
・PWA/AMPが出て来た。
・bundler(browserify/webpackなど)の登場
・BABEL/Flow/React/Electron/React Native/の組み合わせ

リアクティブ・コレオグラフィ・Shared Nothing・FaaS

サーバレスアーキテクチャの文脈で調査しようとしたら、
割と単語のオンパレードなので、少し立ち止まって整理。
どれもマイクロサービスに行き着こうとしているように感じるな。

コレオグラフィ*1

コレオグラフィーはP2Pの相互作用の一形態と考えていますが、その理由は「指揮者」がいないからです。コレオグラフィーは相互作用の合意済みモデルであり、このモデルが一連のオーケストレーションで構成されている可能性もあるのです。

Shared Nothing*2

シェアード・ナッシング・アーキテクチャ(英語: shared nothing architecture、SN)とは、分散コンピューティングにおいて、各ノード(コンピュータ)がネットワークを除いてリソースを共有しておらず、それぞれが独立しており、自律的であり、システムにおいて単一競合箇所が無い物を指す。

FaaS*3

サーバーレスアーキテクチャとはサーバーのないアーキテクチャと言われていて、単純にはAWS LambdaとかAzure FunctionsとかGoogle Cloud FunctionsなどのクラウドのFunction-as-a-Service(FaaS)を使うことを指す

リアクティブ*4

リアクティブマニュフェストから始めた、Grailsの中心のコミッタのLedbrook氏は、リアクティブシステムの特徴を以下のようにまとめた。

レスポンシブ、つまり、システムは常に適切に応答を返し、遅延を少なくする。
弾性、つまり、システムは一部分が障害を起こしたとしても、応答を返し、ダウンタイムを最小限にする。
しなやかさ、つまり、負荷の上昇にたいしてシステムは応答を維持するのに必要なスケールアップをし、負荷が下がれば、スケールダウンする。効率的なリソースの使用をする。
メッセージ駆動、異なるシステムの間でメッセージをやりとりする。Ledbrook氏はこれが、リアクティブシステムの規範的特徴だとしている。

サーバレスアーキテクチャには、こういう捉え方もある模様。*5

ふつう、アプリケーションサーバのようなプロセスが常駐していて、コードをデプロイするとこのサーバ上でコードが実行されるのですが、AWS Lambdaでは実行時にコンテナが生成されて終了時に破棄されることになっています。
これはコンテナの生成のオーバーヘッドが小さいおかげです。CGIに近いモデルで、「モダンCGI」と呼ぶ人もいます。

マイクロサービスの分散データ管理とブロックチェーン

マイクロサービスにおける9つの特徴の一つ「分散データ管理」は、いわゆる2フェーズコミットをせず、
「補償」(賠償?)も含めて、後でデータ整合性を取る思想。


イヤイヤ、
金融のミッションクリティカルシステムでそれはないでしょ!
とまずは突っ込みたくなるのをぐっとこらえて。


そういうことを言っていると時代が前に進まないので、
何かいいものはないかと思っていたところ。
分散元帳とか言ったりするけど、
ブロックチェーンがあるということに今更気づく。


既に、ほぼ落ちを書いてしましましたが、
安直に言ってマイクロサービスの分散データ管理をブロックチェーン技術を応用して実現できたら、
金融のミッションクリティカルシステムで使えたりするのではないか?
絵空事を考えてみた。


bitcoin以外にブロックチェーン技術を使ったキラーアプリが出てこなくて、
手詰まり感があるけど、マイクロサービスやWebAPI(APIエコノミー)とかの文脈と絡めて、
何かできないか?!なんとなくそんなことを考えてみました。


きっと世の中似たようなことを考えている人はいるんだろうな〜と思ってはいるが。

サーバレスアーキテクチャ(Lambda)とElastic BeansTalk

クラウド時代の象徴とも言えるサーバレスアーキテクチャ(Lambda)とElastic BeansTalk。

まずは、AWS Lambdaの定義*1から。コードを書くだけで、システムが動く思想。世の中からオンプレ基盤屋が消え、クラウドを作るベンダーとクラウドを使うプログラマーだけになる日は来るのかもしれない。

AWS Lambda は、コードを AWS Lambda にアップロードすると、サービスが AWS インフラストラクチャを使用してコードの実行を代行するコンピューティングサービス

と言っても、さすがにまだそこまではいっていなくて、クラウドネイティブに象徴されるトレンドがあり、その急先鋒がAWS Elastic Beanstalk。
AWS Elastic BeanstalkとAWS Lambdaのご紹介*2がわかりやすかったので引用

P15 (AWS Elastic BeansTalk)

Springのベストプラクティスを一発設定
気に入らないところは変更可能
個別コンポーネントに手を入れられる



AWSのベストプラクティスを一発設定
気に入らないところは変更可能
個別コンポーネントに手を入れられる

コードはSpring Bootで一発設定し、ソフトウェアアーキテクトが要らなくなり、、、みたいな日が来るのかもしれない。
業務ロジックと画面だけ定義すればシステム開発は終わり。となれば究極なのだけれど、そうはいかないのが世の常かな。

時代や領域は違えどMDA/4GLと同じ轍を踏まないようにしたいところ。