『クラスメソッドのAWSドッグフーディング』と言ったな。アレは―― 3/29(日) セミナー開催 #cmdevio2015
よく訓練されたアップル信者、都元です。信者固有の権利を行使 *1して、手に入れた新兵 *2は無事手元に届き、現在訓練施設で前線に送り込まれる準備 *3中です。
それはさておき。
#cmdevio2015 [イベント告知Vol.01] カンファレンスイベント『Developers.IO 2015』3/27(金)&3/29(日) 2Days開催! | Developers.IOということで盛り上がりをみせている当イベントですが、この不肖都元、一つのセッションを持たせて頂いております。
13:00 - 14:45 C-1『クラスメソッドのAWSドッグフーディング』 (by 都元ダイスケ)
会場も当初25席で満席状態が続いておりましたが、ご好評を頂いた結果幸いにも増席となり、現在はお申し込み頂けるようになっております。ご興味をお持ちの方は是非ご登録頂けますと嬉しいです。
しかしまぁ、1人で2コマぶち抜きセッションのプレッシャーってアカンですね。どうしてこうなった。長丁場で皆様も疲れると思いますので、適宜休憩でも挟みながら、しかしガチな内容でお話させて頂こうと思っております。
で、何話すのよ。
セッション内容紹介がこちら。
弊社クラスメソッドでは「メンバーズ」というAWSに関する支援を行うサービスの一環として「メンバーズポータル」というWebシステムを提供しています。このシステムは、表向きは「お客様向けサービス」であり、裏向きは「社内業務システム」です。
そして実は弊社の「AWS実験場」でもあり、「完全AWSネイティブ」という裏テーマに基づいて数多くのAWSプロダクトを使い倒し、AWSのアーキテクチャ哲学に則ったシステムを構築しています。その結果、構築・運用の自動化や、高い耐障害性、開発における柔軟性等を実現できました。
本セッションではこのシステムのアーキテクチャをご紹介し、これから「完全AWSネイティブ」なシステムを構築しようとする方にいくつもの技術的なアイデアを持ち帰って頂こうと思っています(本セッションは「事例」というよりも「技術」寄りの内容でお届けします)。
というわけで、私が内製で作っている「完全AWSネイティブ」システムを例に、AWS上のシステムは斯くあるべきだ、という都元の持論を展開します。これが本セッションの主題になります。悪く言えばオレオレ理論のリサイタルですw まぁ、深く共感しながら聞いて頂くもよし、振り切っちゃったヒトを一歩引き気味で遠目に眺めてみるもよし…。
AWSプロダクトの側面から
さて、この主題展開を支える話として、AWS個別のプロダクトをどのように使っているのか、をお話します。このシステムを構築するにあたって、様々なAWSプロダクトを利用しています。全プロダクト一覧はAWSの製品&サービスのページをご覧頂ければと思いますが、これらを現状使っている *4ものと使っていないものに分けるとこんな感じになります。
使っている
- Amazon EC2
- Auto Scaling
- Amazon VPC
- Elastic Load Balancing
- AWS Elastic Beanstalk
- AWS CloudFormation
- Amazon SNS
- Amazon S3
- Amazon Glacier
- Amazon EBS
- Amazon CloudFront
- Amazon RDS
- Amazon Route 53
- AWS Identity and Access Management(IAM)
- AWS CloudTrail
- Amazon CloudWatch
- AWS Trusted Advisor
- Amazon EMR
- Amazon SQS
- Amazon SES
- AWS サポート
使っていない
- Amazon EC2 Container Service
- AWS Lambda
- AWS OpsWorks
- AWS CodeDeploy
- Amazon Cognito
- Amazon Mobile Analytics
- Amazon WorkSpaces
- Amazon WorkDocs
- Amazon WorkMail
- AWS Storage Gateway
- AWS Import/Export
- Amazon DynamoDB
- Amazon Redshift
- Amazon ElastiCache
- AWS Direct Connect
- AWS Directory Service
- AWS Config
- AWS CloudHSM
- AWS Key Management Service
- Amazon Kinesis
- AWS Data Pipeline
- Amazon SWF
- Amazon AppStream
- Amazon Elastic Transcoder
- Amazon CloudSearch
- Amazon FPS(Flexible Payment Service)
- AWS Marketplace
- Alexa Web Information Service
- Simple Systems Manager
- Amazon Mechanical Turk
ううむ、まだ使ってないプロダクトの方が多いのか、悔しい。本当は全部使いたいくらいなんですが、システムの目的として全く無関係な製品 *5もあるため、全部は無理っぽいです。とは言え、まぁ使い込んでいる方ではないでしょうかっ!(苦し紛れ)
クラスメソッドでは、実運用しているシステムでAWSプロダクトを使っている実績があります。上記で「使っていない」としたプロダクトも、他の実運用システムでは利用しているものが多数あります。紛れも無くドッグフーディングです。
本セッションはこのセクションを指してタイトルを付けたわけですが、次のセクションからはAWSドッグフーディングの話ではなくなります。『クラスメソッドのAWSドッグフーディング』と言ったな。アレは――前半戦の話だ。
その他技術の側面から
当システムは、AWSとしてはもちろんですが、その他技術的な側面から見ても面白い試みを多数取り入れています。後半戦は『AWS以外もいろいろ食べてみている』っていうお話です。(AWS上の)システムは斯くあるべきだ、という都元の持論展開を支える技術として、どんな技術を活用しているのかをご紹介したいと思います。
人によって興味は様々だと思うので、響くものとそうでないものはあるとは思いますが、キーワードを並べるとこんな感じ。これら全てをお話できるかどうかまだ分かりませんが。
- Java8 + Spring Boot
- DDD
- Flyway
- Docker
- API
- OAuth 2.0
- HATEOAS, HAL and embed
- REST without PUT
- Swagger
その他にも、当システムを構築するにあたって必要となって作ったツールを汎用化して、OSSとして公開したりもしています。例えばgradle-aws-pluginやBrian等。その話にも触れられればと思っています。
まとめ
以上、こんなことをお話しようと思っています、というご紹介をさせて頂きました。まだスライドを1枚も作っていません(!)ので、実際はどう転ぶかわかりませんが、最近の都元が考えていることの片鱗をお伝えできれば、そして皆様のプロジェクトにイイトコ取りでお役に立てれば、と思っている次第です。お時間があれば、是非C-1セッションを聞きに来てください。