、コンテナ、scmを使った intersystems iris の開発の実際 ·...

19
InterSystems Japan Summit 2019 IDE、コンテナ、SCMを使った InterSystems IRIS の開発の実際 岩本 知宏 セールスエンジニア InterSystems Japan Summit : IRIS DAY 2019 2 | © InterSystems Corporation. All rights reserved. | アジェンダ はじめに IDE ソースコード管理 コンテナ デモ CI/CDについて まとめ 1 2

Upload: others

Post on 21-May-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 、コンテナ、SCMを使った InterSystems IRIS の開発の実際 · Gitを使用したコード(およびDockerfile)の管理 Installerマニュフェストを使用したIRISアプリケーション実行環境の作成

InterSystems Japan Summit 2019

IDE、コンテナ、SCMを使ったInterSystems IRIS の開発の実際岩本 知宏セールスエンジニア

InterSystems Japan Summit : IRIS DAY 2019

2 | © InterSystems Corporation. All rights reserved. |

アジェンダ

はじめに

IDE

ソースコード管理

コンテナ

デモ

CI/CDについて

まとめ

1

2

Page 2: 、コンテナ、SCMを使った InterSystems IRIS の開発の実際 · Gitを使用したコード(およびDockerfile)の管理 Installerマニュフェストを使用したIRISアプリケーション実行環境の作成

InterSystems Japan Summit 2019

3 | © InterSystems Corporation. All rights reserved. |

はじめに本日の内容は…

主にCI(継続的インテグレーション)の話です

• IDE,SCMとの連携が中心だから

• CD(継続的デプロイ)はツールに加えてインフラ固有のデザインスキルセットを要します

• とはいえ、弊社製品は実行環境も含むのでCDも重視しています

• Immutable Infrastructure という概念には、抵抗感を感じると思います

― Gartnerによると25%の人は導入に強く抵抗するそうです

スタートラインとしてご拝聴ください

• 常に変化する世界です

• コンテナ, SCM, CI/CDの導入方法やメリット/デメリットの情報は巷に溢れています

• Agile開発は万人向けではありません。安定性が最重視されるシステムも多数あります

習うより慣れろが基調です

• 大半のツールが無償バージョンを提供しています

― InterSystems IRIS Community Edition (Docker Store, AWS/Azure/GCP…)

• 実習コンテンツもどんどん拡充しています

― 開発者コミュニティ、 カタログサイト、オンライン教育サイト

• 今すぐ導入を目指しても無理です。無償バージョンを使用して、まずは学習フェーズと割り切るのが良いです

4 | © InterSystems Corporation. All rights reserved. |

開発作業

設計 ビルドバージョン管理されたバイナリ生成物に変化され

たソースコード

稼働様々な実行環境

開発側 運用側

Sourceswith

Dockerfile

リリースステージング & デリバリ

QA / ステージング / 実行環境

RI SI

3

4

Page 3: 、コンテナ、SCMを使った InterSystems IRIS の開発の実際 · Gitを使用したコード(およびDockerfile)の管理 Installerマニュフェストを使用したIRISアプリケーション実行環境の作成

InterSystems Japan Summit 2019

5 | © InterSystems Corporation. All rights reserved. |

安定性、信頼性、徐々に変えていく

コアビジネス

財務管理

コンプライアンス

人事管理

サプライチェーン

業務

モード1

継続的で迅速なイノベーションの必要性

新規ビジネス

ビッグデータ

機械学習 IoT

モバイルアプリ

ウェブサービス

モード2

我々にとってなぜ重要なのか…バイモーダル

6 | © InterSystems Corporation. All rights reserved. |

我々にとってなぜ重要なのか

モード1だからといって今後も無縁ではいられない

モード2はモード1との接続を要する

• メインフレームすらコンテナ化

脱Technical Debt

• オンデマンドにスケールする仕組みへ進化

企業間のコラボレーションの増加

• APIエコノミ (API + Micro Service)の浸透の加速

Digital Disruption

• 破壊的イノベーションのデジタル版

人手不足

• 足りないのは時間。

5

6

