サーバーレスアプリケーションのための CI/CD パイプライン構築 

Similar documents
PowerPoint Presentation

サーバレスで王道 Web フレームワークを使う方法

Presentation Title Here

Startup_on_AWS_usecases_StartupDay

スピーカースライド作成前の確認シート例

Presentation Title Here

C# 開発者必見、Docker コンテナへの継続的デプロイメント on AWS ~CodeCommit, CodeBuild, CodePipeline, CloudFormation, ECR, ECS を活用した CI/CD ~

Going Serverless with AWS

PowerPoint Presentation

よくある問題を解決する~ 5 分でそのままつかえるソリューション by AWS ソリューションズビルダチーム

Presentation Title Here

AWS Deck Template

AWS Mobile Deep Dive - 入門から実践までの最短コース 〜 ライブコーディングで学ぶ AWS を活用したモバイルアプリの開発 〜

AWS Deck Template

PowerPoint プレゼンテーション

AWS Well-Architected フレームワークによるクラウド ベスト プラクティス

クックパッドのテスト自動化

開発者向けクラウドサービスを活用したリッチな Web/ モバイル アプリケーションの構築手法 杉達也 Fusion Middleware 事業統括本部担当ディレクター [2013 年 4 月 9 日 ] [ 東京 ]

Managing and Sharing MATLAB Code

PowerPoint Presentation

AWS における ベストパートナーを見つける 7 つの方法 相澤恵奏アマゾンウェブサービスジャパンアライアンス技術本部テクニカルイネーブルメント部部長パートナーソリューションアーキテクト #AWSInnovate 2019, Amazon Web Services, Inc. or its affi

Microsoft Visual Studio 2010 Professional Data Sheet

PowerPoint Presentation

Asakusa Test Driver

PowerPoint プレゼンテーション

PowerPoint Presentation

Oracle SOA Suite 11gコンポジットに対するSOASchedulerの構成

目次 API 公開の課題 なぜAPI 管理が必要なのか API 管理のベストプラクティス IBM API Connect を使ったAPI 管理 オージス総研のAPI 運用サービスの紹介 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 2

実践 Infrastructure as Code

AWS 認定 DevOps エンジニア - プロフェッショナルサンプル試験問題 1) あなたは Amazon EBS ボリュームを使用する Amazon EC2 上で実行されているアプリケーションサーバ ー向けに 自動データバックアップソリューションを導入する業務を担当しています 単一障害点を回避し

開発ツールのコラボレーション機能を検証する

28th Embarcadero Developer Camp

