Successfully reported this slideshow.
Your SlideShare is downloading. ×

Javaエンジニアのための"クラウド時代の過ごし方" Java Day Tokyo 2016

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 43 Ad

Javaエンジニアのための"クラウド時代の過ごし方" Java Day Tokyo 2016

Download to read offline

2016年5月24日に行われたJava Day Tokyo 2016における講演「Javaエンジニアのための"クラウド時代の過ごし方"」の資料です

2016年5月24日に行われたJava Day Tokyo 2016における講演「Javaエンジニアのための"クラウド時代の過ごし方"」の資料です

Advertisement
Advertisement

More Related Content

Slideshows for you (20)

Advertisement

Similar to Javaエンジニアのための"クラウド時代の過ごし方" Java Day Tokyo 2016 (20)

Advertisement

Recently uploaded (20)

Javaエンジニアのための"クラウド時代の過ごし方" Java Day Tokyo 2016

  1. 1. Javaエンジニアのための “クラウド時代の過ごし方” 2016/5/24 鈴木雄介 グロースエクスパートナーズ株式会社 執行役員 日本Javaユーザーグループ 会長 Java Day Tokyo 2016
  2. 2. 自己紹介 鈴木雄介 • グロースエクスパートナーズ(株) » 執行役員/アーキテクチャ事業本部長 » http://www.gxp.co.jp/ • 日本Javaユーザーグループ » 会長 » http://www.java-users.jp/ • SNS » http://arclamp.hatenablog.com/ » @yusuke_arclamp 1
  3. 3. Agenda • クラウド時代とは何か • クラウド時代のキーワード »クラウド »DevOps »アジャイル »マイクロサービスアーキテクチャ • どう過ごすべきか? • まとめ 2
  4. 4. クラウド時代とは何か 3
  5. 5. エンジニアの仕事 ソフトウェアを「作る」 • 仕様を決める • エンジニアがコードを書く 以上 4
  6. 6. でも「作る」だけじゃ使えない ソフトウェアを作っても… • インフラがないと意味がない • リリースしないと意味がない • 停止したら意味がない • 使いやすくないと意味がない • 改善し続けないと意味がない »仕様、性能… 5
  7. 7. クラウド時代とは 「作る」から「運営する」へ • 「ソフトウェアを作る」より「サービスを運営 する」ことが大事 • ソフトウェアは使ってもらってビジネス的な効 果をあげないと意味がない »売上が上がる »経費が下がる 6
  8. 8. サービスを運営する 7 サービス 機能 (コード) IT サービス 満足度 構造 開発 企画 運用 業務 プロ セス
  9. 9. サービスを運営する 開発だけが重要ではない • 全ての要素のバランスで成り立つ »良いコードは大事(でも、それだけじゃない) ▸構造:システム構造、フレームワーク ▸プロセス:WF/アジャイル、ドキュメント »ソフトウェアがITサービスとして安定稼働し、業務 が回ってサービスとして価値を提供する ▸運用、業務、企画なども関わる 8
  10. 10. 「作る」から「運営する」へ サービス運営は終わらない活動 • しかも、要求はどんどん変化していく »初回リリースはゴールではなくスタート • では、どうやって変化に適応し続けるか? 9
  11. 11. クラウド時代のキーワード 10
  12. 12. クラウド時代のキーワード アジャイル クラウド/DevOps マイクロサービスアーキテクチャ 11
  13. 13. クラウド時代のキーワード アジャイル クラウド/DevOps マイクロサービスアーキテクチャ 12
  14. 14. アジャイル プロジェクトマネジメントの基本 • 計画する:QCDSを決める • 実行する:計画従って作業する • 計測する:計画と実績のズレを測る • 調整する:ズレに対応する(QCDSの変更) ※QCDS:Quality(品質)、Cost(費用)、Delivery(期限)、Scope(機能) • ウォーターフォールの限界 »計画が、そんなに精度よくできない 13
  15. 15. アジャイル アジャイルの考え方 • 計画:精度が出るぐらい短期にする »リソースは固定化する • 計測:動くソフトウェアで判断する • 調整:定期的に関係者全員で話し合う • 調整を重視したマネジメントスタイル »WFは計画と効率を重視している 14
  16. 16. アジャイル 変化に適応するプロセス • 「早く作る」ための手法ではない »適切なものを適切なタイミングで作るための手法 »変更が多いなら調整タイミングを増やした方が無駄 が少ない、と考える »計画精度が高いならWFのほうが無駄が少ない • 企画から開発への流れにリズムをもたらす 15
  17. 17. クラウド時代のキーワード アジャイル クラウド/DevOps マイクロサービスアーキテクチャ 16
  18. 18. クラウド ソフトウェア化するハードウェア • 狭義には「ハードウェアの仮想化」 • 広義には「コンピューティングリソースにおけ る規模の経済と従量課金」 • 重要:ソフトウェア定義されるハードウェア »ハードウェアの操作がソフトウェア化される »ハードウェアのコピーや自動化ができるようになる »非機能要件がコーディングできる 17
  19. 19. クラウド クラウドの類型化 18 ハードウェア ネットワーク 仮想化OS OS ミドルウェア コード 設定 データ オンプレ IaaS PaaS SaaS <ユーザーの管理範囲>
  20. 20. クラウド Platform as a Service • 特に注目すべきはPaaS • ミドルウェア+稼働状態=PaaS »OSSフレームワークは静的コンポーネント »PaaSは動的コンポーネント • 使うことで制約を受けるが便利になる 19
  21. 21. クラウド PaaSのレベル • 低:AWS RDS »DBMS+CPU+ストレージ+バックアップ+… • 中:AWS BeansTalk »LB+APSV+監視+自動再起動+… • 高:Heroku »Git+CI/CD+APSV+… 20
  22. 22. クラウド クラウドネイティブ • クラウドを前提にしてシステムを作ること »特にPaaSの活用 • クラウドの制約に従うことで効率化する »オンプレの作り方をクラウドに持ってくるのではな く、クラウドに最適化されたやり方でアプリケーシ ョンを考え直す »特に運用が楽になる 21
  23. 23. DevOps 継続的なリリースにために • 変えていきたい開発 vs 安定させたい運用 »昔は「作る」と「動かす」を分離することが効率的 だった • でも、もっとリリース回数を増やしたい »10回/日以上 22
  24. 24. DevOps CI/CDの発展形 • 継続的インテグレーション »レポジトリからのチェックアウト&自動テスト&自 動ビルド »ハードウェアの自動構成&自動デプロイ • 開発と運用の情報共有 »変更ログや通知の共有 »チャットbotによる自動通知 23
  25. 25. DevOps カナリアリリース • カナリアリリース »ブルーグリーンデプロイ、A/Bテスト »本番環境を丸々コピーして新しいバージョンをリリ ースし、ユーザーのアクセス先を切り替えていく • その先 »ダークカナリア:本番環境での機能テスト »カオスモンキー:本番環境での再起動テスト 24
  26. 26. DevOps 運用を不要にしていく • 理想は「運用の完全自動化」 »事件が起きたときの対応チームのみ • 開発時点で運用のことを考慮する »運用しやすいように開発すればいいじゃん »面倒なことはソフトウェアで自動化しよう • 開発から運用への流れにリズムをもたらす 25
  27. 27. クラウド時代のキーワード アジャイル クラウド/DevOps マイクロサービスアーキテクチャ 26
  28. 28. マイクロサービスアーキテクチャ サービス連携によるサービス • サービスの連携でサービスを実現する »(小さな)サービスによって(大きな)サービスを 動かす »サービス=独立した非機能要件を持つシステム • 先進企業の仕組みを調べたら、似たような仕組 みだったのでMSAと名付けた »技術論が先ではないことに注意 27
  29. 29. マイクロサービスアーキテクチャ 変化するために分割する • モノリシックでは部分の変更が全体に波及する »変更で大変なのは事前調査とテスト • サービスに分割されていれば変更の影響はサー ビス内部にとどまる »APIに変更がなく、データベースは共有しない ▸API自身もバージョン管理すればよい »よって、サービスは、それぞれのサイクルでリリー スできる 28
  30. 30. マイクロサービスアーキテクチャ 変化とサービス分割 • 「サービスが適切に分割されていれば」 »あるサービスの変更が他のサービスに影響したら意 味がない • サービス分割はドメインに従う »ドメイン≒業務 »システムへの変更要求は業務に起因するので当然 »DDD(ドメイン駆動設計) 29
  31. 31. マイクロサービスアーキテクチャ 変化するための技術とプロセスの集合 • より良いサービス運営に最適化した結果 »アジャイル、クラウド/DevOpsの流れの先 • MSAは「する」ではなく「なる」 »MSAにしたい、というのは危険な発想 »変化に適応するサービスを突き詰めると勝手にMSA になるはず 30
  32. 32. サービスを運営する 31 サービス 機能 (コード) IT サービス 満足度 構造 開発 企画 運用 業務 プロ セス アジャイル DevOps 狭義の MSA
  33. 33. どう過ごすべきか? 32
  34. 34. クラウド時代のエンジニア 考えることが増えた • 企画、開発、運用のすべてにエンジニアとして やれることがある »これまでが分業されすぎてきた 33 開発 企画 ITサービス運営 運用 サービス運営 企画+開発+運用 企画+開発+運用 企画+開発+運用
  35. 35. クラウド時代のエンジニア Javaエンジニアの価値 • 「ちゃんとJavaでアプリが作れる」は価値 • 加えて、サービス運営の視点を持つ »例:開発生産性 < 保守性 ▸解析性、変更性、試験性など 34
  36. 36. クラウド時代のエンジニア エンジニアの生きる道 1/2 • スペシャリストになる »特定の技術やプロセスの専門家 »JavaのWebアプリ、SPA(JS)、AWS、 Git+Jenkins、スクラム+開発ツール、UI/UX、ログ 解析など »「圧倒的な専門性」を軸にする 35
  37. 37. クラウド時代のエンジニア エンジニアの生きる道 2/2 • ゼネラリストになる »分野をまたがってバランスを調整する役割 ▸少なくとも業務と技術を跨ぐこと »技術に立脚するならアーキテクト ▸エンタープライズ、ITサービス、Webアプリ、IoT、クラウ ド、データなど ▸業務に立脚するならビジネスプロデューサー、プロダクト オーナー、ITサービスデザイナなど 36
  38. 38. まとめ 37
  39. 39. まとめ クラウド時代とは • 「ソフトウェアを作る」から「サービスを運営 する」へ »使ってもらってビジネス的な効果をあげないと意味 がない • 開発者だけではユーザーの価値にならない 38
  40. 40. まとめ アジャイル、クラウド/DevOps • 企画と開発の一体か »定期的に調整しながら成果を出していく • 開発と運用の一体化 »ソフトウェア化するハードウェア »クラウドネイティブへの移行 »面倒なことは自動化してしまえばいい 39
  41. 41. まとめ マイクロサービスアーキテクチャ • サービス分割によるシステム構築 »変化の影響をサービス内に押し込めることでシステ ム全体として変化を許容する »プロセス+技術の両輪 ▸アジャイル、クラウド、DevOpsがベース »サービス分割≒ドメイン分割 »「する」ではなく「なる」 40
  42. 42. まとめ クラウド時代のJavaエンジニア • ソフトウェアを作るだけでは価値にならない »ITによってサービスを運営することが価値 »よりよく運営するために何をすべきか?は、あらゆ るエンジニアが考えるべきこと • スペシャリストか、ゼネラリストか »正解はないし、新しい職種も生まれてくる 41
  43. 43. 宣伝 コミュニティに行こう • 自分が悩んでいる道の先にいる人に会える • そして、発信しよう 42 日本Javaユーザーグループ http://www.java-users.jp/ • 月1回のナイトセミナー • 年2回の1日イベント(CCC)

×