Page 4: 、コンテナ、SCMを使った InterSystems IRIS の開発の実際 · Gitを使用したコード(およびDockerfile)の管理 Installerマニュフェストを使用したIRISアプリケーション実行環境の作成

InterSystems Japan Summit 2019

7 | © InterSystems Corporation. All rights reserved. |

従来の開発サイクル

開発(コード)

•e.g. Atelier,Studio, etc

ソース管理e.g. Git, VSS,Perforce,SVN,etc

単体テスト

•e.g. %UnitTest

インストール

e.g. %Installer

ビルド

デプロイ・リリース

e.g. 環境構築作業、配布

今何を行っていて、次に何をするかのフロー

• 開発スコープや最終形の事前予測が成り立つことが前提

• 手戻りコストが大きい

• 部分的な自動化

• 開発環境=テスト環境=実行環境を同一に維持するコストが高い

8 | © InterSystems Corporation. All rights reserved. |

開発

• e.g. Atelier,Studio, etc

デプロイ・リリース

e.g. コンテナ管理

開発-デプロイを、継続的に繰り返すために最適な開発サイクル

CI/CDソース管理,

ビルド/テスト,

デリバリの自動化

CI/CDを採用した開発サイクル

テストコードの記述や

ソースコードの適切なレビューを

行う事が大前提

7

8

Page 5: 、コンテナ、SCMを使った InterSystems IRIS の開発の実際 · Gitを使用したコード(およびDockerfile)の管理 Installerマニュフェストを使用したIRISアプリケーション実行環境の作成

InterSystems Japan Summit 2019

IDEについて

10 | © InterSystems Corporation. All rights reserved. |

修正後、どこがバグっているか、わかりますか?

9

10

Page 6: 、コンテナ、SCMを使った InterSystems IRIS の開発の実際 · Gitを使用したコード(およびDockerfile)の管理 Installerマニュフェストを使用したIRISアプリケーション実行環境の作成

InterSystems Japan Summit 2019

11 | © InterSystems Corporation. All rights reserved. |

より直観的なUDLフォーマットでの比較

12 | © InterSystems Corporation. All rights reserved. |

より情報が多いAtelierでの比較

11

12

Page 7: 、コンテナ、SCMを使った InterSystems IRIS の開発の実際 · Gitを使用したコード(およびDockerfile)の管理 Installerマニュフェストを使用したIRISアプリケーション実行環境の作成

InterSystems Japan Summit 2019

13 | © InterSystems Corporation. All rights reserved. |

vscodeの出力例

14 | © InterSystems Corporation. All rights reserved. |

データベース内のソースへのアクセスhttps://docs.intersystems.com/iris20181j/csp/docbook/DocBook.UI.Page.cls?KEY=GSCF_intro

13

14

Page 8: 、コンテナ、SCMを使った InterSystems IRIS の開発の実際 · Gitを使用したコード(およびDockerfile)の管理 Installerマニュフェストを使用したIRISアプリケーション実行環境の作成

InterSystems Japan Summit 2019

15 | © InterSystems Corporation. All rights reserved. |

IDEの比較

メモ帳/vi IRISスタジオ Atelier(Eclipse),code

特徴 超軽量、どこにでも存在 軽量、特化 複数言語豊富なプラグイン

編集対象 クラス、ルーチンをエクスポートしたO/Sファイル(RS,XML形式)

データベース内のクラス、ルーチン

クラス、ルーチンをエクスポートしたO/Sファイル(UDL形式)

インポート/エクスポート マニュアル操作 不要 自動

利用シーン 現場での臨時作業 開発時 開発時

複数言語対応 △ × ○

SCMとの相性 × △ ○

source of truth ??? データベース SCM, ファイル

CI/CDとの相性 × △ ○

ソースコード管理について

15

16

Page 9: 、コンテナ、SCMを使った InterSystems IRIS の開発の実際 · Gitを使用したコード(およびDockerfile)の管理 Installerマニュフェストを使用したIRISアプリケーション実行環境の作成

InterSystems Japan Summit 2019

17 | © InterSystems Corporation. All rights reserved. |

ソースコード管理の変遷

保存形式 保存場所 管理対象