Install / Protect / Monetize InstallShield 全機能 データシート プロフェッショナルなインストールの作成 PREMIER PROFESSIONAL EXPRESS MSIX パッケージ サポート フレームワークをサポート Windows Installer(

intra-mart Accel Platform

【AWS Tech 再演】Amazon EC2 Systems Manager によるハイブリッド環境の管理

AWS の運用監視入門 (AWS CloudWatch)

Presentation Title Here

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

AWS のコンテナ管理入門(Amazon EC2 Conatainer Service)

AWS 上でのサーバーレスアーキテクチャ 入 門 AWS Black Belt Online Seminar 2016 アマゾンウェブサービスジャパン株式会社 ソリューションアーキテクト清 水崇之 , Amazon Web Services, Inc. or its Aff

PowerPoint Presentation

タイトルを1~2行で入力 (長文の場合はフォントサイズを縮小)

5-3- 応統合開発環境に関する知識 1 独立行政法人情報処理推進機構

PowerPoint Presentation

_DockerとAmazon_ECSでDevOpsを進化させる_public

iNFUSE インフューズ

AWS Client VPN - ユーザーガイド

AWS CodePipeline​ 内に位置している - ユーザーガイド

GitLab + Dokku で作る CI/ CD 環境 Kazuhiro NISHIYAMA 第 78 回 Ruby 関西勉強会 2017/07/29 Powered by Rabbit 2.2.0

スライド 1

スライド 1

Slide 1

AWS におけるマルチアカウント管理の手法とベストプラクティス

Microsoft PowerPoint - FormsUpgrade_Tune.ppt

スライド 1

JACi400のご紹介~RPGとHTMLで簡単Web化~

Microsoft Word - J-jdev_dba_db_developers.doc

PowerPoint プレゼンテーション

<4D F736F F F696E74202D208D E9197BF FC96E582C68AE98BC682AA F08CF68A4A82B782E D835A E

モバイルバックエンド基盤 REST API リファレンス (API Gateway/Cloud Functions 編 ) Ver 年 9 月 22 日 日本電気株式会社

7th CodeGear Developer Camp

目次 はじめに 4 概要 4 背景 4 対象 5 スケジュール 5 目標点 6 使用機材 6 第 1 章 C# 言語 7 C# 言語の歴史 7 基本構文 8 C 言語との違い 9 Java 言語との違い 10.Netフレームワーク 10 開発資料 10 第 2 章 Mono 11 Monoの歴史 1

Agileイベント・フレームワークとOracle BPELを使用したPLMワークフローの拡張

Oracle Un お問合せ : Oracle Data Integrator 11g: データ統合設定と管理 期間 ( 標準日数 ):5 コースの概要 Oracle Data Integratorは すべてのデータ統合要件 ( 大量の高パフォーマンス バッチ ローブンの統合プロセスおよ

目次 なぜAPIが注目されているのか? API 公開のライフサイクル 事例概要 Amazon API Gateway 利用のポイント APIソリューションご紹介 Copyright 2017 OGIS-RI Co., Ltd. All rights reserved. 2

目次 はじめに 研修実績管理システムの概要 AWS Lambdaを利用した開発 チャットボットの開発 Webアプリケーションの開発 アクセス制御と認証 CI/CD実現のためのポイント おわりに 本資料に記載されているロゴ システム名称 企業名称 製品名

クラウドネイティブにセキュリティを 活用する!API を連携して実装する方法

〜マイクロサービスを設計する全ての開発者に送る〜クラウド時代のマイクロサービス設計徹底解説!

CodeRecorderでカバレッジ

R80.10_FireWall_Config_Guide_Rev1

利用者

PowerPoint プレゼンテーション

FINAL FANTASY XV POCKET EDITION を支える AWS サーバレス技術 LOGO ILLUSTRATION: 2016 YOSHITAKA AMANO 2018 SQUARE ENIX CO., LTD. All Rights Reserved.

Presentation Title Here

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

インテル(R) Visual Fortran コンパイラ 10.0

Agenda! 事前準備

ソフト活用事例③自動Rawデータ管理システム

Oracle Business Rules

TeX LiveのCIテスティング

Microsoft PowerPoint - 1_コンパイラ入門セミナー.ppt

統合開発環境CubeSuite+ V へのバージョンアップのお知らせ

— intra-mart Accel Platform セットアップガイド (WebSphere編)   第7版  

Microsoft PowerPoint - Tutorial_2_upd.ppt

5-3- 基統合開発環境に関する知識 1 独立行政法人情報処理推進機構

インストール後のアプリケーション実行

Machine Learning on AWS

JavaもJava Scriptも! コンテナ型アプリケーション開発PaaS登場

MIRACLE MH for SNMP サポート SLA( サービスレベルアグリーメント ) ML-CS-0747 本書は サイバートラスト株式会社 ( 以下 サイバートラスト ) が MIRACLE MH for SNMP サポート ( 以下当サポートサービス ) の内容について説明するものである

データベースの近代化:シンプルなクロスプラットフォーム、最小のダウンタイムで実現するクラウド移行

スライド 1

サーバレスアーキテクチャで実現した『M-1グランプリ2015』敗者復活戦投票システム』

Microsoft Word - AWSBlueprint final.docx

GettingStartedTK2

製品概要

2D/3D CAD データ管理導入手法実践セミナー Autodesk Vault 最新バージョン情報 Presenter Name 2013 年 4 月 2013 Autodesk

2017/8/2 HP SiteScope software 監視機能対応表 この監視機能対応表は HP SiteScope software v11.33) に対応しています モニタ モニタ説明 モニタ説明 SiteScope for Windows SiteScope for Linux ネット

HIGIS 3/プレゼンテーション資料/J_GrayA.ppt

目次 1. 概要 AWS 環境構築の流れ アカウントの作成 AWS アカウント Google アカウント (Google Maps Key 取得 ) Elastic Beanstalk でアプリケーション作成... 4

Transcription:

サーバーレスアプリケーションの ための CI/CD パイプライン構築 Solution Architect Takashi Koyanagawa 2017/6/2 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

T H A N K S T O O U R F R I E N D S A T :

本セッションの Feedback をお願いします 受付でお配りしたアンケートに本セッションの満足度やご感想などをご記入くださいアンケートをご提出いただきました方には もれなく素敵な AWS オリジナルグッズをプレゼントさせていただきます アンケートは各会場出口 パミール 3F の EXPO 展示会場内にて回収させて頂きます

自己紹介 小梁川貴史 ( こやながわたかし ) パートナーソリューションアーキテクト 経歴 APNさまへの技術支援とくにIoT 向け アーキテクチャの検討支援やレビューなど 電機メーカーにて 自社 Webサービスの設計から運用まで経験 AWSのユーザとして4 年半 開発 運用を経験 好きなサービス AWS IoT Amazon Kinesis AWS Lambda

本セッションの対象 CI/CD など基本的の用語はご理解頂けている方 サーバレス環境の構築に興味がある方

本セッションでご理解いただきたい点 サーバレス環境でのデプロイ手法 SAM を使ったデプロイ方法 SAM と AWS Code 系サービスの連携方法

継続的なインテグレーション / デプロイの必要性

リリースプロセスの 4 つの主なフェーズ ソースビルドテスト運用.java ファイルなどのソースコードをチェックイン 新しいコードのピアレビュー コードのコンパイル ユニットテスト スタイルチェッカー コードメトリック コンテナイメージの作成 他のシステムとの統合テスト ロードテスト UI テスト 侵入テスト 本番環境にデプロイ

CI / CD とは CI (Continuous Integration) コード変更を定期的に master へマージし ビルド / テストを自動で実行する手法 CD(Continuous Delivery/Continuous Deployment) Continuous Delivery: 自動化されたテストを通過した後に Production へのリリース判断をした後にリリースする手法 Continuous Deployment: 自動化されたテストを通過した後 自動でプロダクションへリリースを実施する手法 CI CD (Delivery) CD (Deployment) ソース ビルド テスト 運用 リリース チェック

継続的デリバリのメリット ソフトウェアの 開発者の バグをすばやく アップデートの リリースプロセスを 生産性を改善 検出して対処 配信を高速化 自動化

サーバレス環境構築のフレームワークの紹介

サーバレス環境構築エコシステム SAM (Serverless Application Model) Chalice Framework 本日のお話

Serverless Application Model サーバレスアプリに最適化された AWS CloudFormation の拡張 CloudFormtion でサポートされているものは利用可能 既存のファンクションを SAM テンプレートとしてエクスポート可能 apache 2.0 ライセンス ユーザが SAM を利用して エコシステムを作成することも可能 サーバレス用のリソースタイプ

SAM で指定できるサーバレスのリソース AWS Lambda AWS::Serverless::Function AWS Lambdaファンクション メモリ設定など ファンクション自体の設定が可能 イベントソースの設定が可能 Amazon API Gateway AWS::Serverless::Api Amazon API GatewayのAPI 作成 エンドポイント経由で呼び出されるリソースとメソッドの定義 Swaggerを利用して管理す場合は必須定義 Amazon DynamoDB AWS::Serverless::SimpleTable DynamoDB のシンプルなテーブルを作成 詳細な設定が必要な場合は 通常の AWS::DyanmoDB::Table を使用する

SAM のリリースに伴い以下のコマンドが追加 $ aws cloudformation pakage zip fileとして デプロイパッケージを作成 Amazon S3バケットへのパッケージアップロード S3 URIによるCodeUriプロパティの追加 $ aws cloudformation deploy CloudFormation の CreateChangeSet API をコール CloudFormation の ExecuteChangeset API をコール

Severless 用の Tempalete の説明 SAM templete の yaml Serverless 用の template である宣言 Cloudformation 用のファイルへ変換された yaml xxx 引数で指定した S3 バケットへの upload 情報が作成される package コマンド実行

このテンプレートのアーキテクチャ put Key: test(string) AWS Lambda Amazon DynamoDB role

DynamoDB のテーブル名を指定しないで作成 自動で作成されたテーブル名を template から Ref で参照しているので Lambda の環境変数にも適用されている

SAM が提供するサンプル https://github.com/awslabs/serverless-application-model/tree/master/examples/2016-10-31

SAM と AWS Code 関係サービスとの連携

AWS CodePipeline アプリケーションのすばやく信頼できるアップデートを可能にする継続的デリバリサービス ソフトウェアリリースプロセスのモデル化と見える化 コードが変更されるたびにコードをビルド テスト デプロイ サードパーティツールや AWS との統合

CodePipeline MyApplication Source Source GitHub Build JenkinsOnEC2 Jenkins Deploy JavaApp Elastic Beanstalk ステージ アクション トランジション パイプライン

CodePipeline MyApplication Source Source GitHub Build JenkinsOnEC2 Jenkins NotifyDevelopers Lambda 並列アクション Deploy JavaApp Elastic Beanstalk

CodePipeline MyApplication Source Source GitHub Build JenkinsOnEC2 Jenkins TestAPI Runscope NotifyDevelopers Lambda 逐次アクション Deploy JavaApp Elastic Beanstalk

AWS CodeCommit Secure, scalable, managed Git source control スターンダードな Git tool が利用可能 Amazon S3 の Scalability, availability, durability なストレージを利用 Encryption at rest with customer-specific keys レポジトリサイズの上限なし 5/27 Tokyo region launch! Post commit hooks で SNS/Lambda を呼び出せる

AWS CodeBuild 完全なマネージドのビルドサービスでソースコードのコンパイル 実行 テスト ソフトウェアパッケージの生成をサポート 継続的なスケールと同時複数ビルドの実行 Docker イメージによってニーズにマッチするカスタムなビルド環境を構築可能 利用したコンピュータリソース / 分のみの支払い CodePipeline や Jenkins との統合が可能

AWS CodePipeLine との連携 AWS CodePipeline 6)Deploy 指示 1)code push 2) 変更検知 4)build 指示 3) ソースを S3 へ AWS CodeCommit 4)build 実行 bulidspec.yml で定義 AWS CodeBuild 4)build 必要ファイルの保管 AWS CloudFormation 5)CloudFormation へ展開 bucket bucket template-output.yaml AWS Lamba の zip 化

