GROUPエンジニアブログです。【Sunrise前哨戦】大規模サービスを構築せよ!こんにちは。09年度入社のおーつ(@smileeeen)です。普段は子会社のZucksにてモバイル、スマートフォン周りのシステム開発を担当しています。先日『Sunrise前哨戦』という、若手エンジニアで大規模サービスを設計してみようという社内イベントがあったので、その事について書かせて頂きたいと思います。↓発表時の様子Sunrise前哨戦とはその名の通り、Sunriseの前哨戦として行われました。GROUPが今年から始める理系向けインターンで、100万人以上が使うことを前提としてサービスを企画し、それを実現するシステムを設計するといった内容になっています。詳しくは下記をご覧ください。GROUPとしても初めての試みであり、社内のエンジニアの中からもやってみたいという声があがっていました。そこで入社1~3年目までの若手エンジニアで4人一組のチームを組んで、前哨戦としてTwitterライクなサービスを展開する場合、どのようにシステムを設計するかを考え、その設計に対する評価を競う事になりました。サービスの仕様としてはアカウント管理ができるツイートできる他ユーザーをフォローできるフォローワーのツイートと自身のツイートでタイムラインを表示できるというTwitterの最低限の機能を持つように求められました。大規模サービスを設計する事が目的なので、下記のような利用状況の条件が与えられました。セキュリティ各チーム毎に約1ヶ月間かけて業務の合間を縫い、これらの条件化で最適だと考える設計を導き出しました。自分達のチームでは、既存のTwitterがどのようにシステムを構築しているのかを調査し、それらをヒントにシステム設計を行いました。最終的にはフロントの部分にはNoSQLのRedisを採用する事とし、全体的なシステム構成は下図のようになりました。Pluginを活用したり各チーム視点や進め方などに特色があって、とても面白かったです。これらのシステム設計を社内のエンジニアの方々に対して発表したのですが、発表後には先輩エンジニアの方々からの鋭い質問が飛び交い、冷や汗をかきながらも、頑張って回答をしていました。普段アプリケーションエンジニアとして業務を行っていると、インフラ関係の知識は薄くなりがちかと思います。今回はそのようなレイヤーまできちんと考える必要があり、単一障害点を作らないためのサーバー構成や、多数のサーバーへのデプロイ方法、想定リクエスト数を捌くためにはどのくらいのサーバーが必要なのかなど、様々な事を調査し、設計に組み込んでいきました。普段あまり考えないような規模のサービスのシステムを考えることで、今まであまり深く理解していなかった技術などへの理解も深めることができました。個人的には最近話題のNoSQLの種類や特徴、大規模サービスを構築する際の工夫などについて知識を得ることができたのが良かったです。これらの経験を今後の業務にも活かしていきたいと思います。