MUMPSコードの時代 RS20030712.RS 共有フォルダ ルーチン群

オブジェクトの時代 PROJECT20091201.xml 共有フォルダ クラス、マクロ、ルーチンをひとまとめしたもの

スタジオフックの時代 個別XMLファイルtrunk/Sample_Person.xml

共有のCSV, SVNサーバ 個別のクラス、マクロ、ルーチン

Atelierの時代 個別のUDLファイルmaster/Sample/Person.cls

SVN, Git 個別のクラス、マクロ、ルーチン

CI/CDの時代 個別のUDLファイルmaster/Sample/Person.cls

GutHub, gitlab 個別のクラス、マクロ、ルーチン、他言語、HTML,

Dockerfile

18 | © InterSystems Corporation. All rights reserved. |

真のソースコードはどこ?

デプロイ用キット作成

IRIS

ワークエリア

SVN

レポジトリ

IRIS

Git

ローカル

Gitリモート

DB環境を共有するメンバ間での共同作業個人のバージョン管理とチームのバージョン管理が混在

複数拠点間での共同作業。修正箇所のレビュー機能。ホスティングサービス利用可能。

IRIS

IRIS

Git

ローカル

Git

ローカル

ソースコードの流れ

Studio+ソースフック

Atelier+Git

デプロイ用キット作成

17

18

Page 10: 、コンテナ、SCMを使った InterSystems IRIS の開発の実際 · Gitを使用したコード(およびDockerfile)の管理 Installerマニュフェストを使用したIRISアプリケーション実行環境の作成

InterSystems Japan Summit 2019

コンテナについて

20 | © InterSystems Corporation. All rights reserved. |

コンテナ

https://www.intersystems.com/jp/summit2018/#summit

• Cloud Managerのご紹介-コンテナ、クラウド、DevOps-

InterSystems IRISインストール済みイメージを提供

• Docker Hubレポジトリ

― https://hub.docker.com/_/intersystems-iris-data-platform

• クラウドマーケットプレース

• 従来通りサポート(WRC)から入手

ユーザの作業

• ライセンスキー

• アプリケーションコード(クラス,ルーチン,jars, js, exe…)、その他必要な外部ライブラリ

• 構成

• アプリケーションイメージの作成(Dockerfile)

Source: To add source, go to “Insert” tab, click on “Header & Footer”, check “Footer” and add the source information appropriate for the slide. (9pt)

19

20

Page 11: 、コンテナ、SCMを使った InterSystems IRIS の開発の実際 · Gitを使用したコード(およびDockerfile)の管理 Installerマニュフェストを使用したIRISアプリケーション実行環境の作成

InterSystems Japan Summit 2019

21 | © InterSystems Corporation. All rights reserved. |

コンテナ

なぜコンテナが重要なのか

• CI/CDを構成する重要な要素だから

― Immutable Infrastructure 採用によるリリースの安定化・高速化

• 実行環境(ソースコード)の管理に一貫性をもたらすから

― 本来、Cache’/IRISベースのアプリケーションは、ポータビリティーが高い(実行環境から受ける影響が少ない)ので、「異なる環境での修正、実行」があまりにもやりやすかった

― どんなに留意しても現場での修正は開発・テスト環境への反映が漏れたり、タイミングがずれたりする

• サーバサイド機能に複数の言語を併用するケースが増えているから

― Node.js, Python

― ビジネスロジック以外の要素増加

IRISに関するコンテナの構成要素

• IRIS本体

• アプリケーションコード、クラス定義など

• インストール用のshellスクリプト

• Installerマニュフェスト

― データベース、ネームスペース作成、アプリケーションコードのロード

デモ

21

22

Page 12: 、コンテナ、SCMを使った InterSystems IRIS の開発の実際 · Gitを使用したコード(およびDockerfile)の管理 Installerマニュフェストを使用したIRISアプリケーション実行環境の作成

InterSystems Japan Summit 2019

23 | © InterSystems Corporation. All rights reserved. |

留意点

デモ実行にあたり、下記のAtelierの設定をしています

• Atelier→Save Settings→Save Action を”Save”に設定

• Atelier→Save Settings→Ignore conflicts when synchronizingをチェック