AWS CodePipeline でデプロイフローを作る Source AWS CodeCommit Build AWS CodeBuild Stage AWS CloudFormation Deploy AWS CloudFormation レポジトリからソース取得 buildspec.yml の実行 CFn template の作成 CFn スタックの変更 CFn スタックの実行 http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/automating-deployment.html

Source の設定 Github/S3 の登録も可能 repository/branch の指定

build の設定 Jenkins/SolanoCI の指定可能

CloudFormation 更新

CloudFormation 実行設定

本例のソースのスタック SAMText DynamoPut.py template.yaml buildspec.yml SAM 用 ファイル名固定 buildspec は Codebuild の制約でファイル名固定かつ repostory-root ディレクトリに配置が必須 (codebuild の制約 ) http://docs.aws.amazon.com/ja_jp/codebuild/latest/userguide/build-spec-ref.html

bulidspec.yml Cloudformation コマンドを書くのみ 入力 template 出力 template バケット名 出力 template

CodePipeline の実行確認

外部ライブラリを利用したいケース 入力 template 出力 template バケット名 出力 template

Cloudwachlogs で確認 zip ファイル作成前に外部ファイルが取得されているのも分かる

初回構築後に AWS Lambda を修正して push 差分は Lambda のみなので Lambda の deploy のみ

