はじめに
デジタルトランスフォーメーション(DX)!モダン化!アジャイル!
最近よく聞きますよね。
アジャイルとDXはイメージつくのですが、モダン化が全然イメージ出来ない。。
モダン化ってつまりどういうことよ。。最新のFramework使ってるし既にモダン開発してるよね?と思っていたのですが、どうやらそういうことではないらしいです。
IBMが出している IBM Application Modernizationというガイドでアプリモダン化のOverViewを勉強したのでまとめます。
アプリモダン化って何が嬉しいの?
アプリをモダン化すると・・・
-
デジタルトランスフォーメーションを加速させる!
アプリのモダン化は、新しい価値を生み出し素早く届けていこう、そのためにはビジネスをITで変えていかないと・・という背景から進んでいる。つまり、結果的にDXのスピードを高めることに繋がる。 -
デベロッパーエクスペリエンスを変える!
コンテナ化とクラウドネーティブへの対応により、すばやくアプリ/サービスを開発することが可能になる。 -
デリバリー速度を高める!
結果的に素早いデリバリーが実現される・・。
モダン化のススメ方
もちろん最初は既存アプリの評価や、優先順位づけ等の作業から始まるのですが、この辺はとばします。
具体的にモダン化とは既存のアプリをどう変えていくのかってとこだけみていきます。
ざっと読んだところ、大きく5つのステップがあるようです。
- モダン化の基盤を創る
- 開発体験をモダン化する
- コンテナ化
- API化、統合
- マイクロサービス
- リファクタリング
順に概要を見ていきます。
1. モダン化の基盤を創る#
Kubernetesなどのコンテナプラットフォームがアプリモダン化の基盤となります。
コンテナオーケストレーションはモダン化のファーストステップ。
復元性とセキュリティーを持った協力な基盤が不可欠です。
2. 開発体験をモダン化する
開発者に、すばやく、賢く、エンドtoエンドの開発体験を。
コンテナ化されたデプロイメント
アプリのデプロイは軽量なコンテナで行う。
Cloud上でも、Local環境でも簡単に開発環境を再現することが出来ることが重要。
素早いイテレーション
開発フェーズに関わらず、常にリアルタイムでパフォーマンスを観察しながら、修正〜デプロイをすばやく行おう。
#イテレーション: 開発のサイクルのこと
DevOpsパイプラインを作ろう
自分たちにあったDevOpsパイプラインをつくる。
3. コンテナ化
アプリをDockerイメージに・・・次は?
アプリケーションをDockerImageにするのがコンテナ化、ひいてはモダン化への道ですが、多くのアプリケーションはコンテナ向けに最適化されていません。
コンテナ向けに設計されたアプリとそうでないものだと、ロードバランシング、アプリの状態管理、モニタリング方法が大きく異なります。
結果的に、アプリの一部を改修する必要がでてきます。
ここは避けられないステップぽいですね。
(コンテナ向けに最適化されたアプリはなんぞや、というのを勉強したい。)
##5. API化、統合##
既存のシステムから、ビジネスの価値を解放させよう。
既存のアプリをAPI化。
API化することで再利用可能なアセットへと進化し、新しい価値を生み出すことが可能。
これはイメージしやすいが、API化するとセキュリティーとか大変そう。。
一応ガイドには以下の文言が。。(具体的な内容は書いてない。)
- 管理
セキュリティー/パフォーマンス/可視性を高めるため、APIを管理下におく。
⇒IBMのAPI Connectとか、AzureのAPI Managementとかも触ってみたい。
6. リファクタリング
賢く、モダン化
リファクタリングはメンテナンスが大変なコードを、より良いコードに改良することです。
- 生産性
アプリをマイクロサービスにすることで開発の生産性を向上し、素早いリリースを実現します。
細かい単位で実装していくので、完成した部分からリリースすることが可能です。
⇒これは機能単位でアジャイル開発していこう。ってことかな。
- 拡張性
拡張性のあるアーキテクチャーへのリファクタリングは、少しずつ完了していくべきです。
オペレーション効率を高めると同時に、ビジネスとしての価値を与えることが重要
⇒モダン化したいシステムの規模にもよるだろうけど、無理だと思わず出来るところから少しずつ進めようってことかな。
- コンテナ
まずはモノリシックなシステムをLibertyとともにコンテナ化します。
その後で、ビジネス単位でマイクロサービス化したソリューションをコンテナに追加していきます。
⇒追加していけるように、基盤部分を取り急ぎコンテナ化しようってことかな。
まとめ
アプリモダン化といえばマイクロサービスとコンテナ化なのかなと思いました。
そもそもモダンの意味は、
現代的であること。今風でしゃれていること。また、そのさま。
らしいので、今ホットなTechを使ってしゃれてたらいいのかと思います。
モダン開発、よりモダン化!のが断然大変そうですね。。