24 | © InterSystems Corporation. All rights reserved. |

simpleを使った簡単な解説

ご紹介したいこと

題材はRESTサービス

Gitを使用したコード(およびDockerfile)の管理

Installerマニュフェストを使用したIRISアプリケーション実行環境の作成

Docker イメージビルド,テストの実行

GitのCommit IDを用いたコードとDockerイメージの対応付け

コンテナ配布によるアプリケーションの配布

curl/postman(REST client)からのアクセス

• コンテナ削除(rm)、再作成後(run)に、/getにアクセスすると過去データが消える

― Composeで使用する、外部データベース、 Durable Sys機能

23

24

Page 13: 、コンテナ、SCMを使った InterSystems IRIS の開発の実際 · Gitを使用したコード(およびDockerfile)の管理 Installerマニュフェストを使用したIRISアプリケーション実行環境の作成

InterSystems Japan Summit 2019

25 | © InterSystems Corporation. All rights reserved. |

build.sh

run.sh

unittest.sh

④開発

テスト

(ブランチ:A)

run.sh

exec.sh

③接続(キャッシュクリア)

①Pull & Run②Pull

⑥Push

⑧Pull

⑩Push

⑨ビルド、テスト

(ブランチ:master)

⑤同期

(⑦Merge)

26 | © InterSystems Corporation. All rights reserved. |

docker composeを使った簡単な解説

ご紹介したいこと

内容はsimpleと同じ。差異は…

Docker-composeを使っていること

UnitTestを実行している事

(疑似的な)プロダクション環境ではDurable Sys機能を有効にし、デー

タベースの外部保存を行っている事

•コンテナ削除(down)、再作成後(up)に、/getにアクセスすると過去データが残っている

25

26

Page 14: 、コンテナ、SCMを使った InterSystems IRIS の開発の実際 · Gitを使用したコード(およびDockerfile)の管理 Installerマニュフェストを使用したIRISアプリケーション実行環境の作成

InterSystems Japan Summit 2019

27 | © InterSystems Corporation. All rights reserved. |

CDを支えるツール複数コンテナの管理(オーケストレーション)Docker compose

• 次のデモで使用

• 単一ホスト上でのコンテナ群の管理

Docker Swarm

• クラスタ構成(複数ホストにまたがるコンテナ群の管理)

Kubernetes

• 自動デプロイ、スケーリング、ロードバランス、運用自動化(セルフヒーリング)

InterSystems Cloud Manager(ICM)

• InterSystems IRISクラスタをクラウド/VMWARE/オンプレミス環境にデプロイする専用ツール

28 | © InterSystems Corporation. All rights reserved. |

Governance

Monitoring

Alerting

Point of Sale

Intelligent

Interoperability

Enterprise

Open Data Open Analytics

Customer Application Engineer Data Engineer Data Science

Current ML Model

Banking

coreCustomer

Services

同類のデモをOpenExchangeにて公開中です

Docker composeを使用したデモの例

27

28

Page 15: 、コンテナ、SCMを使った InterSystems IRIS の開発の実際 · Gitを使用したコード(およびDockerfile)の管理 Installerマニュフェストを使用したIRISアプリケーション実行環境の作成

InterSystems Japan Summit 2019

29 | © InterSystems Corporation. All rights reserved. |

ZeppelinSpark

Master

Spark

Worker

Spark

Worker

IRIS

Service

Data Rep

IRIS

InteroperabilityTransactions

Core

Banking

System

Customer

Services

System

Point of Sale

Intelligent

Integration

Enterprise

Open Data Open Analytics

Customer Application Engineer Data Engineer Data Science

PMML

デモの構成要素とコンテナの関係

CI/CDについて

29

30

Page 16: 、コンテナ、SCMを使った InterSystems IRIS の開発の実際 · Gitを使用したコード(およびDockerfile)の管理 Installerマニュフェストを使用したIRISアプリケーション実行環境の作成

InterSystems Japan Summit 2019

31 | © InterSystems Corporation. All rights reserved. |

build.sh

run.sh

unittest.sh

④開発

テスト

(ブランチ:A)

③接続

