2022年4月30日土曜日
DEVOPSは、AWSや19インチのラックマウント上のコンパクトなメインフレーム(汎用機)の上のLINUX上のWEBサーバーでも動作しております。一般的な開発と運用のバランスを取るのに重要なDevOpsについて。その内に、一般的なレンタルサーバーの標準機能に当然標準機能となると思われます。まだ採用されていないレンタルサーバーがあれば、この機能を採用する様に経営者に提案するべきだと思います。IT及びその他一般企業でも、経営者クラスがこの必要性に早急に気づかれた方が良いと思います。
DEVOPSが分かる漫画
https://www.f5.com/ja_jp/solutions/special/jp-solutions-devops
開発チームとインフラ運用チームの摩擦を解消
DevOps問題とは?開発チームとインフラ運用チームのギャップを埋める「DevOps」とは?
皆さんはDevOps(デブオプス)という言葉をご存知でしょうか。
DevOpsとは「開発チーム(Development)」と「インフラ運用チーム(Operations)」を合わせた造語です。
よく混同されがちなアジャイル開発との違いですが、アジャイル開発は開発手法のことを指し、DevOpsは組織論と言われています。
DevOpsを実現するための手法の1つがアジャイル開発と言われてますが、特に決まった定義は存在しておらず、概念としては「開発チームとインフラ運用チームが連携し、協力してアプリケーションやソフトウェアを開発・運用すること」を指します。
■DevOpsを理解するためのオススメ本
・LeanとDevOpsの科学[Accelerate] テクノロジーの戦略的活用が組織変革を加速する (impress top gear)
・The DevOps 逆転だ!究極の継続的デリバリー
・The DevOps ハンドブック 理論・原則・実践のすべて
このDevOpsですが、開発チームの目的が「新しい機能の追加」である一方、
インフラ運用チームの目的は「安定稼働」にあるため往々にして摩擦が生じることが問題となっています。
ここではよくある、DevOpsの抱える問題点と、問題となる摩擦を解消する
F5 BIG-IP Cloud Editionについて紹介します。
開発チームが市場投入を急ぐ理由
開発チームがここまで導入を急ぐ理由はなんでしょうか。
昨今、新しいサービスを展開するためには、アプリケーションの存在が不可欠になってきています。
またアプリケーションを開発できる環境や数多くの手法が整備され、市場にサービスを展開しユーザニーズのフィードバックに合わせた改修を進めることが非常に重要になってきています。
このため先駆者になることが後のビジネスに大きく影響を与えるのです。
アプリケーションが市場投入されるまでのIT企業の動向
つまりDevOpsが上手くいっていない場合、導入が遅れビジネスチャンスを逃す可能性があります。
増えるサイバー攻撃とアプリケーションセキュリティの脆弱性
市場へのアプリケーションリリースを優先するがために、セキュリティ面の施策が疎かになってしまう場合があります。
アプリケーションを狙ったサイバー攻撃は多様化・高度化の一途をたどっており、その被害は後を絶ちません。
アプリケーション増加率とサイバー攻撃へのセキュリティ問題
●アプリケーションの数は2021年までに19%のCAGRで増加
●企業が展開するアプリケーション数は平均で200個以上、スマートフォンユーザーは端末上で80個以上のアプリケーションを利用
●WAFで保護されているアプリケーションは25%未満、という回答が36%
●Webアプリケーションに対する攻撃はデータ漏洩の原因の第一位(29%)
●2016年に盗難されたクレデンシャル情報の数は30億以上
出典: F5 SOAD report
データ漏えいの原因 第1位は『webアプリケーション攻撃』から
増加するアプリケーションの数とセキュリティの脆弱性を突かれたwebアプリケーション攻撃によって、被害に遭う件数が増加しています。
本来ならば開発チームとインフラ運用チームが協力して、迅速かつ確実にビジネスの価値を高め、エンドユーザに届けることが理想ですが、それぞれの意見の食い違いにより、十分な施策や時間が与えられないことが要因ともいわれていますが…
DevOps問題:開発と運用の意見の食い違い
開発とインフラ運用、セキュリティチームで摩擦が生じるのは何故でしょうか。
それぞれの現実と理想が食い違い、衝突しているためです。
理想
●アプリの導入=ビジネス
●ビジネススピードを上げたい
●ユーザニーズを直ちに実現したい
現実
● インフラ設備の手配・セキュリティ対策などにより、サービスリリースまでに時間を要する
理想
● 安定したサービスを実現するインフラを提供したい
現実
● 各アプリに応じた実装が求められインフラが複雑化
● 安定・安全の実装方法がアプリリリースのペースに合わない
理想
● 統一性を持ったセキュリティ機能を実装したい
現実
● 一元的なセキュリティの管理が難しい
● アプリケーションに応じたセキュリティの適用が難しい
開発チームは「機能の追加」を目的にしているのに対し、インフラ運用チームは「安定したシステムの状態を保つ」ことを目的にしているので、 両者の理想を叶えることが難しくなります。
さらに、セキュリティチームはアプリケーションに対するセキュリティ対策を求めるため、 3つのチームの要求にどうしても衝突が生じてしまいます。
インフラ運用チームの「安定したサービスを実現するインフラを提供したい」
開発チームの「要望をより早く実現し、市場投入までの時間短縮を可能にする」
セキュリティ運用チームの「統一性を持ったセキュリティ機能の実装」
という様々な理想を叶え、DevOpsを可能にするツールがあるとしたらどのようなものでしょうか。
F5 BIG-IP Cloud Edition 4つのメリット
開発チーム
●運用チームに頼まず迅速な実装が可能に
●チケット作成不要
インフラ運用チーム
●大幅な仕様変更以外のアプリの実装作業が削減
●運用の作業のみに集中
セキュリティチーム
●統一性を持ったセキュリティ機能によりセキュリティが確保される
開発チーム
●アプリ詳細情報を可視化、トラフィックやパフォーマンスが一目瞭然
インフラ運用チーム
●安定的な運用が可能に
●ADCの設定変更により、全てのアプリケーションに変更が及ぼされない
●誤動作などのトラブルによるリスクの軽減
インフラ運用チーム
●急なトラフィック増加にもシステムを安定稼働
セキュリティチーム
●単一アプリケーションごとにWAFを割り当てることができ、それぞれのアプリケーションに合わせたベストな保護を実現
開発チームがセルフアプリデプロイ時に使用するテンプレート
GUIやAPI経由で感覚的に作業が可能。
今までインフラ運用チームで担っていた実装作業を開発チームがセルフデプロイ。
可視化されたアプリケーションの表示画面
アプリケーション毎にADCを割り当てることによって管理・運用のしやすさが劇的に改善。
アプリケーションの特性に応じてADCやセキュリティポリシーを使い分けることが可能に!
アプリケーション特性に応じたインフラ構築
ITインフラを構築するにあたり、「バイモーダル (bimodal)」という概念を理解することは非常に重要です。
つまり、ミッションクリティカルなシステムを維持することと、デジタルトランスフォーメーションのために革新的なアプリケーションを提供することを、 「同時に行う」ことを意味しています。
ガートナー社は、この2つを「モード1/ モード2」と呼んでおり、それぞれ守りのIT、攻めのITとも呼ばれます。
これらはお互い連携、両立する必要があるため、どちらか一方だけ対応すればよいということではありません。
但し、企業のITの期待は、モード1からモード2にシフトが進みつつあることも考慮しなければいけません。
モード1(守りのIT):従来のBIG-IP
変化が少なく、確実性、安定性を重視する領域のシステムに最適
モード1(守りのIT)のシステムは、効率化によるコスト削減を目指す場合が多く、人事や会計、生産管理などの基幹系業務が中心となります。
●高品質・安定稼働
●着実・正確
●高いコスト/価格
●手厚いサポート
●安全安心
頻繁に変更を必要としないのであれば、 複数のアプリケーションを1つのADCで管理するこのかたちが最適となります。
モード2(攻めのIT):BIG-IP Cloud Edition
開発・改善のスピードや「使いやすさ」などを重視するシステムに最適
モード2(攻めのIT)は、差別化による競争力強化と収益の拡大を目指す場合が多く、ITと一体化したデジタルビジネスや顧客とのコミュニケーションが必要なサービスが中心となります。
●速い・俊敏
●低いコスト/価格
●便利で迅速なサポート
●高い満足
単一のアプリケーション毎にADCを振り分けているため 即時反映、運用状況の把握が可能になるのがこの構成です。
常に迅速な実装、インフラ確保、セキュリティ保護が
求められるビジネス形態であるならば
モード2(攻めのIT)への移行が必要不可欠です
攻めのITによって従来では時間がかかっていたフローが劇的に短縮
従来のフローにかかっていた約1ヶ月以上をまるまる短縮!
お互いにお互いの作業に専念できるようになることで、Win-winの状態を獲得することができます。
ダウンロード資料
DevOpsを加速 開発チームとインフラ運用チームの摩擦を解消
Win-Winになる方法とは?
ー--
https://www.acrovision.jp/career/?p=2133
2020年9月9日 / 最終更新日 : 2020年9月9日 akimoto
DevOpsエンジニアを目指すために必要なこととは?必要なスキル6つを解説
DevOpsエンジニアの仕事とは?
DevOps(デブオプス)とは、Development(開発)とOperations(運用)を掛け合わせた言葉です。
DevOpsエンジニアの仕事内容は、名前の語源になっている「開発チーム」と「運用チーム」が連携し開発スピードの向上やサービスの安定運用を実現するためのシステム運用からインフラの構築や改善など多岐に渡ります。
そのため、DevOpsエンジニアには幅広い知識と技術が求められます。
インフラ環境の構築と運用
DevOpsでは、従来エンジニアが手作業で行なっていたクラウド環境などのインフラ環境の構築や運用などの多くのタスクを自動化ツールなどを利用し行なっています。
また、DevOpsエンジニアは不具合が起きていなくても、全段階でテストを行いシステム全体への影響を確認しながらインフラ環境の構築と運用を行っています。
アプリケーションの改修
また、開発・運用の改善を目的としたアプリケーションの改修もDevOpsエンジニアの具体的な仕事内容の一つです。
インフラエンジニアとは違い、DevOpsエンジニアは何か不具合が生じた場合には自らアプリケーションの改修などの対応ができる必要があります。
DevOpsエンジニアの年収とは?
DevOpsエンジニアの年収はスキルや経験によりかなり幅がありますが、500万円〜1500万円といわれています。(2020年8月時点)クラウドサービスに精通し開発経験が豊富であればマネージャーとして働く場合には1000万円を超える年収になることも少なくありません。
また、Glassdoorが発表した2020年の職業ランキングで5位にランクインしておりアメリカでの評価も高く、年収の中央値は10万ドルを超える高水準です。
DevOpsエンジニアに必要なスキル6つ
サーバー管理やプログラミング、ネットワークからインフラコードなどかなり多くのスキルが求められるDevOpsエンジニアは、様々な分野に精通している必要があります。
ここではDevOpsエンジニアとして就職や転職するために必要なスキルとしておすすめのスキルを6つご紹介していきます。
DevOpsエンジニアに必要なスキル1:クラウドサービスの使用スキル
DevOpsエンジニアは構成管理ツールなどをクラウドサービスを使用することが多いので、クラウドサービスの使用スキルはDevOpsエンジニアにとって必須スキルです。
アカウント管理やセキュリティの仕組みはクラウドサービスごとに異なるため、多くのクラウドサービスの使用経験が求められます。
DevOpsエンジニアに必要なスキル2:ロードバランサーを使った負荷分散スキル
運用においてDevOpsエンジニアには、サーバーの負荷分散スキルが求められます。サーバーに負荷がかかった場合、ロードバランサーが基本的に使用されます。
そのため、ロードバランサーを使い、高い負荷を複数のサーバーに分散させて処理数を低減させシステムダウンや応答速度の遅延を防ぐスキルが必要となります。
DevOpsエンジニアに必要なスキル3:セキュリティスキル
ネットワークを使用する環境では、サーバー攻撃などに対するセキュリティが求められます。安定した環境下で業務を効率化するシステムに安全性の高いソフトウェアを組み込むことが重要となります。
またセキュリティの脆弱性を発見し、不正アクセスを未然に防ぐこともDevOpsエンジニアの重要な仕事の一つです。テストスキルを身につけることで、このようなシステムのセキュリティ問題の対策を取ることができます。
DevOpsエンジニアに必要なスキル4:ネットワーク設計のスキル
構成管理ツールなどを利用するためには、インフラ・ネットワークの知識が必要になります。サーバーは休むことなく常に稼働しているため、堅牢で安定したネットワーク設計が求められます。
ネットワーク機器を使用してクラウド上でネットワーク設計を行う場合もあるので、ネットワークエンジニアの経験や知識があると役立ちます。
DevOpsエンジニアに必要なスキル5:コミュニケーション能力
DevOpsエンジニアは組織全体の管理のような様々な分野の人と関わる仕事なので、コミュニケーション能力は必要不可欠な要素です。
開発チームと運営チームが連携して仕事を進めるというDevOpsの特徴上、一人のエンジニアが作業の全てを担うのではなく、チームで連携して作業をしていくことが前提となります。そのため、別分野の人とだけでなくエンジニア間でのコミュニケーション能力も求められます。
DevOpsエンジニアに必要なスキル6:最新のテクノロジーに関する知識
DevOpsの運用においては幅広い知識を必要とし、技術やツールの知識と理解が大変重要になります。
日々進歩し続けているIT業界の中で、DevOpsにおいても次々に進化するツールに合わせ、自らの知識も日々更新し続けていく必要があります。
一度覚えたツールでも1年もすると古くなっているということも珍しくなく、常に新しい知識を身につけていくという姿勢がDevOpsエンジニアとして働く上で大切です。
DevOpsエンジニアが覚えたい技術6つ
これまでお伝えしてきたように、DevOpsエンジニアは幅広い知識と技術が求められる仕事です。ここではDevOpsエンジニアが仕事で成功するために求められる技術の中でも、特に覚えておきたい技術を6つご紹介していきます。
より多くの技術を身につけるに越したことはありませんが、まずはこの6つの技術をDevOpsエンジニアを目指している方は身につけていきましょう。
DevOpsエンジニアが覚えたい技術1:継続的デリバリー
継続的デリバリーとは、継続的インテグレーションにリリースプロセスの自動化を追加したソフトウェア開発の手法の一つです。
継続的デリバリーは、継続的インテグレーションを拡張したもので、コード変更がビルド段階後のテストあるいは本番環境、またはその両方で稼働するようにします。
またシステムテストやUIテストまでが自動化される場合もあります。そのため、時間や手間を短縮することができ市場に適した修正を迅速に行うことができます。
DevOpsエンジニアが覚えたい技術2:バージョンコントロール
バージョンコントロールは、作業中ファイルに対して「いつ」「誰が」「どこを変更したのか」を記録します。それ上自動的にコードのビルドやテストを行う手法で、不具合などの問題点を検出することができます。
複数人のチームでコードを編集していて問題が起きた際、バージョン管理ツールを利用すれば変更履歴を追跡できるので簡単に前のバージョンへの回復をすることができます。不具合がない場合には、そのまま本番環境に反映されます。
DevOpsエンジニアが覚えたい技術3:継続的インテグレーション
継続的インテグレーションとは、小さな部分からコードを作成・保存し小さなサイクルでビルドとテストを自動的に繰り返しながら大きなシステムを完成させていく手法です。
頻繁にビルドとテストを行うことで、早期の不具合発見やソフトウェアの品質向上・リリースの時間短縮など無駄な時間を短縮できます。
一般的に継続的インテグレーションはContinuous Integrationを省略して「CI」と呼ばれています。
DevOpsエンジニアが覚えたい技術4:構成管理ツールの利用
構成管理ツールとは、高頻度なリリースを行うためにシステムやデータベース、開発ツールなどの構成を最新の望ましい状態に維持することを目的に利用されるツールです。
誤って古い情報をもとに開発をしてしまい不具合が発生するリスクを防ぐことができ、構築・テスト・運用などを自動化し効率化することで作業時間を短縮することができます。
DevOpsエンジニアが覚えたい技術5:コードを利用したインフラストラクチャ
コードを利用したインフラストラクチャとは、一度開発したコードを他でも使用することによって新規にシステム開発をする際の作成期間が短縮できる手法です。
この手法を使うことで、ゼロからコードを打ち込む必要がなく既存のコードを再利用していくため効率化を図ることができます。さらに、すでに稼働しているプログラムのコードであるため、ヒューマンエラーが発生しにくいというメリットがあります。
DevOpsエンジニアが覚えたい技術6:アジャイルソフトウェア開発
アジャイルソフトウェア開発とは、開発プロジェクトを要件や仕様の優先度に応じていくつも立ち上げ優先度の高いシステムから作り上げていく手法です。
この手法が主流になる以前は大規模なシステムの全体を計画的に作成していましたが、アジャイルソフトウェア開発ではエラーの発見からリリースまでを素早く行えます。
また、プロジェクトの途中で変更が生じた際も影響範囲を最小限に留めることができ柔軟に開発を進めることができます。
DevOpsエンジニアの将来性
ITインフラの技術の進化と共に、システムの複雑化やクラウドサービスなどへの移行により専門分野が増えてきています。
インフラと開発の橋渡しをするような役割をし、上手くまとめられるような人材は今後も必要とされるでしょう。そのため、DevOpsエンジニアの需要は今後も高まっていきます。
分散処理やコンテナの技術の需要が増えていく
分散処理やコンテナの技術が、負担を減らし大容量のデータをスムーズに扱う上では必要不可欠な技術になります。
最適な構成は目的や用途により様々なので、OSで使用するLinuxやJavaやPHPなどのプログラミング言語など多種多様なOSS(オープンソースソフトウェア)や最新のツールを熟知した人材の需要は高くなります。
DevOpsエンジニアと運用エンジニアの協調が広がる
ITインフラ技術の進歩に伴い、運用エンジニアの仕事も様変わりしています。
運用業務がソフトで実行できるようになり運用作業の自動化が増え、設定を手作業でするということは大幅に減ってきています。これにより開発と運用が一体となり、サービスの開発・運用が進められるようになりました。
DevOpsエンジニアになる方法3つ
これまで見てきた通り、DevOpsエンジニアなるには豊富で幅広い知識と技術が要求されます。そのため、未経験からDevOpsエンジニアになるのは大変難しいと言えます。
ここでは、DevOpsエンジニアを目指す際に身に付けておきたいおすすめの方法3つをご紹介していきます。
DevOpsエンジニアになる方法1:プログラミング言語を学ぶ
DevOpsエンジニアになるためには、プログラミングスキルがあることが必須条件です。
DevOpsで使用される適したプログラミング言語はJavaやRuby、Python、JavaSprictなどいくつかあります。プログラミング未経験の方はこの3言語のうち1言語は最低でも完璧に身につけておけば、DevOpsエンジニアを目指す上で強みになります。
DevOpsエンジニアになる方法2:インフラのコード化を覚える
従来システム開発において、インフラ構築は手動で行っていました。手動で変更を加えると手間が大変になりエラーが起こりやすくなります。この問題は、インフラをコード化することにより解決することができます。
インフラをコード化することで、システムにより自動で実行できるだけでなく人間にとっても開発状態がコードで読みやすいものとなります。結果的に生産性が向上しヒューマンエラーを減らすことにつながります。
DevOpsエンジニアになる方法3:ミドルウェアのセットアップ方法と役割を知る
ミドルウェアとは、OSとアプリケーションの中間に位置し、OSとアプリケーションの機能を補佐するソフトウェアのことです。
DevOpsエンジニアとして、セットアップされているミドルウェアを果たしている役割やサーバーに何がセットアップされているのか、セットアップの方法を理解することにより「自動化」について考えていくとができます。
一般的に、Webサーバーのセットアップ方法を把握しておく必要性があります。
DevOpsエンジニアを目指そう
クラウドやシステムの技術は、日々進歩しているITインフラの技術と共により複雑化してきていいます。
DevOpsエンジニアはスムーズなシステムやアプリケーション開発に欠かせない仕事です。DevOpsエンジニアとして成功していくことは簡単ではありませんが、これまでにご紹介してきたスキルや技術などを身につけDevOpsエンジニアを目指しましょう。
- カテゴリー
- エンジニア