JJUG-CCC 2019 Spring #ccc_m2a 2019-05-18(土) 11:00~11:20 発表で使用したスライドです
デプロイか ら 考 え る僕 の WEBアプリ開発JJUG-CCC 2019 Spring #ccc_m2a株式会社アーチ 井上 和宏2019-05-18(土) 11:00~11:20
View Slide
名前 : 井上 和宏所属 : 株式会社アーチ システム部・業務システム保守エンジニア(33歳)・入社以来10年ほど開発と保守に携わる日課 : 息子と『ピタゴラスイッチ』を見ること2自己紹介
目次1.WEBアプリ開発のきっかけ2.デプロイから考える3.ビルドから考える4.そのほか3
WEBアプリ開発のきっかけ4
東京公共交通オープンデータチャレンジHTTPSREST API鉄道、バス、飛行機のデータを使ったアプリコンテストアプリケーションJSON例えば,駅時刻表路線運行状況列車走行位置5
「デプロイから考える僕のWEBアプリ開発」<はなすこと>WEBアプリのフレームワークとビルドツールについて選んだ理由とその経緯をご紹介します<おことわり>・個人的な試行錯誤の経験に基づく私見です・クラウド と データベース はノータッチです・このセッションでは「デプロイ」を本番リリースに近い意味で使います本日のテーマ6
7全体像 本日のセッションでは 黄色 近辺の話をしますCentOS 7 Java12CDNfirewalldVPSAPIGradle buildSSH SCPJava11TeraTerm
目次1.WEBアプリ開発のきっかけ2.デプロイから考える3.ビルドから考える4.そのほか・まとめ8
サーバーの構築は大変な手間なので極力少なくしたい9ApacheWEBTomcat DBMSAP DBJava開発の課題(1)
そのものずばりの資料が2014年に発表されていました「Spring Bootで変わるJavaアプリ開発!」槙 俊明さん(@making)のスライド2014-08-13 日本スプリングユーザ会 勉強会https://www.slideshare.net/makingx/spring-boot-java-jsug開発の課題(2)10
スライド引用(1)1168 of 114
スライド引用(2)1270 of 114
APサーバーのインストールが不要になります構成変更のイメージJavaアプリケーションAPサーバーマシン・OS13Javaプログラムフレームワーク組込APサーバー
スライド引用(3)1473 of 114
<メリット>(1) Javaコマンドのみで実行できます(2) SpringBootならではの多くのメリット<デメリット>(1) SpringFramework と実行可能jar(2) 個人的な事情SpringBoot15
そこでマイクロフレームワーク16
(Apache Sparkじゃない方です)組込APサーバーとしてJettyを同梱しパスルーティング機能に特化したWEBフレームワーク作成者:Per Wendelさん(@perwendel)2014-05-11リリース ~ 2019-03-27リリースhttp://sparkjava.com/Spark(1)17
<メリット>(1) Javaコマンドのみで実行できます(2) ドキュメントが大変わかりやすく簡潔でした<デメリット>(1) わりとクセがありますSpark(2)18
Quick start19
目次1.WEBアプリ開発のきっかけ2.デプロイから考える3.ビルドから考える4.そのほか・まとめ20
実行可能jar を使用しない場合⇒依存ライブラリのクラスパス指定が必要です依存といえばビルドツールで解決ですMaven or Gradleデプロイの課題21
Maven Gradle設定ファイルがXML素直にMaven難しいなと感じました設定ファイルがGroovyコメントも書きやすいLinux用の実行スクリプトを生成できるビルドツール22
実行スクリプトとすべての依存ライブラリ(.jar)が圧縮ファイルにまとめて出力されますC:¥workspace¥net.shirokin.odpt¥build¥distributions┣ net.shirokin.odpt.tar┗ net.shirokin.odpt.zip┣ bin┃ ┣ net.shirokin.odpt ・・・Linux用shell┃ ┗ net.shirokin.odpt.bat ・・・Windows用bat┗ lib┣ spark-core-2.9.0.jar┣ jetty-servlet-9.4.15.v20190215.jar┣ ・・・実行スクリプト生成(1)23
実行するコマンドは自前で作成しますtarを展開してバックグランドで起動します(&, exit)$ tar –xvf net.shirokin.odpt.tar$ export JAVA_OPTS=-Xmx4000m$ export EXEC_SH=net.shirokin.odpt/bin/net.shirokin.odpt$ export LOG_FILE=`date "+%Y-%m-%d"`_std.log$ sh $EXEC_SH < /dev/null >> $LOG_FILE 2>&1 &$ exit実行スクリプト生成(2)24123456
モジュールパス指定での実行形式には未対応ですとはいえアプリ自体もモジュール未対応です■クラスパス指定> java --class-path %APP_HOME%/lib/*net.shirokin.odpt.ApplicationMain■モジュールパス指定(の想定)> java --module-path %APP_HOME%/lib/*--module net.shirokin.odpt/ApplicationMainGradle:実行スクリプト生成(3)25
目次1.WEBアプリ開発のきっかけ2.デプロイから考える3.ビルドから考える4.そのほか26
あと何分で次の列車が出発するか一覧表示するアプリhttps://odpt.shirokin.net/開発成果27
サーバー1台 さくらのVPS 972円 /月ドメイン取得 さくらのドメイン 1,852円 /年無料のDNS さくらのVPS 0円SSL証明書 Let’s Encrypt 0円外形監視 さくらのVPS 0円モニタリング Mackerel 0円維持コスト28CDN さくらのクラウド 0円インバウンド側トラフィック 0円アウトバウンド側トラフィック 5円 /GiB
29全体像CentOS 7 Java12CDNfirewalldVPSAPIGradle buildSSH SCPJava11TeraTerm
<開発の所感>世の中のソフトウェアはたくさんの人の尽力により成り立っていると実感しました。一人でできることには限界がある仲間を見つけて一緒にやると楽しくなる、と思います開発の顛末30
おわりに31https://tokyochallenge.odpt.org/