①Pull & Run②Pull

⑥Push

⑧Pull

⑩Push

⑨ビルド、テスト

(ブランチ:master)

⑤同期

(⑦Merge)

失敗の通知

CI

ブランチ:Z

ブランチ:Y

ブランチ:X

run.sh

exec.sh

32 | © InterSystems Corporation. All rights reserved. |

CI/CDとは

CI : 継続的インテグレーション

• コードの修正を管理し、自動テスト、結果の通知を行う仕組み。

CD: 継続的デリバリ

• コードをリリース(デプロイ)可能な状態にする仕組み。コンテナイメージの作成。

CD: 継続的デプロイ

• 自動で本番環境へデプロイする機能。複数コンテナをデプロイ、管理する仕組み。

リリースを止めるな

CI/CD ≒ IDE + コード管理 + CIツール + コンテナ

+ CE = Continuous Effort ???

ツールを使うことで「ドタバタ」は最小限に抑えられるが、ツールに慣れ、使いこなす努力が要る

31

32

Page 17: 、コンテナ、SCMを使った InterSystems IRIS の開発の実際 · Gitを使用したコード(およびDockerfile)の管理 Installerマニュフェストを使用したIRISアプリケーション実行環境の作成

InterSystems Japan Summit 2019

33 | © InterSystems Corporation. All rights reserved. |

gitlabでのCI/CD実行例

ご紹介したいこと

simple/composerとコードは同じ。

差異は…

.gitlab-ci.ymlを定義していること。

これにより、レポジトリにpushされたことをトリガーに、サーバ側で

コードの取得、イメージビルド、テストが自動実行される。

補足) Developer Communityに、GitHub(Actions)の例があります

まとめ

33

34

Page 18: 、コンテナ、SCMを使った InterSystems IRIS の開発の実際 · Gitを使用したコード(およびDockerfile)の管理 Installerマニュフェストを使用したIRISアプリケーション実行環境の作成

InterSystems Japan Summit 2019

35 | © InterSystems Corporation. All rights reserved. |

まとめ

主にCI(継続的インテグレーション)の話です

スタートラインとしてご拝聴ください

習うより慣れろが基調です

•とりあえずGitとDockerのアカウントを作ってみましょう(無償)

•とりあえず、InterSystems IRIS Community Editionをpullしてみましょう(無償)

•とりあえずDevelopers Community, オンラインラーニングサービスのアカウントを作ってみましょう(無償)

36 | © InterSystems Corporation. All rights reserved. |

関連サイト

Developer Community

• InterSystems運営のコミュニティサイト

Open Exchange

• InterSystems運営のカタログサイト

Learning Service

• InterSystems運営のオンラインラーニングサイト

本日使用したサンプルコード

• https://github.com/IRISMeister/simple

• https://github.com/IRISMeister/composer

35

36

Page 19: 、コンテナ、SCMを使った InterSystems IRIS の開発の実際 · Gitを使用したコード(およびDockerfile)の管理 Installerマニュフェストを使用したIRISアプリケーション実行環境の作成

InterSystems Japan Summit 2019

37 | © InterSystems Corporation. All rights reserved. |

InterSystems オンラインラーニング/InterSystems IRISお試し環境 のご紹介(https://learning.intersystems.com)

無料 GCP使用料のみ Azure使用料のみ AWS使用料のみ

5分で試す IRIS(お試し環境選択自由&オンライン

ラーニングへのログイン不要)

☝お試し環境は以下クラウドを選択できます!

☝ InterSystems IRIS Community Edition の利用料は無料!(制限有※)※同時接続5ユーザ、ユーザDB 1個まで、DBサイズは10GBまで、8コアまで、シャーディング/ECP/ミラーリン

グ利用不可、サポート無

じっくり体験する IRISオンラインラーニングのプライベートクラウド上

演習環境を利用して各種機能/製品を体験できます。≪オンラインラーニングへのログイン必要≫

豊富な自習用コンテンツ

☝ InterSystemsオンラインラーニングにログインするとお試し環境の構築や、

演習環境付きコンテンツ/自習用コンテンツを 無料 で利用できます!

Thank you.

37

38