SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

【デブサミ2016】セッションレポート

【デブサミ2016】19-A-3レポート
AWSで実現するクラウドネイティブなアプリ開発のポイント

  • X ポスト
  • このエントリーをはてなブックマークに追加

クラウドネイティブなアプリケーションの実装パターン

 続いてのトピックは「クラウドネイティブなアプリ開発」。“足回り”となるクラウドネイティブなアーキテクチャの上に乗せるアプリケーションをどのように開発していくかについて西谷氏は解説を続けました。

 このトピックにおいて西谷氏が挙げたのが「The 12 Factor App」。これはモダンなWebアプリケーション開発のための方法論をまとめたもので、西谷氏曰く「直接的にマイクロサービスと関連する話ではないですが、ぜひ一読しておくべき」ドキュメントとなっています(※こちらについては日本語訳も整備されているので、興味のある方はぜひ読んでみてください)。言及されている主なトピックは以下のとおりです。

  • Codebase(コードベース)
  • Dependencies(依存関係)
  • Config(設定)
  • Backing services(バックエンドサービス)
  • Disposability(廃棄容易性)
  • Dev/prod parity(開発/本番一致)
  • Log(ログ)
  • Admin process(管理プロセス)

 西谷氏はこれらを踏まえ、「マイクロサービスであればこういうことを考えて実装した方が良いです」といった“アプリケーションの実装パターン”についてもいくつか例を挙げて説明しました。シンプルなものから複雑なものまでいくつかの典型的なパターンがあり、チームで許容できるやり方を取捨選択して決め、また、最初に選んだやり方を最後まで貫く必要はなく、柔軟に変更していくことが良い、と西谷氏はパターンの活用方法、向き合い方についてコメントしました。

  • Graceful Degradation(ステータスコード:500のエラーは返さない、一部に障害があっても全体停止は引き起こさせない)
  • Throttling(内部サービスによる偶発的なDoSへの対応)
  • Fail Fast(エラーを検知したらなるべく早く返す)
  • Static Fallback(エラー発生時には何らかの静的なコンテンツもしくは値を返す)
  • Retry(エラー発生時は少し待った上でリトライする)
  • Caching(サービス呼び出しに対するレスポンスのキャッシュ)
  • Circuit Breaker(発生したエラー数を記録し、閾値を超えたらフォールバックプランを実行)
  • Smooth Internal Traffic(キューの利用、スパイク的な負荷をハンドリング)

少数精鋭のチームで開発ライフサイクルを高速化

 最後となる3つ目のテーマは「クラウドネイティブなデプロイ」について。DevOpsはソフトウェア開発のライフサイクルであり、デリバリーパイプラインを作り、顧客からのフィードバックを得るというライフサイクルを回していき、効率的にスピードアップさせる、というのがポイントです。

 Amazonでは、アイデアを早く形にしてフィードバックに対応していくために、大規模な構成ではなく、少数精鋭のチームで物事を行うことでより機動的にプロジェクトを進められると考えられています。この考えをAmazon社では「Two Pizza Rule」と呼んでいます。意味としては、“2枚のピザで賄える人数が、チームとしてちょうど良い数である”とのことです。AWSの場合、このチームのことを“サービスチーム”と呼んでおり、各AWSサービスの開発から運用・サポートに至るまでの一連の流れすべてをこのサービスチーム単位で行っています。マイクロサービスな開発サイクルの場合、コンポーネントごとにデリバリーパイプラインが用意されていて、実行・リリースがされています。

 そんなDevOpsを支援するAWSのサービスも現在用意されています。

 CodePipelineは、Amazonと同様の継続的デリバリとリリースの自動化を実現。Amazonの内部ツールとして利用されていたものをサービスに昇華させたCodeDeployは、簡単で信頼性の高いデプロイを実現しています。CodeCommitは、一般的なGitのツールをAWS上で利用可能としたものになっています。

 最後に西谷氏は「今回お話したトピックはそれぞれで1つのセッションができる位の奥深いものです。興味を持ったものがあればぜひ深掘りしてみてください」と総括し、セッションの発表を締めました。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
【デブサミ2016】セッションレポート連載記事一覧

もっと読む

この記事の著者

しんや(シンヤ)

2010年末~2013年前半位までの期間で興味のある勉強会に頻繁に参加。参加してきた勉強会のレポートブログとTogetterをひたすらまとめ続け、まとめ職人(自称/他称含む)として暫く過ごしておりました。色々な縁あってDevelopers Summit 2013では『公募レポーター』も務めました。2013年05月『出張ブロガー』を経て2013年08月にクラスメソッド株式会社へ転職。現在は業務(AWS及びその周辺技術を扱う)の...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9303 2016/03/23 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング