mixi engineer blog

*** 引っ越しました。最新の情報はこちら → https://medium.com/mixi-developers *** ミクシィ・グループで、実際に開発に携わっているエンジニア達が執筆している公式ブログです。様々なサービスの開発や運用を行っていく際に得た技術情報から採用情報まで、有益な情報を幅広く取り扱っています。

新卒研修の受講レポート~AWS編~

AWS研修

みなさま、はじめまして!ミクシィ2017年新卒エンジニアの田村と金銅です。

今回は5月10日から3日間に渡っておこなった新卒エンジニア対象のAWS研修について書きたいと思います。 研修はミクシィのオフィスにAWSの外部講師をお招きし3日間みっちりとAWSの基礎から、実例を踏まえた応用まで教わりました。

まず、「AWSとは?」という方もいらっしゃると思いますので軽く説明しますと、AWSはウェブサービス、モバイルアプリケーション、ゲームなど様々なサービスの基盤となるインフラです。従来、大規模なインターネットサービスを運営しようとするとサーバ用に専用のハードウェアを購入し、データセンターに場所を借りて設置しに行く必要がありました。しかし、このAWSはいわゆるクラウドサービスなので実際のハードウェアを意識せず開発者がアプリケーションの開発や運用に集中できるというメリットがあります。

研修を大きく分けると講義と実際に習ったことを構築する実践形式のラボ、そしてチームで行ったインフラ設計のディスカッションといった内容でした。

初日

講義では可用性について学びました。

アプリケーションのインフラでは可用性がとても重要です。可用性とはシステムがいかにダウンせずに利用できる状態を保てるかという指標で、これが高ければ高いほどインフラの質が良いことを示します。

これには、急激なアクセスの増加によって負荷が増大した際にも耐えられるスケーラブルなインフラ構成をとる必要があり、まさにクラウド型のサービスであるAWSはこのような要求にうってつけです。

初日のラボではAWSのサービス群の中からVPC, EC2, DynamoDB, S3, IAMを使用し、障害を見据えたスケーラブルなウェブアプリケーション環境を構築しました。

f:id:mixi_engineers:20170822142839j:plain

二日目

二日目は、すでに自社が運用しているインフラ環境を想定し、それをクラウド上に持って行くフォークリフトという作業をチームでディスカッションし、その内容をホワイトボードに書いて発表しました。

ここで同期や講師の上原さんから鋭いツッコミが入り、実運用を考えた上で改善すべき点を知ることができました。

また、講義ではLambdaを使ったイベント駆動のオートスケールするインフラ設計を学び、ラボでは実践でその構築方法を身につけました。これがクラウドの特徴であり、必要な時に必要な分だけの処理能力を利用することでコストを最低限に保つことができるのです。

最終日

ここまで二日間を通して可用性の重要さについて学びました。 例えば、災害でデータセンターに火災や停電が起こったらどうでしょうか。最終日の講義では、そのような滅多に起こらない場合についても冗長化を図り、サービスの提供を継続できる強固なインフラ設計を学びました。

AWSは世界中にリージョンと呼ばれる地理的に分離したデータセンターを持っており、東京リージョンで障害が発生した際には北カリフォルニアリージョンにあらかじめ作っている同じ構成のインフラに処理を引き継ぐことができます。

最後に行ったハンズオンでは、サーバレスというアーキテクチャに沿って掲示板のウェブアプリケーションを作りました。サーバレスといってもサーバが存在しないわけではなく、AWSに管理された(フルマネージドな)サービスを使うことで全くコードを書くことなくアプリケーションの実装ができる構成のことを指します。しかし、これにはデメリットもあり、フルマネージドサービスは容易に利用できる反面カスタマイズ性が低く、細かい要求には応えられないケースがあります。そのため講師の方もおっしゃっていましたが、バランスが重要なのです。 f:id:mixi_engineers:20170822142832j:plain

まとめ

今回AWS研修を通じて、インフラは障害が起こることを前提に設計することが大切だと感じました。また、急激な変化に耐えられるようにスケーラブルな構成をとることで絶やさずサービスを提供し続けることができ、事業者もユーザもハッピーになります。

以上、AWS研修三日間のレポートでした! f:id:mixi_engineers:20170822143337j:plain