$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
デプロイから考える僕のWEBアプリ開発 / Think from deployment
Search
instreest
May 18, 2019
Technology
0
1k
デプロイから考える僕のWEBアプリ開発 / Think from deployment
JJUG-CCC 2019 Spring #ccc_m2a
2019-05-18(土) 11:00~11:20
発表で使用したスライドです
instreest
May 18, 2019
Tweet
Share
Other Decks in Technology
See All in Technology
寫了幾年 Code,然後呢?軟體工程師必須重新認識的 DevOps
cheng_wei_chen
1
1.3k
計算機科学をRubyと歩む 〜DFA型正規表現エンジンをつくる~
ydah
3
220
Ruby で作る大規模イベントネットワーク構築・運用支援システム TTDB
taketo1113
1
250
RAG/Agent開発のアップデートまとめ
taka0709
0
160
Lessons from Migrating to OpenSearch: Shard Design, Log Ingestion, and UI Decisions
sansantech
PRO
1
110
AI時代の開発フローとともに気を付けたいこと
kkamegawa
0
2.8k
Reinforcement Fine-tuning 基礎〜実践まで
ch6noota
0
170
AWS Trainium3 をちょっと身近に感じたい
bigmuramura
1
140
コミューンのデータ分析AIエージェント「Community Sage」の紹介
fufufukakaka
0
470
チーリンについて
hirotomotaguchi
6
1.8k
年間40件以上の登壇を続けて見えた「本当の発信力」/ 20251213 Masaki Okuda
shift_evolve
PRO
1
100
MLflowで始めるプロンプト管理、評価、最適化
databricksjapan
1
140
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
Navigating Team Friction
lara
191
16k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
Designing Experiences People Love
moore
143
24k
Scaling GitHub
holman
464
140k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.2k
KATA
mclloyd
PRO
32
15k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.4k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.1k
Transcript
デプロイか ら 考 え る 僕 の WEBアプリ開発 JJUG-CCC 2019
Spring #ccc_m2a 株式会社アーチ 井上 和宏 2019-05-18(土) 11:00~11:20
名前 : 井上 和宏 所属 : 株式会社アーチ システム部 ・業務システム保守エンジニア(33歳) ・入社以来10年ほど開発と保守に携わる
日課 : 息子と『ピタゴラスイッチ』を見ること 2 自己紹介
目次 1.WEBアプリ開発のきっかけ 2.デプロイから考える 3.ビルドから考える 4.そのほか 3
WEBアプリ開発のきっかけ 4
東京公共交通オープンデータチャレンジ HTTPS REST API 鉄道、バス、飛行機のデータを使ったアプリコンテスト アプリケーション JSON 例えば,駅時刻表 路線運行状況 列車走行位置
5
「デプロイから考える僕のWEBアプリ開発」 <はなすこと> WEBアプリのフレームワークとビルドツールについて 選んだ理由とその経緯をご紹介します <おことわり> ・個人的な試行錯誤の経験に基づく私見です ・クラウド と データベース はノータッチです
・このセッションでは 「デプロイ」を本番リリースに近い意味で使います 本日のテーマ 6
7 全体像 本日のセッションでは 黄色 近辺の話をします CentOS 7 Java12 CDN firewalld
VPS API Gradle build SSH SCP Java11 TeraTerm
目次 1.WEBアプリ開発のきっかけ 2.デプロイから考える 3.ビルドから考える 4.そのほか・まとめ 8
サーバーの構築は大変な手間なので極力少なくしたい 9 Apache WEB Tomcat DBMS AP DB Java 開発の課題(1)
そのものずばりの資料が2014年に発表されていました 「Spring Bootで変わるJavaアプリ開発!」 槙 俊明さん(@making)のスライド 2014-08-13 日本スプリングユーザ会 勉強会 https://www.slideshare.net/makingx/spring-boot-java-jsug 開発の課題(2)
10
スライド引用(1) 11 68 of 114
スライド引用(2) 12 70 of 114
APサーバーのインストールが不要になります 構成変更のイメージ Javaアプリケーション APサーバー マシン・OS 13 Javaプログラム フレームワーク 組込APサーバー
スライド引用(3) 14 73 of 114
<メリット> (1) Javaコマンドのみで実行できます (2) SpringBootならではの多くのメリット <デメリット> (1) SpringFramework と実行可能jar (2)
個人的な事情 SpringBoot 15
そこでマイクロフレームワーク 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 start 19
目次 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) 24 1 2 3 4 5 6
モジュールパス指定での実行形式には未対応です とはいえアプリ自体もモジュール未対応です ▪クラスパス指定 > java --class-path %APP_HOME%/lib/* net.shirokin.odpt.ApplicationMain ▪モジュールパス指定(の想定) >
java --module-path %APP_HOME%/lib/* --module net.shirokin.odpt/ApplicationMain Gradle:実行スクリプト生成(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円 維持コスト 28 CDN さくらのクラウド 0円 インバウンド側トラフィック 0円 アウトバウンド側トラフィック 5円 /GiB
29 全体像 CentOS 7 Java12 CDN firewalld VPS API Gradle
build SSH SCP Java11 TeraTerm
<開発の所感> 世の中のソフトウェアはたくさんの人の尽力により 成り立っていると実感しました。 一人でできることには限界がある 仲間を見つけて一緒にやると楽しくなる、と思います 開発の顛末 30
おわりに 31 https://tokyochallenge.odpt.org/