Upgrade to Pro — share decks privately, control downloads, hide ads and more …

デプロイから考える僕のWEBアプリ開発 / Think from deployment

デプロイから考える僕のWEBアプリ開発 / Think from deployment

JJUG-CCC 2019 Spring #ccc_m2a
2019-05-18(土) 11:00~11:20
発表で使用したスライドです

instreest

May 18, 2019
Tweet

Other Decks in Technology

Transcript

  1. デプロイか ら 考 え る
    僕 の WEBアプリ開発
    JJUG-CCC 2019 Spring #ccc_m2a
    株式会社アーチ 井上 和宏
    2019-05-18(土) 11:00~11:20

    View Slide

  2. 名前 : 井上 和宏
    所属 : 株式会社アーチ システム部
    ・業務システム保守エンジニア(33歳)
    ・入社以来10年ほど開発と保守に携わる
    日課 : 息子と『ピタゴラスイッチ』を見ること
    2
    自己紹介

    View Slide

  3. 目次
    1.WEBアプリ開発のきっかけ
    2.デプロイから考える
    3.ビルドから考える
    4.そのほか
    3

    View Slide

  4. WEBアプリ開発のきっかけ
    4

    View Slide

  5. 東京公共交通オープンデータチャレンジ
    HTTPS
    REST API
    鉄道、バス、飛行機のデータを使ったアプリコンテスト
    アプリケーション
    JSON
    例えば,駅時刻表
    路線運行状況
    列車走行位置
    5

    View Slide

  6. 「デプロイから考える僕のWEBアプリ開発」
    <はなすこと>
    WEBアプリのフレームワークとビルドツールについて
    選んだ理由とその経緯をご紹介します
    <おことわり>
    ・個人的な試行錯誤の経験に基づく私見です
    ・クラウド と データベース はノータッチです
    ・このセッションでは
    「デプロイ」を本番リリースに近い意味で使います
    本日のテーマ
    6

    View Slide

  7. 7
    全体像 本日のセッションでは 黄色 近辺の話をします
    CentOS 7 Java12
    CDN
    firewalld
    VPS
    API
    Gradle build
    SSH SCP
    Java11
    TeraTerm

    View Slide

  8. 目次
    1.WEBアプリ開発のきっかけ
    2.デプロイから考える
    3.ビルドから考える
    4.そのほか・まとめ
    8

    View Slide

  9. サーバーの構築は大変な手間なので極力少なくしたい
    9
    Apache
    WEB
    Tomcat DBMS
    AP DB
    Java
    開発の課題(1)

    View Slide

  10. そのものずばりの資料が2014年に発表されていました
    「Spring Bootで変わるJavaアプリ開発!」
    槙 俊明さん(@making)のスライド
    2014-08-13 日本スプリングユーザ会 勉強会
    https://www.slideshare.net/makingx/spring-boot-java-jsug
    開発の課題(2)
    10

    View Slide

  11. スライド引用(1)
    11
    68 of 114

    View Slide

  12. スライド引用(2)
    12
    70 of 114

    View Slide

  13. APサーバーのインストールが不要になります
    構成変更のイメージ
    Javaアプリケーション
    APサーバー
    マシン・OS
    13
    Javaプログラム
    フレームワーク
    組込APサーバー

    View Slide

  14. スライド引用(3)
    14
    73 of 114

    View Slide

  15. <メリット>
    (1) Javaコマンドのみで実行できます
    (2) SpringBootならではの多くのメリット
    <デメリット>
    (1) SpringFramework と実行可能jar
    (2) 個人的な事情
    SpringBoot
    15

    View Slide

  16. そこでマイクロフレームワーク
    16

    View Slide

  17. (Apache Sparkじゃない方です)
    組込APサーバーとしてJettyを同梱し
    パスルーティング機能に特化したWEBフレームワーク
    作成者:Per Wendelさん(@perwendel)
    2014-05-11リリース ~ 2019-03-27リリース
    http://sparkjava.com/
    Spark(1)
    17

    View Slide

  18. <メリット>
    (1) Javaコマンドのみで実行できます
    (2) ドキュメントが大変わかりやすく簡潔でした
    <デメリット>
    (1) わりとクセがあります
    Spark(2)
    18

    View Slide

  19. Quick start
    19

    View Slide

  20. 目次
    1.WEBアプリ開発のきっかけ
    2.デプロイから考える
    3.ビルドから考える
    4.そのほか・まとめ
    20

    View Slide

  21. 実行可能jar を使用しない場合
    ⇒依存ライブラリのクラスパス指定が必要です
    依存といえばビルドツールで解決です
    Maven or Gradle
    デプロイの課題
    21

    View Slide

  22. Maven Gradle
    設定ファイルがXML
    素直に
    Maven難しいな
    と感じました
    設定ファイルがGroovy
    コメントも書きやすい
    Linux用の実行スクリプトを
    生成できる
    ビルドツール
    22

    View Slide

  23. 実行スクリプトとすべての依存ライブラリ(.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

    View Slide

  24. 実行するコマンドは自前で作成します
    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

    View Slide

  25. モジュールパス指定での実行形式には未対応です
    とはいえアプリ自体もモジュール未対応です
    ■クラスパス指定
    > java --class-path %APP_HOME%/lib/*
    net.shirokin.odpt.ApplicationMain
    ■モジュールパス指定(の想定)
    > java --module-path %APP_HOME%/lib/*
    --module net.shirokin.odpt/ApplicationMain
    Gradle:実行スクリプト生成(3)
    25

    View Slide

  26. 目次
    1.WEBアプリ開発のきっかけ
    2.デプロイから考える
    3.ビルドから考える
    4.そのほか
    26

    View Slide

  27. あと何分で次の列車が出発するか一覧表示するアプリ
    https://odpt.shirokin.net/
    開発成果
    27

    View Slide

  28. サーバー1台 さくらのVPS 972円 /月
    ドメイン取得 さくらのドメイン 1,852円 /年
    無料のDNS さくらのVPS 0円
    SSL証明書 Let’s Encrypt 0円
    外形監視 さくらのVPS 0円
    モニタリング Mackerel 0円
    維持コスト
    28
    CDN さくらのクラウド 0円
    インバウンド側トラフィック 0円
    アウトバウンド側トラフィック 5円 /GiB

    View Slide

  29. 29
    全体像
    CentOS 7 Java12
    CDN
    firewalld
    VPS
    API
    Gradle build
    SSH SCP
    Java11
    TeraTerm

    View Slide

  30. <開発の所感>
    世の中のソフトウェアはたくさんの人の尽力により
    成り立っていると実感しました。
    一人でできることには限界がある
    仲間を見つけて一緒にやると楽しくなる、と思います
    開発の顛末
    30

    View Slide

  31. おわりに
    31
    https://tokyochallenge.odpt.org/

    View Slide