Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
都元ダイスケ Miyamoto
9,186 views
20150828 JSUG Spring in Summer 2015 - Spring BootアプリケーションをAmazon Elastic Beanstalkに一発でデプロイしてみよう
20150828 JSUG Spring in Summer 2015 - Spring BootアプリケーションをAmazon Elastic Beanstalkに一発でデプロイしてみよう
Technology
◦
Read more
20
Save
Share
Embed
Embed presentation
Download
Downloaded 41 times
1
/ 51
2
/ 51
3
/ 51
4
/ 51
5
/ 51
6
/ 51
7
/ 51
8
/ 51
9
/ 51
10
/ 51
11
/ 51
12
/ 51
13
/ 51
14
/ 51
15
/ 51
16
/ 51
17
/ 51
18
/ 51
19
/ 51
20
/ 51
21
/ 51
22
/ 51
23
/ 51
24
/ 51
25
/ 51
26
/ 51
27
/ 51
28
/ 51
29
/ 51
30
/ 51
31
/ 51
32
/ 51
33
/ 51
34
/ 51
35
/ 51
36
/ 51
37
/ 51
38
/ 51
39
/ 51
40
/ 51
41
/ 51
42
/ 51
43
/ 51
44
/ 51
45
/ 51
46
/ 51
47
/ 51
48
/ 51
49
/ 51
50
/ 51
51
/ 51
More Related Content
PPTX
何者(Dockerって)
by
Koji Saiki
PPTX
AWS Elastic BeanstalkとAWS Lambdaのご紹介
by
Akio Katayama
PDF
【子ども向けハンズオン】 ゲームで学ぼう、プログラミング!
by
Java女子部
PDF
Javaでのバリデーション 〜Bean Validation篇〜
by
eiryu
PPTX
はじめてのSpring Boot
by
なべ
PDF
Spring知っておきたい
by
Yuichi Hasegawa
PDF
Aws elastic beanstalk-handson-summit2012
by
Akio Katayama
PPT
Jawsug elastic beanstalk_150207
by
Yutaka Hiroyama
何者(Dockerって)
by
Koji Saiki
AWS Elastic BeanstalkとAWS Lambdaのご紹介
by
Akio Katayama
【子ども向けハンズオン】 ゲームで学ぼう、プログラミング!
by
Java女子部
Javaでのバリデーション 〜Bean Validation篇〜
by
eiryu
はじめてのSpring Boot
by
なべ
Spring知っておきたい
by
Yuichi Hasegawa
Aws elastic beanstalk-handson-summit2012
by
Akio Katayama
Jawsug elastic beanstalk_150207
by
Yutaka Hiroyama
Viewers also liked
PDF
LOD連続講義 第5回「LODの作り方・使い方」
by
Fuyuko Matsumura
PDF
Google App Engine Java 入門
by
tantack
PDF
Web制作会社様向け 知って得するMicrosoft Azureの概要と使い方!
by
Azure 相談センター
PDF
サーバーレスアーキテクチャのすすめ(公開版)
by
Keisuke Kadoyama
PDF
S94 Microsoft Azure セキュリティについて
by
Microsoft Azure Japan
PDF
機能とコストで考えるAws
by
Junichiro Ueno
PDF
Javaプログラマーももう逃げられない。マイクロサービスとAPIの世界。
by
Takakiyo Tanaka
PDF
ポストJenkins時代のCI戦略
by
GuildWorks
PPTX
ぱぱっと理解するSpring Cloudの基本
by
kazuki kumagai
PDF
S03 企業内システムと Microsoft Azure の VPN 接続
by
Microsoft Azure Japan
PPTX
Seasar2で作った俺たちのサービスの今
by
Koichi Sakata
PPTX
Google Compute Engine 入門
by
Yuko Oshima
PDF
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
by
日本Javaユーザーグループ
PDF
Java開発の強力な相棒として今すぐ使えるGroovy
by
Yasuharu Nakano
PDF
Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!
by
Java女子部
PDF
Spring Bootをはじめる時にやるべき10のこと
by
心 谷本
PDF
Database migrations with Flyway and Liquibase
by
Lars Östling
PPTX
Google App Engine/Goを触ってみた
by
Masahiro Matsumoto
PDF
Microsoft Azure 概要 (2015 年 4 月版)
by
Osamu Monoe
LOD連続講義 第5回「LODの作り方・使い方」
by
Fuyuko Matsumura
Google App Engine Java 入門
by
tantack
Web制作会社様向け 知って得するMicrosoft Azureの概要と使い方!
by
Azure 相談センター
サーバーレスアーキテクチャのすすめ(公開版)
by
Keisuke Kadoyama
S94 Microsoft Azure セキュリティについて
by
Microsoft Azure Japan
機能とコストで考えるAws
by
Junichiro Ueno
Javaプログラマーももう逃げられない。マイクロサービスとAPIの世界。
by
Takakiyo Tanaka
ポストJenkins時代のCI戦略
by
GuildWorks
ぱぱっと理解するSpring Cloudの基本
by
kazuki kumagai
S03 企業内システムと Microsoft Azure の VPN 接続
by
Microsoft Azure Japan
Seasar2で作った俺たちのサービスの今
by
Koichi Sakata
Google Compute Engine 入門
by
Yuko Oshima
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
by
日本Javaユーザーグループ
Java開発の強力な相棒として今すぐ使えるGroovy
by
Yasuharu Nakano
Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!
by
Java女子部
Spring Bootをはじめる時にやるべき10のこと
by
心 谷本
Database migrations with Flyway and Liquibase
by
Lars Östling
Google App Engine/Goを触ってみた
by
Masahiro Matsumoto
Microsoft Azure 概要 (2015 年 4 月版)
by
Osamu Monoe
More from 都元ダイスケ Miyamoto
PDF
認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio
by
都元ダイスケ Miyamoto
PDF
アプリケーション動作ログ、 ERRORで出すか? WARNで出すか? #cmdevio2019
by
都元ダイスケ Miyamoto
PDF
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
by
都元ダイスケ Miyamoto
PDF
クラスメソッドにおける Web API エンジニアリングの基本的な考え方と標準定義 - Developers.IO 2018 (2018-10-05)
by
都元ダイスケ Miyamoto
PDF
AWSクラウドデータストレージ総論
by
都元ダイスケ Miyamoto
PDF
20170312 F.K様向け ライフパートナーM.M様のご提案
by
都元ダイスケ Miyamoto
PDF
Spring Day 2016 - Web API アクセス制御の最適解
by
都元ダイスケ Miyamoto
PDF
マイクロWebアプリケーション - Developers.IO 2016
by
都元ダイスケ Miyamoto
PDF
Single Command Deployのための gradle-aws-plugin講座
by
都元ダイスケ Miyamoto
PDF
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
by
都元ダイスケ Miyamoto
PDF
体で覚えるSQS! DEVIO-MTUP11-TOKYO-007
by
都元ダイスケ Miyamoto
PDF
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
by
都元ダイスケ Miyamoto
PDF
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
by
都元ダイスケ Miyamoto
PDF
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
by
都元ダイスケ Miyamoto
PDF
20130516 cm課外授業8-aws
by
都元ダイスケ Miyamoto
PDF
20121215 DevLOVE2012 Mahout on AWS
by
都元ダイスケ Miyamoto
PDF
20121206 VOYAGE LT - 名前重要って言うけどさ
by
都元ダイスケ Miyamoto
PDF
20120830 DBリファクタリング読書会第三回
by
都元ダイスケ Miyamoto
PDF
java-ja 第1回 チキチキ『( ゜ェ゜)・;'.、ゴフッ』 - Strategy
by
都元ダイスケ Miyamoto
PDF
DevLOVE Beautiful Development - 第一幕 陽の巻
by
都元ダイスケ Miyamoto
認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio
by
都元ダイスケ Miyamoto
アプリケーション動作ログ、 ERRORで出すか? WARNで出すか? #cmdevio2019
by
都元ダイスケ Miyamoto
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
by
都元ダイスケ Miyamoto
クラスメソッドにおける Web API エンジニアリングの基本的な考え方と標準定義 - Developers.IO 2018 (2018-10-05)
by
都元ダイスケ Miyamoto
AWSクラウドデータストレージ総論
by
都元ダイスケ Miyamoto
20170312 F.K様向け ライフパートナーM.M様のご提案
by
都元ダイスケ Miyamoto
Spring Day 2016 - Web API アクセス制御の最適解
by
都元ダイスケ Miyamoto
マイクロWebアプリケーション - Developers.IO 2016
by
都元ダイスケ Miyamoto
Single Command Deployのための gradle-aws-plugin講座
by
都元ダイスケ Miyamoto
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
by
都元ダイスケ Miyamoto
体で覚えるSQS! DEVIO-MTUP11-TOKYO-007
by
都元ダイスケ Miyamoto
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
by
都元ダイスケ Miyamoto
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
by
都元ダイスケ Miyamoto
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
by
都元ダイスケ Miyamoto
20130516 cm課外授業8-aws
by
都元ダイスケ Miyamoto
20121215 DevLOVE2012 Mahout on AWS
by
都元ダイスケ Miyamoto
20121206 VOYAGE LT - 名前重要って言うけどさ
by
都元ダイスケ Miyamoto
20120830 DBリファクタリング読書会第三回
by
都元ダイスケ Miyamoto
java-ja 第1回 チキチキ『( ゜ェ゜)・;'.、ゴフッ』 - Strategy
by
都元ダイスケ Miyamoto
DevLOVE Beautiful Development - 第一幕 陽の巻
by
都元ダイスケ Miyamoto
20150828 JSUG Spring in Summer 2015 - Spring BootアプリケーションをAmazon Elastic Beanstalkに一発でデプロイしてみよう
1.
Spring Bootアプリケーションを Amazon Elastic
Beanstalkに 一発でデプロイしてみよう Spring in Summer ∼ 夏なのにSpring 2015-08-28 クラスメソッド株式会社 都元ダイスケ #jsug_sis
2.
自己紹介 ✦ よく訓練されたアップル信者、都元です。 ✦ Webアプリ屋出身のAWS屋 ✦
AWS歴約4年(since 2011夏) ✦ Twitter @daisuke_m ✦ 人間CloudFormer ✦ Seasar2からSpringへ
3.
今日は アプリを を使って に一発でデプロイ でコンテナ化して するお話
4.
Do you know? ✦
DBの進化的設計を実現する開発プロセス ✦ 要するにRailsのmigrationのような ✦ 現在のJavaでいうFlywayのような ✦ EclipseプラグインによるER図エディタ 2006-20 Jiemam
5.
Jiemamy ✦ DBの進化的設計 ✦ アプリケーションのビルドに伴って ✦
アプリケーションが依存するDBの構築を自動化 ✦ DBスキーマに対して変更管理を適用
6.
スマートビルド / デプロイ –Miyamoto,
Daisuke (2006) リポジトリからコードをチェックアウトし、 必要に応じて環境固有の設定をした後、 コマンド1つで起動・デプロイができるべき 2006年にここまで言ってたかどうか忘れましたが、 2008年には確実に言ってた。 この考えは現在も変わっていません。
7.
ってなことを訴え始めた2006年 ✦ あの頃の俺は青かった。 ✦ 自動化と管理の対象はDBじゃない。 ✦DBを含む、インフラ全部だ。
8.
時は流れ2013年… ✦ 世はまさに大クラウド時代! ✦ AWSは全てがAPI! ✦
Infrastructure as Code! ✦ コマンド1つで、アプリケーションのビルド、 インフラの構築、デプロイまでが実現できる世界
9.
Single Command Deploy ThoughtWorks,
Inc. Technology Radar March 2012 ここまでイントロ
10.
回線があればDemo ✦ 前提条件 ✦ インターネット接続回線があって ✦
AWSアカウントを持っていて ✦ EC2キーペアの発行・登録が終わっていて ✦ S3のバケットが1つ作ってあって ✦ アクセスキーを↓規定の場所に記述してある ~/.aws/credentials ✦ http://dev.classmethod.jp/cloud/aws/exclusive- aws-credentials-location/
11.
$ ### チェックアウト### $
git clone git@github.com:classmethod-aws/berserker.git ~/tmp/ sis-demo $ cd ~/tmp/sis-demo $ git checkout refs/tags/sis-demo $ #### ここは各環境で異なるところ ### $ cp env/_sample.gradle env/personal.gradle $ sed -i '' -e 's/templateBucket:.*$/templateBucket: "cf- templates-1r72h3gknbax2-ap-northeast-1",/' env/personal.gradle $ sed -i '' -e 's/KeyName:.*$/KeyName: "miyamoto-kp1",/' env/ personal.gradle $ diff env/_sample.gradle env/personal.gradle $ ### デプロイ・HTTPアクセス・撤収 ### $ ./gradlew -is awsFullDeploy $ curl -s ... $ ./gradlew -is awsFullUndeploy
12.
Spring Boot
13.
最近のJavaフレームワーク ✦ Play Framework ✦
Dropwizard ✦ Ninja framework ✦ Spring Boot ✦ アプリケーションサーバ (コンテナ)準備不要の、スタンドアローンアプリ。 ✦ Javaプロセスを1つ立ち上げればHTTPサーバが動く。
14.
Spring Bootの主な特徴 ✦ 簡単起動 ✦
$ java -jar your-app.jar ✦ クラスパス設定やコンテナ準備不要。 ✦ 設定の自動化 ✦ classpath内のクラスの有無によって自動設定 ✦ 設定のカスタマイズはアノテーションで ✦ Spring Bootを使ってみよう ✦ http://dev.classmethod.jp/server-side/spring-boot/
16.
Flyway ∼ DBの進化的設計 ✦
Jiemamy is dead ✦ スキーマにバージョンを付与 ✦ 前バージョンからの差分SQLを自作する ✦ どこまで適用したかは、実際のDB上に管理テーブルを作って記録 ✦ 未適用の差分SQLを順次適用することによるマイグレーション ✦ ただし、自動化されたロールバックは不可能 ✦ Flyway with Spring Boot でDBマイグレーションを自動化する ✦ http://dev.classmethod.jp/server-side/flyway-with-spring-boot/
18.
Docker
19.
1プロセスのための環境 ✦ 一般的にサーバ上では様々なプロセスが起動 ✦ Applicationの実行には直接関係無いものも多数 ✦
Applicationプロセスとしてはザックリと、これだけあ れば充分じゃない? ✦ プロセスが稼働する基盤 ✦ プロセスが読み書きする状態(filesystem) ✦ 他のプロセスは見えなくて良い。 ✦ 他のプロセス用のファイルも見えなくていい。
20.
Docker for Spring
Boot ✦ 最小限のファイルシステムにJavaをインストー ルし、your-app.jar を取り込んだDockerイメー ジを作成 ✦ イメージからDockerコンテナ(プロセス環境) を作成し、その中で java プロセスを起動 ✦ Docker と Spring Boot は相性が良い。
21.
Dockerfileの例 FROM java:openjdk-8-jdk EXPOSE 8080 WORKDIR
/opt/berserker/ ADD logback.xml /opt/berserker/logback.xml ADD berserker-x.xx.jar /opt/berserker/ CMD /usr/bin/java -DJDBC_CONNECTION_STRING=$JDBC_CONNECTION_STRING ... -Dspring.profiles.active=$SPRING_PROFILES_ACTIVE -Dlogging.config=/opt/berserker/logback.xml -Dserver.port=8080 -jar berserker-x.xx.jar OpenJDK 8 インストール済みの ファイルシステムイメージ アプリケーション本体jarの組み込み 起動コマンド
23.
Amazon Elastic Beanstalk
24.
AWSの基礎知識 ✦ ネットワーク:Amazon VPC ✦
データベース・サーバ:Amazon RDS ✦ アプリケーション・サーバ:Amazon EC2
25.
基本的な構成 (1) Single-AZ構成 ✦ 可用性が足りない ✦
サービスを止めずにメンテナンスできない ✦ スケーラビリティが足りない ✦ 付加が増えても垂直にしかスケールできない サーバは落ちるものだし、水平スケール出来るのが望ましい 可用性が欲しい・スケーラビリティが欲しい
26.
基本的な構成 (2) Multi-AZ構成 ✦ AZ(
AWSのデータセンター)が1つ 丸ごとぶっ飛んでも、サービスが継続 できる ✦ 負荷が増えたら水平にスケールできる ✦ ただし、アプリケーション・サーバを ステートレスに保たなければならない ✦ データをファイルシステムに書かない ✦ RDBやS3に書き出す
27.
Elastic Beanstalk ✦ このようなWebシステムの基本構成を自動構築 ✦
開発者はApplication Bundle(Beanstalkの作 法に従ったファイルを含有したZIPファイル)を 作成し、AWSに食わせる ✦ これだけで、アプリの動作環境が構築完了する
28.
Application Bundle ✦ App一式を含むZIPファイル ✦
Spring Bootアプリケーション(jar) ✦ logback.xml(ログ設定) ✦ Dockerfile(前述) ✦ これをZIPで固めてAmazon S3にアップロード
29.
CloudFormation ✦ Beanstalkの守備範囲 ✦ アプリケーションサーバシステム ✦
ELB, EC2 (AutoScaling) ... ✦ CloudFormationの守備範囲 ✦ システム全体を構成する周辺AWSリソース ✦ Beanstalk, VPC, S3, RDS ...
31.
アプリケーションのデプロイと システムのデプロイ –Miyamoto, Daisuke リポジトリからコードをチェックアウトし、 必要に応じて環境固有の設定をした後、 コマンド1つでシステムの起動・デプロイができるべき
32.
CloudFormation Template + Parameter Parameter Stack Bucket with Objects DynamoDB Table ELB Instances Auto
Scaling Amazon CloudFront 基本的システム構成 S3, DynamoDB, EC2, IAM,AutoScaling, SecurityGroup, ELB, CloudFront Instance Type, クラスタの台数, SSH接続元IP, キー名, ...等
33.
Template JSON、ということはインフラを バージョン管理できる\(^o^)/
34.
インフラの進化的設計 • インフラの構成をTemplateとしてバージョン管理する • TemplateからStackを作る(構築) •
インフラ構成を追加・編集(そしてバージョン管理) • 既存Stackを新しいテンプレートで更新する(成長)
35.
Gradle
36.
Gradle ✦ みなさまご存知のジョブ実行基盤 ✦ Javaの依存ライブラリ管理∼ビルド、パッケー ジング ✦
Spring Bootアプリケーションの起動 ✦ プラグイン:spring-boot-gradle-plugin
38.
ではこれを… ✦ App Bundleの作成に使えないだろうか? ✦
App BundleのS3 uploadに使えないだろうか? ✦ Beanstalkの環境起動に使えないだろうか? ✦ 全部Yes!!
39.
App Bundle作成 task createBundle(type:
Zip, dependsOn: bootRepackage) { archiveName = ... // zipファイル名 from "src/main/bundle" // Dockerfile等 from jar.archivePath // jar }
40.
gradle-aws-plugin ✦ GradleからAWSリソースを操作したい ✦ 参考:
https://github.com/classmethod-aws/ gradle-aws-plugin
41.
CloudFormation操作 cloudFormation { stackName =
'berserker' conventionMapping.stackParams = { // (snip) return stackParams } capabilityIam true templateFile = file('berserker.template') templateBucket = ... templateKeyPrefix = ... } awsCfnMigrateStack.mustRunAfter uploadBundle awsCfnMigrateStack.dependsOn awsCfnUploadTemplate
42.
S3へのリソースアップロード task createBundle(type: Zip,
dependsOn: ...) { // (snip) } task uploadBundle(dependsOn: createBundle, type: AmazonElasticBeanstalkUploadBundleTask) { file project.createBundle.archivePath overwrite project.version.endsWith('-SNAPSHOT') }
43.
Gradle Task Graph
44.
一発タスク task awsFullDeploy(dependsOn: [ uploadBundle, awsCfnUploadTemplate, awsCfnMigrateStackAndWaitComplete ]) task
awsFullUndeploy(dependsOn: [ awsCfnDeleteStackAndWaitCompleted ])
45.
Gradle Task ✦ ./gradlew
bootRun ✦ ./gradlew awsFullDeploy ✦ ./gradlew awsFullUndeploy
46.
システム ポータビリティ
47.
Full Described System ✦
システム構築及び運用のコード化・自動化 ―― Automated ✦ 自動化しない・できない部分はポエムを書く ―― Documented ✦ システムの構成全てが「記述」されている。
48.
✦ 1つのAWSアカウント内に複数の環境を構築できる。 ✦ 例えば本番環境と開発環境等。 ✦
社内で共通のAWSアカウントに展開する。 ✦ あらゆるAWSアカウントに環境を構築できる。 ✦ 例えば個人検証環境。サンドボックス。 ✦ 開発者毎の個人検証用AWSアカウントに展開する。 ✦ あらゆるリージョンに環境を構築できる。 ✦ と、いいかもね。DRの視点で。
49.
環境依存設定 ✦ プロジェクト直下のenvディレクトリに 設定ファイルを置き、それを動的に読み込む -Penv=prd ✦ env/ ✦
.gititnore ✦ _sample.gradle ✦ prd.gradle ✦ dev.gradle ✦ personal.gradle ✦ profile名(AWSのキー) ✦ リージョン名 ✦ EC2キーファイルのパス ✦ 各種CFnパラメータ ✦ ローカルDB名、user、pass ✦ ログ設定ファイルのパス
50.
portability ✦ ./gradlew awsFullDeploy
-Penv=prd ✦ ./gradlew awsFullDeploy -Penv=dev ✦ ./gradlew awsFullDeploy -Penv=personal ✦ 詳しくは Developers.IO 「プロジェクトに対する環境固有設定の導入」 http://bit.ly/gradle-env-dep-config を参照。
51.
Spring BootアプリケーションをAmazon Elastic Beanstalkに一発でデプロイしてみよう まとめ
Download