2016/12/26

第0回 サーバレスアーキテクチャのお勉強 - システム概要

勉強会情報配信アプリの作成を通して、サーバーレス アーキテクチャ のお勉強をしていきます。

サーバーレス アーキテクチャとは?

物理サーバーや仮想サーバー(EC2など)、コンテナ(dockerなど) を使用しないシステム設計のこと …だと理解しています。

具体的には、以下の2パターンの構成が見られます。

  1. Google Firebase や Parse.com(もうすぐサービス終了) といった、BaaS (Backend as a Service) を組み込んだ構成
  2. AWS LambdaAzure Functions といった FaaS (Function as a Service) を組み込んだ構成

今回の一連の記事において サーバーレス アーキテクチャ といえば 2. の方を指すこととします。

アプリの概要

毎月、フリーランスの仲間内でIT勉強会を開催しています。
その開催案内や勉強会で使用する資料の置き場所などの情報共有を行うWebアプリケーションの開発を行います。

システム構成の検討

ざっくりですが、上記のようなシステム構成を考えました。
今回のアプリ開発はAWSの勉強も兼ねているので、ほとんどをAWSのマネージドサービスだけで構成します。

次回は DynamoDB のテーブル設計をしていきたいと思います!

2016/07/22

温泉宿で開発合宿してきました

フリーランスの仲間を誘って、7/1~3 に温泉宿で開発合宿をしてきました。

総勢14名、広間にPCを広げて作業です。

特に目標などは設けませんでしたし 参加者の属性もバラバラなので、他のソフトウェア企業がやっているような開発合宿とは、すこし趣が違うのかもしれません。

どちらかというと温泉宿に来て もくもく会を開催した、って感じでしょうか。


言い出しっぺだったので、宿の選定や会計、タイムスケジュールの作成などやらせてもらいました。

どれくらいの予算が良いのか いまいち掴めず、1日あたり1万円前後かなー、という感じで計画しましたが、ちょっとケチりすぎた感じがします。

費用面を重視したために田園風景広がる自然豊かな場所にポツンとある宿になってしまいました。

施設の清潔感がイマイチ (他の参加者からも言われた) でしたが、一泊二食付き 8,000円とかなので、こんなもんかなー、という感じです。次回は予算含めて見直したいですね。

東京方面だと「開発合宿プラン」がある温泉宿なんかもチラホラあるみたいですが、関西で探すとなかなか難しいです。

無線LAN完備で会議室と広いお風呂が 24時間利用可能、なんていう宿泊施設があると良いんですが。

2016/02/09

Slackとは?

Slack

  • SaaSのチャットアプリ


利点

  • マルチプラットフォーム
    • Webアプリなので Windows, Mac, Linux で使用可能
    • electronで作成されたデスクトップアプリもある
    • Android, iOSアプリも当然ある
    • 複数端末同時ログイン可能
  • 他のシステムとの連携機能が豊富
    • GithubやGoogle Driveなど、様々なサービスと容易に連携可能
    • 無料枠では10システムまで連携可能
    • WebhookやAPIを使用することで、デフォルトでは提供されていないシステム(社内システムなど)とも連携可能

markdown が投稿でき、ソースコードはシンタックスハイライトされる点が
プログラマ同士の会話に非常に適している事が
競合の他サービスと比較して、IT系企業で積極的に導入されている理由と考えられる。

インターフェースが英語のため、プログラマ以外の職種には
ChatWork や HipChat といったサービスの方が受け入れられやすい模様。


無料の範囲

https://get.slack.help/hc/en-us/articles/201723133-Billing-FAQ#can-i-use-slack-for-free
Can I use Slack for free?
Yes, you can use Slack for free. You’ll only be able to browse and search your team’s 10,000 most recent messages, and you’ll be limited to 5GB of file storage and 10 apps or custom integrations.

  • 直近 10,000件までの検索
  • 5GBのストレージ
  • 10個までのアプリ連携


価格

一人あたり一ヶ月 8ドル (アカウントがアクティブかどうかで日割り計算)


参考

Slackメモ





Slack が広がっている背景のひとつとして、ChatOps の流行の影響が考えられる。
ChatOps とは文字通り、コンソールの代わりにチャットにて運用オペレーションを行う事である。


ChatOps

チャットチャンネルに常駐するボットにコマンドを投げて、システム運用を行う。
Github が取り入れていることで有名。
PublicKey | GitHubが1月28日のサービス障害の詳細を公開。停電により内部のChatOpsシステムも落ちて初期対応が困難に。Redisクラスタの復旧に時間

ChatOps のメリットとして、以下の様な点が考えられる。

  • 多数の人間が見ているチャットにコマンドを投げることにより、間違い等に早期に気づきやすい
  • チャットのアーカイブ機能や検索機能によって、過去の操作履歴を追いかける事が可能
  • わざわざ各サーバーにログインする必要がなくなる
    • 昨今は仮想化・コンテナ化の結果、とんでもない台数のサーバーを管理する必要があるので、人間が「どのサーバーにログインする必要があるか」とか把握しきれない



2016/02/08

electron触ってみた

electron触ってみた

electron でローカルで動くGraphviz のビューア兼エディタを作った。

とりあえず動くけど、使い勝手とかが微妙なのでパッケージ化はしない。



作ってみて感じたこと

  • クライアントサイドとサーバーサイドのjsが混じってて面白い

ブラウザ側の処理か、Node.js側の処理か? みたいなことを考えなくても作れてしまう。

実際には remote オブジェクトっていう electron 特有のヤツがいて
ブラウザのプロセスで動くのか、Node.js側のプロセスで動くのかを管理している。

画面描画処理とそれ以外をきちんと区別することでアプリのパフォーマンスに影響するのかもしれないけど、あんまり意識しなくても動く。


パフォーマンスに悪影響かもだけど、knockout.js の処理の中で
Node.js のパッケージとか使えてしまう。

今回、node-glob の結果を observableArray に突っ込んでリストを表示する、とかやってるけど普通に動いてびっくりした。



  • バベらなくても es2015 で動いている

babel でわざわざ変換しなくても、結構 es2015 で動いている。
よく使う class とか Arrow function とかは問題なさげ。

画面描画部分は chrominium ベースなのかな? (調べてない)

CSS3の flexbox なんかも問題なさげなので、ストレス無くて良い。