Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
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
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
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
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
InterSystems Japan Summit 2019
IDEについて
10 | © InterSystems Corporation. All rights reserved. |
修正後、どこがバグっているか、わかりますか?
9
10
InterSystems Japan Summit 2019
11 | © InterSystems Corporation. All rights reserved. |
より直観的なUDLフォーマットでの比較
12 | © InterSystems Corporation. All rights reserved. |
より情報が多いAtelierでの比較
11
12
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
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
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
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
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
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
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
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
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
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
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
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
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