承認フローを追加 AWS CodePipeline 7)Deploy 指示 1) code push 2) 変更検知 4)build 指示 6)Approve チェック 3) ソースを S3 へ AWS CodeCommit 4)build 実行 bulidspec.yml で定義 AWS CodeBuild Amazon SNS AWS CloudFormation 4)build 必要ファイルの保管 5)CloudFormation へ展開 bucket bucket template-output.yaml AWS Lamba の zip 化

承認フローを追加 SNS を作成し 新しいアクション =>Action category=> approval で SNS を関連付けるのみで承認フローが作成できる

AWS CodeStar

幾つかのガイドに従うだけ https://aws.amazon.com/jp/blogs/news/new-aws-codestar/

CI/CD のためのプログラミング

AWS Lambda の設計 テストし易い / 管理しやすい単位で設計をする 例えば upload された photo の解析のユースケース Rekognition scene_detect() 人がいるか? Rekognitionf search_face () 1 つの Lambda の中でも表現可能だが 変更するとテスト対象の範囲は全体になるモノリシックなロジック Polly synthesize_speech()

AWS Step Functions 視覚的なワークフローの提供 分散アプリケーション / マイクロサービスの設定が可能 JSON でのワークフロー定義 ( プログラム開発不要 ) Amazon EC2 / Amazon ECS とのコラボレーション設定も可能

AWS Step Functions

テスト / 運用しやすいようなプログラミングへ AWS Lambda 環境変数の利用 例えば DB 接続し パスワード URL のような環境情報をハードコーディングをせずに 環境変数から取得する 環境変数で log の出力レベルを変更できるようにするなど

まとめ サーバレス環境でのデプロイ手法 SAM を利用した継続的なデプロイワークフロー手法 CI/CD を支える AWS サービス SAM を使うことで従来の知識との組み合わせのレバレッジが生まれる ログの一元管理も一つのメリット サーバレスだからといって特別なことはない 通常のアプリケーションと同じように開発 / 運用が出来る一方でテストの品質は人依存 浮いた工数をテストレビューやテスト開発にあてることで品質を向上させることが可能

AWS Lambda の本が出ます AWS Lambda を網羅した本を出します 2017 年 6 月 9 日マイナビ出版より出版予定 3,240 円 ( 税込 ) Amazon で予約受け付け中 http://amzn.asia/ew2wwpm

Thank You!

Don t Forget Evaluations!