Adventは無理だったけど、今年のシャノンのテックスタック総決算!

このエントリーをはてなブックマークに追加
こんにちは、R&Dの@benzookapiです。

今年もあとわずか、弊社は本日最終日、さきほど大掃除も終えてオフィスはすっきりな状況です。

 最終日なので、Adventカレンダーの変わりに、今年シャノンで新しく試みた技術チャレンジ、テックスタックを振り返ってみたいと思います!

1.GitHub+Jenkins+Pivotal+Bugzilla 相互連携

互いのAPIを相互連携し、 GitHubでプルレクしたときにJenkkinsのテストが走る、GitHubでマージされると、Pivotal上の関係するストーリー(チケット)にコミットログが付く、Bugzillaで関係するバグが登録されると、Pivotalのプロジェクトに取りこめる、Pivotalでバグステータス変更するとBugzillaにも反映される、など今まで手作業だった部分を大分効率化しました。

2.Cucumber+Spec2+WebDriver で機能・受け入れテストを自動化

ユニット、結合テストに加えて、ブラウザベースの機能・受け入れテストをCucumberのfeatureとして記述、そのケースにあったテストをScalaのWebDriverライブラリで記述、自動化。PMがケースかいてとりあえず手でテスト、あとでコーダーが自動化コード埋めるなんてこともちょっとトライしてみました。

3.ReactiveMongoでリアクティブ!

 ノンブロッキングのMongoDBドライバ、ライブラリReactiveMongoでシンプルかつ、効率よいMongoDBプログラミングを実現。同じくノンブロッキングフレームワークのPlay frameworkと関数型言語Scalaとの相性もいいので、当分MongoDB使うときはこれでいくと思います。

4.Akkaを使った並列・分散処理

 いざとなったらビッグデータ分析もできるぞってことで、先行して新機能のバッチ処理を並列・分散化でトライしてみました。正直、普通にシーケンシャルに書くより大分めんどい、しんどかったですが将来の布石にはなったかと思います。

5.AngularJSをつかってAPIファースト、view分離の設計へ

ビュー変更によるプログラム改変の負担、異なるサービス(コンポーネント)のマッシュアップのしやすさ、「UIなんて書きたくねーよ」っていうたいがいのプログラマが口にする不満の解消のために、サーバー機能を全部API化(とりあえず内部向け)、ビューはAngularJSをつかって、HTMLと振る舞いを完全分離しました。これでいつでもデザイナさんと協業できるぞっと。
 

6.Jenkins BuildFlowでテスト->パッケージング->デプロイまで一発よ

今までテスト自動化、デプロイ自動化はやってましたが、 開発のユニット、結合、機能テストからQAの受け入れ、ステージングおよび本番へのデプロイなどをフロー化してコントロール。全部ながすこともできるし、リリース用には、QAテストからデプロイだけ流すといったコントロールができるようになりました。開発側でデプロイをある程度コントロールできるのはやっぱりメンテしやすいですね。

7.MongoDBを使った大規模キャッシュ!パフォーマンス向上+コンポーネント連携の容易化

膨大な弊社のマーケティングデータを徐々にMongoDBにキャッシュ化して検索の高速化を実現。さらにコンポーネント間のデータ参照にも使おうという抜け目のなさ!(後者はまだ予定です)

8.GHE(GitHub Enterprise)導入!CVSからGitHubという飛び級移行

屋台舟のレガシーコードと環境を一気になうなGitHubに飛び級進級させました。社外に持ち出せないリソースも、便利なGitHub使って管理できます!権限コントロールも社内に合わせられるのでコンプライアンスもばっちり!


てな感じで、思いつくまま書いてみましたが、こう見ると、ほんと色々やってるなーって印象です。
(多分ぼくのしらないところでもっとたくさんやってます、社員の人、こんなのもあるよーってあったら教えてね!)

ちなみに上海のものを合わせたらもっとかもです。(Mahoutとか)
http://shanon-shanghai.blogcn.com/


すごいよ、シャノンのエンジニア!
おまえらすごいよ、働きすぎだよ!


では、よいお年をー!


次の記事
« Prev Post
前の記事
Next Post »
Related Posts Plugin for WordPress, Blogger...