社内ハッカソン反省会-2013

こんにちは、河野です。

昨年に引き続き、今年も社内ハッカソンが行われました。今年のテーマは「あったらいいなを実現する」でした。アイデアソンには1人で、ハッカソンには2人で参加しました。

私が取り組もうと考えていた技術のテーマとしては、

  • Amazon Web Services
  • Go言語

の二つでした。

Amazon Web Services

社内でもAWSを使用したプロジェクトが増えているのですが、私自身はなかなか触る機会がなく、他のメンバーの話を聞くだけなので、まずは色々触ってみようと。
AWSくらい家でもやれるよ〜と言う声が聞こえてきそうですね。まぁそうですね。実際、EC2の初期構築は自宅でやったので。

利用するサービスは、標準的なウェブアプリに必要そうな、EC2、S3、RDS辺りを想定してました。

Go言語

Go言語は、12月1日に、1.2が出たばかりですね。

最近golangを使って、細々とCUIのツール作ったりしてるんですが、まとまった時間を取ってボリュームのあるものを作りたいなと思っていました。
なんか、goroutin使った非同期にポコポコと処理するようなもので、リッチなインターフェースがいらないやつ。

作ろうと思ったもの

最近github pages使って個人のサイトを運用しているのですが、

  • static site generatorがなんか流行ってそうな気がする
  • 静的ページはコメントできないのでDisqusが良く使われている

と思い、以下のようなシステムを考えてみました。名前はFOCUSと付けてみました。

FOCUS概要

端的に言えばdispusクローンですね。

ちょっと違っているところは、弊社のSynergy!とデータ連携する辺りでしょうか。コメントだけでなく、問合せフォームとかでも良いので、そういったデータを連携する感じです。

システムの構成とか

それぞれ以下の構成を想定してました。

APIサーバ

  • コメント投稿、履歴辺りを担当
  • golang使う
  • JavaScript配信とかする

管理サーバ

  • コメントの管理用
  • railsのウェブアプリで作る
  • コメントの閲覧、編集とかできる

外部連携サーバ

  • 弊社サービスのsynergy!と連携する用のサーバ
  • railsつかう

デモサーバ

  • WordPressとstaticpress使って、静的サイト生成から、S3まで連携させる
  • APIサーバから提供されるjavascript使って、コメントが利用できるようにする

サーバーが多いですが、EC2を多めに作ってAWS使ってる感じを味わいたかっただけです…。DBサーバはRDSでまかないます。

実際にできたモノ

なかなか想定通りには行かないですね。最終的には以下のサーバ・アプリケーション構成になりました。

API・管理サーバ

  • コメント投稿、履歴の出力
  • コメント管理
  • rialsでアプリを構築し、管理画面はrails-adminを素のまま使ってる状態…。
  • golangは断念…。

デモサーバ

  • 1枚のhtmlファイルのみ。
  • WordPressとStaticPressはどこか遠くへ…。
  • S3も断念…。

Synergyとの連携もできず、断念した部分も多く、残念な感じになりました。

振り返り

ハッカソンでは、インフラの構築部分とAPIサーバ、デモサーバの部分を担当しました。他の部分は、もう1人にお任せしました。
以下、自分の担当部分について、技術的な反省点とか、ハマったとこ、良かったことなどです。

EC2のPublicDNSとPublicIPが変わる

EC2の起動と停止を行うとPublicIPが変わるというのは、聞いていました。

なので、SSHのconfigには、PublicDNSを利用して設定していたのですが、PublicDNSも変わったので、再度設定し直すことに…。
割り振られているFQDNにも、明らかにIPから構成されている数字の部分があるのに、なぜ気づかなかったのでしょう…。

ElasticIPを割り振るのが面倒だったので、とりあえず立ち上げっぱなしにしておきました。

DNSちゃんと設定すれば良かった

FQDNが長いし、IPは覚えにくいし、やっぱりRoute53使って、各サーバに名前を付けておけば良かったなと思いました。

WordPressとStaticPressとS3の連携

  1. WordPress+StaticPressで静的コンテンツ作成
  2. 静的コンテンツをs3cmdでS3にアップロード

というところまで、出来ていたのですが、結局採用しませんでした。

StaticPressの設定の手順に問題があったと思いますが、WordPressで更新しても、S3へ反映されないという問題が起きました。なので、StaticPressではHTMLの生成だけにして、s3cmdを利用してS3へデータを送る方法を採りました。

が、どうも上手く表示されません。階層に問題があるのか、s3cmdの使い方に問題があったのか、トップページは良いのですが、各個別の投稿ページを表示できませんでした。

色々と調べてみたものの、すぐに解決できそうになかったので、結局断念しました。

Golang使ってないし…

ハッカソン当日、午前中にS3周りで手間取ってしまい、時間も足りなくなってきました。その時点で、他の部分もあまり出来ていなかったので、コメント周りの機能と管理機能を合わせて1つのRailsアプリにしました。

何か最低限動かないと…と思っての判断でしたが、せっかくの機会だし、完成しなくてもGo言語で頑張っても良かったかなぁとか思ったりもしました。
どっちが良かったか悩ましいところです。

サーバ分けといて良かった

上に書いたようにちょっと躓いたりはしましたが、機能別に分業できて、それが影響しない状態になったので、とてもやりやすかったです。特に意図はしていませんでしたが、結果として良かったなと思います。

EC2は、必要なときにインスタンス立ち上げて、不要になったら破棄してというのが気軽に出来るので、とても良いですね。

ハマった時の諦めどころ

なかなか判断が難しいところですが、ハマった時にどのくらい深追いするか、というのは予め決めておけば良かったと思います。

例えば、30分は自分で調査する、その後相談する、深追いするならさらに30分みたいな。「もう少しで何とかなりそう」という気持ちが結局ずるずると引きずってしまい、時間を無駄にしていた気がします。

まとめ

そういえば結果は3位でした。とはいってもチームが少なかったからですが。来年は多くの人が参加できると良いなと思います。

あと、AWSはとても楽しいですね。もっと早く触っておけば良かったな~と思いました。

Comments are closed, but you can leave a trackback: Trackback URL.